Skip to content

Latest commit

 

History

History

1-HOWTO

Piu' sotto, al termine della lingua inglese trovi il testo in italiano. Below English text you'll find the Italian version



HOW TO setup a project with this software

CubeMX setup

  • create a new project on STM32CubeIDE
  • enable an SPI port.

SPI configuration is:

Mode Value
mode Half-Duplex Master
NSS Hardware NSS Output Signal
(as per ST7735 datasheet) Baud Rate <= 15 MBit/s
Parameter Value
Frame format Motorola
Data size 8 bit
First bit MSB first
CPOL low
CPHA 1 Edge
CRC calculation disabled
NSS type Output Hw

If you use SPI in "polling mode", do not enable Interrupt and DMA and not consider the below table: go over
If you use SPI in "interrupt mode", do not enable DMA and consider only the NVIC information in the below table
If you use SPI in "DMA mode", enable both Interrupt and DMA following the below table

SPI config label Value
DMA settings enable only TX DMA
NVIC settings enable SPI global interrupt

  • assign these names to SPI pins:
SPI pin Pinname to assign Speed relevance
NSS DISPL_CS X
MOSI DISPL_MOSI X
SCK DISPL_SCK X

"Speed relevance" (here above and below):
"X" means that pin speed affects the defined SPI boudrate handling: rise (step by step from LOW to VERY HIGH) pins speed if you see uC cannot handle the defined communication speed (more information on your uC datasheet).
As per GPIO software guidelines, STM suggests keeping the lower GPIO speed allowing your project handling, reducing power consumption and EMI.

  • Enable 3 more pins as GPIO_Output:
Pinname to assign Output level Speed relevance Mode Pull-up/down
DISPL_LED low - see here No pull-up/down
DISPL_DC - X Output push pull No pull-up/down
DISPL_RST low - Output push pull No pull-up/down

Source and header files

  • Copy the .c files into the /Core/Src folder in your STM32CubeIDE project
  • Copy the .h files into the /Core/Inc folder in your STM32CubeIDE project
  • into the /Core/Inc folder, open the main.h file and add an include directive for every .h file copied. In this order:

(main.h)
...
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "fonts.h"
#include "z_displ_ST7735.h"
#include "z_displ_ST7735_test.h"
/* USER CODE END Includes */
...

PLEASE NOTE: in a "TouchGFX" project, you need only "z_displ_ST7735.h" and "z_displ_ST7735.c"
In a "Direct handling" project, you need "z_displ_ST7735_test" files (.c and .h) only if you want to use graphics test/demo functions. You don't need to add them in the production project.


Next steps




HOW TO: come configurare un progetto con questo software


Configurazione CubeMX

  • crea un nuovo progetto su STM32CubeIDE
  • attiva una porta SPI con questa configurazione:
Parametro Valore
mode Half-Duplex Master
NSS Hardware NSS Output Signal
(come da datasheet del driver ST7735) Baud Rate <= 15 MBit/s
Parametro Valore
Frame format Motorola
Data size 8 bit
First bit MSB first
CPOL low
CPHA Edge
CRC calculation disabled
NSS type Output Hw

Se usi SPI in "polling mode" non attivare Interrupt e DMA sulla SPI e non considerare la tabella sotto: procedi oltre
Se usi SPI in "interrupt mode" non attivare DMA e considera solo NVIC settings nella tabella sotto
Se usi SPI in "DMA mode" abilita sia Interrupt sia DMA e segui la tabella sotto

Etichetta SPI Valore
DMA settings attiva solo TX DMA
NVIC settings attiva SPI global interrupt
  • assegnare questi nomi ai pin SPI:
Pin SPI Nome da assegnare Rilevanza velocità
NSS DISPL_CS X
MOSI DISPL_MOSI X
SCK DISPL_SCK X

"Rilevanza velocità" (qui sopra e sotto): "X" significa che la velocità del pin ha effetti sulla velocità della porta SPI: aumenta (per gradi da LOW to VERY HIGH) la velocità dei pin se vedi che il uC non riesce a gestire la velocità di comunicazione assegnata (maggiori informazioni sul datasheet del tuo uC).
Come indicato in "GPIO software guidelines", STM suggerisce di mantenere la minore velocità GPIO che permette la gestione del tuo progetto, ciò per ridurre consumi ed EMI.

  • attivare altri 3 pin come GPIO_Output:
Nome da assegnare Output level Rilevanza velocità Mode Pull-up/down
DISPL_LED low - see here No pull-up/down
DISPL_DC - X Output push pull No pull-up/down
DISPL_RST low - Output push pull No pull-up/down

File sorgente e di testata

  • Copia i file .c nella cartella /Core/Src del progetto STM32CubeIDE
  • Copia i file .h nella cartella /Core/Inc del progetto STM32CubeIDE
  • Nella cartella /Core/Inc, apri il file main.h e aggiungi la direttiva include (nella sezione "USER CODE BEGIN Includes") per ogni file .h copiato, seguendo questo ordine:

(main.h)
...
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "fonts.h"
#include "z_displ_ST7735.h"
#include "z_displ_ST7735_test.h"
/* USER CODE END Includes */
...

NOTA BENE: In un progetto "TouchGFX" ti servono solo "z_displ_ST7735.h" and "z_displ_ST7735.c"
In un progetto "a gestione diretta", i file "z_displ_ST7735_test" (.c e .h) devono essere copiati nel progetto solo se vuoi usare le funzioni di demo e test. Non occorrono questi file nella versione definitiva del progetto.

Prossimi passi