Skocz do zawartości

STM32F4 Discovery + 1.54inch e-Paper Module


Rodzyn

Pomocna odpowiedź

Dzień dobry!

Mam problem, którego nie potrafię rozwiązać, internety nie pomagają. Mianowicie: chcę podłączyć wyświetlacz do płytki STM Discovery. I niby wszystko powinno być ok, jest przecież dokumentacja (https://www.waveshare.com/wiki/1.54inch_e-Paper_Module), ale właśnie... pobrałem program demo, ale kompletnie nie potrafię go odpalić. Nie ma mojej płytki do wyboru w Keilu (mimo pobrania jakichś paczek STM32F4), gdy wybiorę "download" to wyskakuje mi błąd "Cortex M3". Spróbowałem więc w jakiś sposób "przenieść" te demo do Eclipse, gdzie piszę właściwy program, ale niestety nie jestem w stanie go skompilować, mimo dodania praktycznie wszystkich plików z dema (dalej ma problem z rozpoznaniem chociażby "RCC_PLLSOURCE_HSE").

I tu pojawia się moja prośba - czy ktoś mógłby mnie naprowadzić, jak podłączyć ten wyświetlacz do płytki i w jaki sposób cokolwiek na nim wyświetlić? Oprócz porad przyjmę wszelakie odnośniki do źródeł w internecie.

Pozdrawiam

Link do komentarza
Share on other sites

Dzień dobry!

Mam problem, którego nie potrafię rozwiązać, internety nie pomagają. Mianowicie: chcę podłączyć wyświetlacz do płytki STM Discovery. I niby wszystko powinno być ok, jest przecież dokumentacja (https://www.waveshare.com/wiki/1.54inch_e-Paper_Module), ale właśnie... pobrałem program demo, ale kompletnie nie potrafię go odpalić. Nie ma mojej płytki do wyboru w Keilu (mimo pobrania jakichś paczek STM32F4), gdy wybiorę "download" to wyskakuje mi błąd "Cortex M3"

Pozdrawiam

Cześć,

STM32F4 są oparte o rdzeń ARM Cortex-M4 a nie Cortex-M3. podaj dokładny model swojej płytki i kod demo do wyświetlacza. Inaczej nikt nie będzie Ci w stanie pomóc.

Pozdrawiam

Link do komentarza
Share on other sites

Płytka to tak jak w temacie - STM32F4DISCOVERY. Całe demo znajduje się tutaj (https://www.waveshare.com/wiki/File:1.54inch_e-Paper_Module_code.7z), a to kod z maina:

/**
 ******************************************************************************
 * File Name          : main.c
 * Description        : Main program body
 ******************************************************************************
 ** This notice applies to any and all portions of this file
 * that are not between comment pairs USER CODE BEGIN and
 * USER CODE END. Other portions of this file, whether 
 * inserted by the user or by software development tools
 * are owned by their respective copyright owners.
 *
 * COPYRIGHT(c) 2017 STMicroelectronics
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *   1. Redistributions of source code must retain the above copyright notice,
 *      this list of conditions and the following disclaimer.
 *   2. Redistributions in binary form must reproduce the above copyright notice,
 *      this list of conditions and the following disclaimer in the documentation
 *      and/or other materials provided with the distribution.
 *   3. Neither the name of STMicroelectronics nor the names of its contributors
 *      may be used to endorse or promote products derived from this software
 *      without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 ******************************************************************************
 */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f1xx_hal.h"

/* USER CODE BEGIN Includes */
#include "epd1in54.h"
#include "epdif.h"
#include "epdpaint.h"
#include "imagedata.h"
#include <stdlib.h>
/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
SPI_HandleTypeDef hspi1;

UART_HandleTypeDef huart2;

/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
#define COLORED      0
#define UNCOLORED    1
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
static void MX_USART2_UART_Init(void);

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

int main(void)
{

 /* USER CODE BEGIN 1 */
 /* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */
 unsigned char* frame_buffer = (unsigned char*)malloc(EPD_WIDTH * EPD_HEIGHT / 8);
 char time_string[] = {'0', '0', ':', '0', '0', '\0'};
 unsigned long timeBITS_1;
 huart2.Init.Parity = UART_PARITY_NONE;
 huart2.Init.Mode = UART_MODE_TX_RX;
 huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
 huart2.Init.OverSampling = UART_OVERSAMPLING_16;
 if (HAL_UART_Init(&huart2) != HAL_OK)
 {
   _Error_Handler(__FILE__, __LINE__);
 }

}

/** Configure pins as 
       * Analog 
       * Input 
       * Output
       * EVENT_OUT
       * EXTI
*/
static void MX_GPIO_Init(void)
{

 GPIO_InitTypeDef GPIO_InitStruct;

 /* GPIO Ports Clock Enable */
 __HAL_RCC_GPIOD_CLK_ENABLE();
 __HAL_RCC_GPIOA_CLK_ENABLE();
 __HAL_RCC_GPIOC_CLK_ENABLE();
 __HAL_RCC_GPIOB_CLK_ENABLE();

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(DC_GPIO_Port, DC_Pin, GPIO_PIN_RESET);

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(RST_GPIO_Port, RST_Pin, GPIO_PIN_RESET);

 /*Configure GPIO pin Output Level */
 HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_RESET);

 /*Configure GPIO pin : DC_Pin */
 GPIO_InitStruct.Pin = DC_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(DC_GPIO_Port, &GPIO_InitStruct);

 /*Configure GPIO pin : BUSY_Pin */
 GPIO_InitStruct.Pin = BUSY_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 HAL_GPIO_Init(BUSY_GPIO_Port, &GPIO_InitStruct);

 /*Configure GPIO pin : RST_Pin */
 GPIO_InitStruct.Pin = RST_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(RST_GPIO_Port, &GPIO_InitStruct);

 /*Configure GPIO pin : SPI_CS_Pin */
 GPIO_InitStruct.Pin = SPI_CS_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 HAL_GPIO_Init(SPI_CS_GPIO_Port, &GPIO_InitStruct);

}

/* USER CODE BEGIN 4 */
#ifdef __GNUC__
 /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
    set to 'Yes') calls __io_putchar() */
 #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
 #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/**
 * @brief  Retargets the C library printf function to the USART.
 * @param  None
 * @retval None
 */
PUTCHAR_PROTOTYPE
{
 /* Place your implementation of fputc here */
 /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
 HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);

 return ch;
}
/* USER CODE END 4 */

