Программирование ARM STM32F407, назначение альтернативных функций выводам GPIO Sat, March 25 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

STM32F407, назначение альтернативных функций выводам GPIO Печать
Добавил(а) microsin   

У микроконтроллера семейства STM32F40x есть 16-битные порты GPIO, которые носят имя GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH, GPIOI, у некоторых даже есть GPIOJ и GPIOK (на самом деле все порты GPIO представляются в адресном пространстве как 32-битные регистры, но у них старшие 16 бит зарезервированы и не используются). У каждого такого порта 16 ножек. В зависимости от типа используемого корпуса (LQFP100, LQFP144 и т. п.) некоторые порты могут отсутствовать. Например, у микроконтроллера STM32F407ZGT6 в корпусе LQFP144 отсутствуют порты GPIOH/I/J/K. В даташите буквы A..I/J/K заменяют символом x, когда обобщенно говорят о всех регистрах GPIO: GPIOx означает все порты GPIO от GPIOA до GPIOI.

Каждой ножке порта любого порта A..K можно присвоить любую из 16 альтернативных функций от AF0 до AF15. Альтернативная функция - это привязка ножки к какому-либо периферийному устройству микроконтроллера, например к порту SPI, USART, USB и т. д. Назначение альтернативной функции каждому выводу делается с помощью регистров GPIOx_AFRH и GPIOx_AFRL. Эти регистры 32-битные, и все их биты поделены на четверки бит, каждая четверка соответствует отдельной ножке порта GPIOx. Регистр GPIOx_AFRH отвечает за ножки с номерами бит от 15 до 8, а регистр GPIOx_AFRL отвечает за ножки с номерами бит от 7 до 0. Каждая альтернативная функция имеет двоичный номер от 0 до 15 (от AF0=0 до AF15=15), именно этот 4-битный номер записывается в четверку бит регистров GPIOx_AFRH и GPIOx_AFRL, определяя этим функционирование ножки порта.

