1. 程式人生 > >[轉]關於stm32硬件spi的miso口配置

[轉]關於stm32硬件spi的miso口配置

而不是 控制 info com tin 上拉 ima 疑惑 bubuko

在我們剛使用spi時,對於spi的io口配置可能會有一些疑惑吧,miso明明是一個輸入口卻配置成了復用推挽輸出,是不是會有一點疑惑呢?

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 復用的推挽輸出

MISO不是應該設置成為輸入端口(GPIO_Mode_IN_FLOATING)才行的嗎?是不是很疑惑呢?

其實配置為復用推挽輸出也是可以正常工作的,只不過配置成浮空輸入和上拉輸入更容易理解。

具體產生這一問題的原因是:從功能上來說,MISO應該配置為輸入模式才對,但為什麽也可以配置為GPIO_Mode_AF_PP?實際上當一個GPIO端口配置為GPIO_Mode_AF_PP時,片上外設的復用功能輸出信號會連接到輸出控制電路,然後在端口上產生輸出信號。但是在芯片內部,MISO是SPI模塊的輸入引腳,而不是輸出引腳,也就是說“復用功能輸出信號"根本不存在,所以"輸出控制電路"就不能對外部產生輸出信號,然而即使在復用推挽輸出模式下,復用功能輸入信號卻與外部引腳之間相互連接,既MISO得到了外部信號的電平,實現了輸入的功能。

技術分享圖片

[轉]關於stm32硬件spi的miso口配置