/**
 * @brief  This function is executed in case of error occurrence.
 * @param  None
 * @retval None
 */
void _Error_Handler(char * file, int line)
{
 /* USER CODE BEGIN Error_Handler_Debug */
 /* User can add his own implementation to report the HAL error return state */
 while(1) 
 {
 }
 /* USER CODE END Error_Handler_Debug */ 
}

#ifdef USE_FULL_ASSERT

/**
  * @brief Reports the name of the source file and the source line number
  * where the assert_param error has occurred.
  * @param file: pointer to the source file name
  * @param line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t* file, uint32_t line)
{
 /* USER CODE BEGIN 6 */
 /* User can add his own implementation to report the file name and line number,
   ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
 /* USER CODE END 6 */

}

#endif

/**
 * @}
 */ 

/**
 * @}
*/ 

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Link do komentarza
Share on other sites

Rodzyn, płytek discovery z układami STM32F4 jest teraz więcej niż jedna - w ofercie Kamami doliczyłem się 6 różnych, może jest więcej. Więc samo stwierdzenie STM32F4DISCOVERY jest niezbyt precyzyjne.

Druga sprawa to kod który wkleiłeś - już pierwsza linijka włącza nagłówek biblioteki HAL dla układów STM32F1. To nie zadziała, musisz używać HAL dla F4, albo zmienić płytkę na F1.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Przepraszam, mój błąd. Płytka to STM32F407G.

Druga sprawa to kod który wkleiłeś - już pierwsza linijka włącza nagłówek biblioteki HAL dla układów STM32F1. To nie zadziała, musisz używać HAL dla F4, albo zmienić płytkę na F1.

Zostało mi powiedziane, że w dokumentacji wszystko jest. Rozumiem, że Keil w żaden sposób nie "przekonwertuje" mi tych bibliotek na odpowiednie dla mojej płytki?

Właśnie zacząłem szukać jakiegoś stm32f4xx_hal.h, ale jest tylko kod z githuba, nic co by przypominało jakąś oficjalną stronę producentów.

Pomijając to - ten konkretny problem jest akurat w chwili obecnej dość mało istotny, ponieważ na razie nie wiem, jak w ogóle mam się do tego zabrać.

Link do komentarza
Share on other sites

Wygląda na to, że kod przykładowy jest przygotowany na Arduino, Raspberry Pi oraz STM32F1 - jeśli chcesz mieć program na inne platformy to musisz go sam napisać. Nie powinno to być szczególnie trudne, wystarczy utworzyć nowy projekt dla STM32F4 z odpowiednią biblioteką HAL, uruchomić i przetestować SPI, a następnie dodać kod sterujący wyświetlaczem.

Link do komentarza
Share on other sites

Wygląda na to, że kod przykładowy jest przygotowany na Arduino, Raspberry Pi oraz STM32F1 - jeśli chcesz mieć program na inne platformy to musisz go sam napisać. Nie powinno to być szczególnie trudne, wystarczy utworzyć nowy projekt dla STM32F4 z odpowiednią biblioteką HAL, uruchomić i przetestować SPI, a następnie dodać kod sterujący wyświetlaczem.

Gdzie mogę znaleźć taką bibliotekę? Na stronach producentów nic nie widzę, a nie wiem czy kody wrzucane przez użytkowników będą działać.

Link do komentarza
Share on other sites

Wygląda na to, że kod przykładowy jest przygotowany na Arduino, Raspberry Pi oraz STM32F1 - jeśli chcesz mieć program na inne platformy to musisz go sam napisać. Nie powinno to być szczególnie trudne, wystarczy utworzyć nowy projekt dla STM32F4 z odpowiednią biblioteką HAL, uruchomić i przetestować SPI, a następnie dodać kod sterujący wyświetlaczem.

Gdzie mogę znaleźć taką bibliotekę? Na stronach producentów nic nie widzę, a nie wiem czy kody wrzucane przez użytkowników będą działać.

Cześć,

same biblioteki możesz "dociągnąć" Keil'em - Menu: Project -> Manage -> Pack Installer.

Gdy "Pack installer" się uruchomi z lewej strony otwierasz producenta (STMicroelectronics) i typ płytki. W oknie z prawej pobierasz konkretne biblioteki. Patrz obrazek:

Aby wygenerować kod konfiguracyjny dla twojej płytki w oparciu o HAL'a zainstaluj sobie "STM32CubeMX" (tam też trzeba pobrać biblioteki HAL dla określonego typu STM32Nucleo (np. F4). Patrz link:

http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/stm32f4discovery.html

Na tej stronie znajdziesz każdy software i dokumentacje do twojej płytki. Seria F1 do której masz kod różni się od serii F4 znacznie (CPU) więc musisz przykładowy kod przerobić pod 'swoją' płytkę - tak jak napisał Ci Elvis (lub poszukać kodu do tego wyświetlacza do twojego zestawu).

Pozdrawiam.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.