O documento introduz o microcontrolador STM32F767, descrevendo suas principais características como clock de 216MHz, 1MB de memória flash, 512KB de RAM, periféricos como ADC, CAN, criptografia, display TFT e suporte a áudio e vídeo.
6. STM32F767
Diferenciais:
● Pipeline de 6 estágios
● Cache de dados e instrução de 16kB
● Barramentos AXI (desacopla processador de periféricos ou memórias)
● Suporte a Quad-SPI (108MHz)
● Ponto flutuante de dupla precisão em hardware
● Clock de 216MHz
● Suporte a TFT LCD e HDMI-CEC
● Suporte a encoder/decoder de JPEG
● Acelerador gráfico 2D (Chrom-ART)
● UART síncrona de 27 Mbit/s
● Suporte áudio, vídeo e câmeras
7. Principais Periféricos do
STM32F767
● Conversor analógico digital (ADC)
● Controller Area Network (CAN)
● Criptografia (AES, DES, TDES, ECB,
CBC, CTR, CCM, GCM)
● Hash (SHA-1, SHA-224, SHA-256,
MD5)
● Random Number Generator (RNG)
● Conversor digital analógico (DAC)
● Digital Camera Interface (DCMI)
● ID único
● TFT LCT
● Codec JPEG
● Suporte avançado de áudio e vídeo
● HDMI-CEC
● Cyclic Redundancy Check (CRC)
● Barramento AXI-AHB
● Direct Memory Access (DMA)
● Ethernet (ETH)
● Flash
● GPIO
● I2C, I2S
● SPI (suporte a Quase-SPI)
● USART
● SD/SDIO/MMC
● USB (OTG, device)
● Controlador de memória externa
(NOR, NAND, SDRAM, SRAM,
FLASH)
● Acelerador gráfico 2D
● Acelerador de acesso a Flash
12. Clocks
● Clocks rápidos (High Speed, HSI/HSE, CPU)
– Oscilador RC interno de 16MHz
– Cristal/Oscilador externo de 4 a 26MHz
● Clocks lentos (Low Speed, LSI/LSE, RTC)
– Oscilador RC interno de 32kHz
– Cristal/Oscilador externo (0 a 1000kHz, tipicamente 32,768kHz)
13. Clock
● Inicialmente é usado o interno e depois a
aplicação pode mudar para o externo, se existir
um e for adequadamente configurado.
● Em caso de falha de clock, volta para o interno
● Existe uma PLL interna, configurável
● Certos dispositivos podem exigir um oscilador
dedicado como ethernet (25 MHz ou 50 MHz) e
USB (48 MHz ±0.25%)
● Existem PLLs adicionais no F767 para SAI
(Serial Audio Interface) e DSI (Display Serial
Interface)
14. Interno Externo
/M
PLL
/P
*N /Q
/R
HSEHSI
HSI
HSE AHB
PRESC
APBx
PRESC
AHB CLK (HCLK)
APB CLK
HS Clock Path
CRISTAL = 8MHz
M = 4 → PLL recebe 2 MHz
N = 216 e P = 2 → 216MHz
AHB PRESC = 1 → 216 MHz para HCLK
APB1 PRESC = 4 → 54MHz
APB2 PRESC = 2 → 108MHz
SYSTICK = 27MHz (*)
/8
SYSTICK
(*) Base de tempo do SYSTICK = HCLK/8:
HAL_Init() → HAL_InitTick(TICK_INT_PRIORITY) → HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000)
PLL
SYSCLOCK
17. Boot Modes
● O endereço de partida é programável através de bytes de opção
(option bytes).
● Existe um bootloader no controlador para atualização de firmware
● Pino BOOT0 decide se o boot é para código do usuário ou para o
bootloader
– 0: flash, via ITCM 0x00200000 (default), ou de acordo com o programado pelo
usuário (BOOT_ADDR0)
– 1: bootloader, no endereço 0x00100000 (default), ou de acordo com o
programado pelo usuário (BOOT_ADDR1)
● Ordem de procura de atualização do bootloader
● USART1, USART3, CAN2, I2C1, I2C2, ISC3, SPI1, SP2, SP4, USB
18. Interrupções no STM32F767
● 110 interrupções mascaráveis (16 em diante)
sendo 25 para linhas externas
● 16 níveis de prioridade (4 bits) dividido em
prioridade e sub-prioridade
● As 16 exceções do core, são tratadas à parte
19. Interrupções Externas no
STM32F767
● GPIOs podem ser configurados para gerar interrupções nas diferentes bordas
● O limite são 25 requisições de interrupção externas, através do EXTI (External
Interrupt/Event controller)
20. Interrupções Externas no
STM32F767
●
Mapeamento dos GPIOs em interrupções é feito da seguinte forma:
– 16 linhas (EXTI0 a EXTI15) que agrupam as entradas PAx a PKx
– EXTI16: PVD output
– EXTI17: RTC Alarm event
– EXTI18: USB OTG FS Wakeup event
– EXTI19: Ethernet Wakeup event
– EXTI20: USB OTG HS
– EXTI21: RTC Tamper and TimeStamp events
– EXTI22: RTC Wakeup event
– EXTI23: LPTIM1 event
– EXTI24: MDIO interrupt
Tratamento pode ou não
ser multiplexado:
EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler
EXTI9_5_IRQHandler
EXTI15_10_IRQHandler
21. 21
Exemplo de Projeto
STM32F030
Sistema mínimo com
Cortex M0 STM32F030F4x
● 48 MHz
● 16kB Flash
● 8kB RAM
● Cristal interno
● ADC de 12 bits
● DMA
● Timers, UART, SPI, I2C,
● CRC
● -40 to 125 °C
● TSSOP 20, pitch 0,65mm
● $1,36@1 $0,9@100
22. 22
Exemplo de Projeto
STM32L052
Sistema mínimo com
Cortex M0+ STM32L052K8T6
● 32 MHz
● 64kB Flash
● 8kB RAM
● 2kB E2P
● 2,49 CoreMips/MHz
● Cristal interno
● USB 2.0 sem passivos
● 88uA/MHz de consumo
● ADC de 12 bits
● DMA
● Timers, UART, SPI, I2C,
● CRC, RNG,
● -40 to 125 °C
● LQFP 32, pitch 0,8mm
● ID de 96 bits
● Ampla capacidade de depuração
● $3,62@1 $2,67@100
Depende um pouco do fabricante. Em geral, não !
23. 23
Exemplo de Projeto
STM32L433
Sistema mínimo com
Cortex M4F STM32L433RC
● 80 MHz
● 256kB Flash
● 64kB RAM
● 3.42 CoreMark/MHz
● ADC de 12 bits
● DMA, Timers, UART, SPI, I2C,
● CRC, ...
● -40 to 125 °C
● TQFP de 64, pitch 0,5mm
● $6,24@1 $4,60@100
24. 24
Exemplo de Projeto
STM32F767
● Similar ao projeto anterior, exceto
em:
– Fontes:
●
Além do ADC, SD e USB podem ter
fontes separadas
●
O VDD do processador/IO pode
ficar totalmente independente, de
1V8 a 3V6
– Layout:
●
Recomendado quatro layers
mínimo (LQFP)
● 216 MHz
● 1MB Flash
● 512kB RAM
● 5,01 CoreMark/MHz
● ADC de 12 bits
● DMA, Timers, UART, SPI, I2C,
● CRC, SD, TFT, CAN ...
● -40 to 125 °C
● LQFP de 144, pitch 0,5mm
● $15,98@1 $12,41@100