Регистр назначает альтернативную функцию ножкам портов с номерами бит от 7 до 0. Например, четверка бит AFRL2 в регистре GPIOB_AFRL назначит ножке 2 порта GPIOB (т. е. PB2) любую альтернативную функцию от AF1=0 до AF15=15. Смещение адреса для GPIOx_AFRL равно 0x20, значение после сброса 0x00000000 (после сброса все ножки портов выполняют альтернативную функцию AF0).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
AFRL7[3:0] AFRL6[3:0] AFRL5[3:0] AFRL4[3:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AFRL3[3:0] AFRL2[3:0] AFRL1[3:0] AFRL0[3:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Регистр назначает альтернативную функцию ножкам портов с номерами бит от 15 до 8. Например, четверка бит AFRH13 в регистре GPIOA_AFRH назначит ножке 13 порта GPIOA (т. е. PA13) любую альтернативную функцию от AF1=0 до AF15=15. Смещение адреса для GPIOx_AFRH равно 0x24, значение после сброса 0x00000000 (после сброса все ножки портов выполняют альтернативную функцию AF0).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
AFRH15[3:0] AFRH14[3:0] AFRH13[3:0] AFRH12[3:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AFRH11[3:0] AFRH10[3:0] AFRH9[3:0] AFRH8[3:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

[Таблицы альтернативных функций портов микроконтроллеров STM32F405xx, STM32F407xx]

По умолчанию (после сброса) все ножки портов GPIOx настроены на альтернативную функцию AF0. Таблицу всех альтернативных функций можно найти в даташите на микроконтроллер, она называется Alternate function mapping.

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C1..3 SPI1/SPI2/
I2S2/I2S2ext
SPI3/I2Sext/
I2S3
USART1..3/
I2S3ext
PA0 TIM2_CH1_E
TR
TIM5_CH1 TIM8_ETR USART2_CTS
PA1 TIM2_CH2 TIM5_CH2 USART2_RTS
PA2 TIM2_CH3 TIM5_CH3 TIM9_CH1 USART2_TX
PA3 TIM2_CH4 TIM5_CH4 TIM9_CH2 USART2_RX
PA4 SPI1_NSS SPI3_NSS
I2S3_WS
USART2_CK
PA5 TIM2_CH1_ETR TIM8_CH1N SPI1_SCK
PA6 TIM1_BKIN TIM3_CH1 TIM8_BKIN SPI1_MISO
PA7 TIM1_CH1N TIM3_CH2 TIM8_CH1N SPI1_MOSI
PA8 MCO1 TIM1_CH1 I2C3_SCL USART1_CK
PA9 TIM1_CH2 I2C3_SMBA USART1_TX
PA10 TIM1_CH3 USART1_RX
PA11 TIM1_CH4 USART1_CTS
PA12 TIM1_ETR USART1_RTS
PA13 JTMS-SWDIO
PA14 JTCK-SWCLK
PA15 JTDI TIM2_CH1
TIM2_ETR
SPI1_NSS SPI3_NSS/
I2S3_WS

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15
UART4/5/
USART6
CAN1/2/
TIM12..14
OTG_FS/
OTG_HS
ETH FSMC/SDIO/
OTG_FS
DCMI
PA0 UART4_TX ETH_MII_CRS EVENTOUT
PA1 UART4_RX ETH_MII_RX_CLK
ETH_RMII__REF_CLK
EVENTOUT
PA2 ETH_MDIO EVENTOUT
PA3 OTG_HS_ULPI_D0 ETH _MII_COL EVENTOUT
PA4 OTG_HS_SOF DCMI_HSYNC EVENTOUT
PA5 OTG_HS_ULPI_CK EVENTOUT
PA6 TIM13_CH1 DCMI_PIXCK EVENTOUT
PA7 TIM14_CH1 ETH_MII _RX_DV
ETH_RMII_CRS_DV
EVENTOUT
PA8 OTG_FS_SOF EVENTOUT
PA9 DCMI_D0 EVENTOUT
PA10 OTG_FS_ID DCMI_D1 EVENTOUT
PA11 CAN1_RX OTG_FS_DM EVENTOUT
PA12 CAN1_TX OTG_FS_DP EVENTOUT
PA13 EVENTOUT
PA14 EVENTOUT
PA15 EVENTOUT

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C1..3 SPI1/SPI2/
I2S2/I2S2ext
SPI3/I2Sext/
I2S3
USART1..3/
I2S3ext
PB0 TIM1_CH2N TIM3_CH3 TIM8_CH2N
PB1 TIM1_CH3N TIM3_CH4 TIM8_CH3N
PB2
PB3 JTDO/
TRACESWO
TIM2_CH2 SPI1_SCK SPI3_SCK
I2S3_CK
PB4 NJTRST TIM3_CH1 SPI1_MISO SPI3_MISO I2S3ext_SD
PB5 TIM3_CH2 I2C1_SMBA SPI1_MOSI SPI3_MOSI
I2S3_SD
PB6 TIM4_CH1 I2C1_SCL USART1_TX
PB7 TIM4_CH2 I2C1_SDA USART1_RX
PB8 TIM4_CH3 TIM10_CH1 I2C1_SCL
PB9 TIM4_CH4 TIM11_CH1 I2C1_SDA SPI2_NSS
I2S2_WS
PB10 TIM2_CH3 I2C2_SCL SPI2_SCK
I2S2_CK
USART3_TX
PB11 TIM2_CH4 I2C2_SDA USART3_RX
PB12 TIM1_BKIN I2C2_SMBA SPI2_NSS
I2S2_WS
USART3_CK
PB13 TIM1_CH1N SPI2_SCK
I2S2_CK
USART3_CTS
PB14 TIM1_CH2N TIM8_CH2N SPI2_MISO I2S2ext_SD USART3_RTS
PB15 RTC_REFIN TIM1_CH3N TIM8_CH3N SPI2_MOSI
I2S2_SD

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15
UART4/5/
USART6
CAN1/CAN2/
TIM12..14
OTG_FS/OTG_HS ETH FSMC/SDIO/
OTG_FS
DCMI
PB0 OTG_HS_ULPI_D1 ETH_MII_RXD2 EVENTOUT
PB1 OTG_HS_ULPI_D2 ETH_MII_RXD3 EVENTOUT
PB2 EVENTOUT
PB3 EVENTOUT
PB4 EVENTOUT
PB5 CAN2_RX OTG_HS_ULPI_D7 ETH_PPS_OUT DCMI_D10 EVENTOUT
PB6 CAN2_TX DCMI_D5 EVENTOUT
PB7 FSMC_NL DCMI_VSYNC EVENTOUT
PB8 CAN1_RX ETH_MII_TXD3 SDIO_D4 DCMI_D6 EVENTOUT
PB9 CAN1_TX SDIO_D5 DCMI_D7 EVENTOUT
PB10 OTG_HS_ULPI_D3 ETH_MII_RX_ER EVENTOUT
PB11 OTG_HS_ULPI_D4 ETH_MII_TX_EN
ETH_RMII_TX_EN
EVENTOUT
PB12 CAN2_RX OTG_HS_ULPI_D5 ETH_MII_TXD0
ETH_RMII_TXD0
OTG_HS_ID EVENTOUT
PB13 CAN2_TX OTG_HS_ULPI_D6 ETH_MII_TXD1
ETH_RMII_TXD1
EVENTOUT
PB14 TIM12_CH1 OTG_HS_DM EVENTOUT
PB15 TIM12_CH2 OTG_HS_DP EVENTOUT

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C1..3 SPI1/SPI2/
I2S2/I2S2ext
SPI3/I2Sext/
I2S3
USART1..3/
I2S3ext
PC0
PC1
PC2 SPI2_MISO I2S2ext_SD
PC3 SPI2_MOSI
I2S2_SD
PC4
PC5
PC6 TIM3_CH1 TIM8_CH1 I2S2_MCK
PC7 TIM3_CH2 TIM8_CH2 I2S3_MCK
PC8 TIM3_CH3 TIM8_CH3
PC9 TIM3_CH4 TIM8_CH4 I2C3_SDA I2S_CKIN
PC10 SPI3_SCK
I2S3_CK
USART3_TX
PC11 I2S3ext_SD SPI3_MISO USART3_RX
PC12 SPI3_MOSI
I2S3_SD
USART3_CK
PC13
PC14
PC15

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15
UART4/5/
USART6
CAN1/CAN2/
TIM12..14
OTG_FS/
OTG_HS
ETH FSMC/SDIO/
OTG_FS
DCMI
PC0 OTG_HS_ULPI_STP EVENTOUT
PC1 ETH_MDC EVENTOUT
PC2 OTG_HS_ULPI_DIR ETH_MII_TXD2 EVENTOUT
PC3 ETH_MII_TX_CLK EVENTOUT
PC4 ETH_MII_RXD0
ETH_RMII_RXD0
EVENTOUT
PC5 ETH_MII_RXD1
ETH_RMII_RXD1
EVENTOUT
PC6 USART6_TX SDIO_D6 DCMI_D0 EVENTOUT
PC7 USART6_RX SDIO_D7 DCMI_D1 EVENTOUT
PC8 USART6_CK SDIO_D0 DCMI_D2 EVENTOUT
PC9 SDIO_D1 DCMI_D3 EVENTOUT
PC10 UART4_TX SDIO_D2 DCMI_D8 EVENTOUT
PC11 UART4_RX SDIO_D3 DCMI_D4 EVENTOUT
PC12 UART5_TX SDIO_CK DCMI_D9 EVENTOUT
PC13 EVENTOUT
PC14 EVENTOUT
PC15 EVENTOUT

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C1..3 SPI1/SPI2/
I2S2/I2S2ext
SPI3/I2Sext/
I2S3
USART1..3/
I2S3ext
PD0
PD1
PD2 TIM3_ETR
PD3 USART2_CTS
PD4 USART2_RTS
PD5 USART2_TX
PD6 USART2_RX
PD7 USART2_CK
PD8 USART3_TX
PD9 USART3_RX
PD10 USART3_CK
PD11 USART3_CTS
PD12 TIM4_CH1 USART3_RTS
PD13 TIM4_CH2
PD14 TIM4_CH3
PD15 TIM4_CH4

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15
UART4/5/
USART6
CAN1/2/
TIM12..14
OTG_FS/
OTG_HS
ETH FSMC/SDIO/
OTG_FS
DCMI
PD0 CAN1_RX FSMC_D2 EVENTOUT
PD1 CAN1_TX FSMC_D3 EVENTOUT
PD2 UART5_RX SDIO_CMD DCMI_D11 EVENTOUT
PD3 FSMC_CLK EVENTOUT
PD4 FSMC_NOE EVENTOUT
PD5 FSMC_NWE EVENTOUT
PD6 FSMC_NWAIT EVENTOUT
PD7 FSMC_NE1
FSMC_NCE2
EVENTOUT
PD8 FSMC_D13 EVENTOUT
PD9 FSMC_D14 EVENTOUT
PD10 FSMC_D15 EVENTOUT
PD11 FSMC_A16 EVENTOUT
PD12 FSMC_A17 EVENTOUT
PD13 FSMC_A18 EVENTOUT
PD14 FSMC_D0 EVENTOUT
PD15 FSMC_D1 EVENTOUT

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C1..3 SPI1/SPI2/
I2S2/I2S2ext
SPI3/I2Sext/
I2S3
USART1..3/
I2S3ext
PE0 TIM4_ETR
PE1
PE2 TRACECLK
PE3 TRACED0
PE4 TRACED1
PE5 TRACED2 TIM9_CH1
PE6 TRACED3 TIM9_CH2
PE7 TIM1_ETR
PE8 TIM1_CH1N
PE9 TIM1_CH1
PE10 TIM1_CH2N
PE11 TIM1_CH2
PE12 TIM1_CH3N
PE13 TIM1_CH3
PE14 TIM1_CH4
PE15 TIM1_BKIN

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15
UART4/5/
USART6
CAN1/2/
TIM12..14
OTG_FS/
OTG_HS
ETH FSMC/SDIO/
OTG_FS
DCMI
PE0 FSMC_NBL0 DCMI_D2 EVENTOUT
PE1 FSMC_NBL1 DCMI_D3 EVENTOUT
PE2 ETH_MII_TXD3 FSMC_A23 EVENTOUT
PE3 FSMC_A19 EVENTOUT
PE4 FSMC_A20 DCMI_D4 EVENTOUT
PE5 FSMC_A21 DCMI_D6 EVENTOUT
PE6 FSMC_A22 DCMI_D7 EVENTOUT
PE7 FSMC_D4 EVENTOUT
PE8 FSMC_D5 EVENTOUT
PE9 FSMC_D6 EVENTOUT
PE10 FSMC_D7 EVENTOUT
PE11 FSMC_D8 EVENTOUT
PE12 FSMC_D9 EVENTOUT
PE13 FSMC_D10 EVENTOUT
PE14 FSMC_D11 EVENTOUT
PE15 FSMC_D12 EVENTOUT

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C1..3 SPI1/SPI2/
I2S2/I2S2ext
SPI3/I2Sext/
I2S3
USART1..3/
I2S3ext
PF0 I2C2_SDA
PF1 I2C2_SCL
PF2 I2C2_SMBA
PF3
PF4
PF5
PF6 TIM10_CH1
PF7 TIM11_CH1
PF8
PF9
PF10
PF11
PF12
PF13
PF14
PF15

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15
UART4/5/
USART6
CAN1/2/
TIM12..14
OTG_FS/
OTG_HS
ETH FSMC/SDIO/
OTG_FS
DCMI
PF0 FSMC_A0 EVENTOUT
PF1 FSMC_A1 EVENTOUT
PF2 FSMC_A2 EVENTOUT
PF3 FSMC_A3 EVENTOUT
PF4 FSMC_A4 EVENTOUT
PF5 FSMC_A5 EVENTOUT
PF6 FSMC_NIORD EVENTOUT
PF7 FSMC_NREG EVENTOUT
PF8 TIM13_CH1 FSMC_NIOWR EVENTOUT
PF9 TIM14_CH1 FSMC_CD EVENTOUT
PF10 FSMC_INTR EVENTOUT
PF11 DCMI_D12 EVENTOUT
PF12 FSMC_A6 EVENTOUT
PF13 FSMC_A7 EVENTOUT
PF14 FSMC_A8 EVENTOUT
PF15 FSMC_A9 EVENTOUT

Порт AF0 AF1 AF2 AF3 AF4 AF5 AF6 AF7
SYS TIM1/2 TIM3..5 TIM8..11 I2C1..3 SPI1/SPI2/
I2S2/I2S2ext
SPI3/I2Sext/
I2S3
USART1..3/
I2S3ext
PG0
PG1
PG2
PG3
PG4
PG5
PG6
PG7
PG8
PG9
PG10
PG11
PG12
PG13
PG14
PG15

Порт AF8 AF9 AF10 AF11 AF12 AF13 AF14 AF15
UART4/5/
USART6
CAN1/2/
TIM12..14
OTG_FS/
OTG_HS
ETH FSMC/SDIO/
OTG_FS
DCMI
PG0 FSMC_A10 EVENTOUT
PG1 FSMC_A11 EVENTOUT
PG2 FSMC_A12 EVENTOUT
PG3 FSMC_A13 EVENTOUT
PG4 FSMC_A14 EVENTOUT
PG5 FSMC_A15 EVENTOUT
PG6 FSMC_INT2 EVENTOUT
PG7 USART6_CK FSMC_INT3 EVENTOUT
PG8 USART6_RTS ETH_PPS_OUT EVENTOUT
PG9 USART6_RX FSMC_NE2
FSMC_NCE3
EVENTOUT
PG10 FSMC_NCE4_1
FSMC_NE3
EVENTOUT
PG11 ETH_MII_TX_EN
ETH_RMII_TX_EN
FSMC_NCE4_2 EVENTOUT
PG12 UART6_RTS FSMC_NE4 EVENTOUT
PG13 UART6_CTS ETH_MII_TXD0
ETH_RMII_TXD0
FSMC_A24 EVENTOUT
PG14 USART6_TX ETH_MII_TXD1
ETH_RMII_TXD1
FSMC_A25 EVENTOUT
PG15 USART6_CTS DCMI_D13 EVENTOUT

 

Добавить комментарий


Защитный код
Обновить

Top of Page