STM32F407 SPI线的选择

前言

STM32F407的内建设备的管脚,一般都有多套。
如果想充分利用片上资源, 就可能遇到要调整内建设备管脚的情况。

这次正好要调整板子, 为了上外部内存, 换了STM34F407ZGT6.

将STM32F407VGT6的管脚定义挪过来时,本来想将SPI版的SD卡操作换成SDIO的操作. 发现不行,因为串口都用满了,不能为了更稳定快速的操作SD卡,就将串口砍掉(因为SDIO用的是一套固定的管脚,从PC6~PC15 + PB8~PB9, 那就要将串口4,5,6都砍掉,那老大要砍我了)。

以前的SPI管脚定义是同事选的,我也尝试选选,看看SPI怎么选最合适。有2个SPI存储,都接在SPI上,因为可能存在互相拷贝的情况,那最好不要用一套SPI线+不同的片选。

试验

MCU = STM32F407ZGT6

为了走等长线, 尽量将SPIX_SCK, SPIX_MISO, SPIX_MOSI 选在相邻的管脚上
如果3条线无法在一起,也要将SPIX_MISO, SPIX_MOSI选在相邻的管脚上
不用换硬件片选, 省了SPIX_NSS

在STM32F407中:
* UART和SPI都有2套管脚可选
* SDIO, FSMC就只能是一套固定的管脚

硬件资源占用情况
* PB3 被SWO用了
* PA7 被RMII_CRS_DV用了
* PB13 被RMII_TXD1用了

// SPI1_NSS = PA4 PA15
SPI1_SCK = PA5 PB3
SPI1_MISO = PA6 PB4
SPI1_MOSI = PA7 PB5

* SPI1选择1 = PA5(SPI1_SCK), PB4(SPI1_MISO), PB5(SPI1_MOSI)
就这一个选择, 只能用SPI1选择1

// SPI2_NSS = PB12 PB9
SPI2_SCK = PB13 PB10
SPI2_MISO = PB14 PC2
SPI2_MOSI = PB15 PC3

* SPI2选择1 = PB10(SPI2_SCK), PB14(SPI1_MISO), PB15(SPI1_MOSI)
* SPI2选择2 = PB10(SPI2_SCK), PC2(SPI1_MISO), PC3(SPI1_MOSI)
可以看出SPI2选择1有力于走等长线,所以选SPI2选择1

// SPI3_NSS = PA4 PA15
SPI3_SCK = PC10 PB3
SPI3_MISO = PC11 PB4
SPI3_MOSI = PC12 PB5

* 到这,因为PB3, PB4, PB5, 被SWO 和 SPI1用掉了,就只能从PC10, PC11, PC12中选。
如果这3条线也被用掉了,就无法再用SPI3

PC10,PC11被串口4用掉了.
PC12被串口5用掉了。

看看串口4,串口5是否可以用备用引脚.

USART1_TX = PA9 PB6
USART1_RX = PA10 PB7

USART2_TX = PD5 PA2
USART2_RX = PD6 PA3

// 串口3有3套管脚可用
USART3_TX = PB10 PC10 PD8
USART3_RX = PB11 PC11 PD9

UART4_TX = PA0 PC10
UART4_RX = PA1 PC11

// 串口5只有1套管脚可用
UART5_TX = PC12
UART5_RX = PD2

USART6_TX = PC6 PG14
USART6_RX = PC7 PG9

PA0被硬件接口管脚PA0用掉了,PA1被RMII_REF_CLK用掉了, 所以串口4只能用PC10, PC11
串口5只有一套管脚(PC12, PD2)可用,也没办法挪了
所以SPI3就没办法用了


发布了436 篇原创文章 · 获赞 126 · 访问量 175万+

猜你喜欢

转载自blog.csdn.net/LostSpeed/article/details/103451320