久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 關于STM32的SPI端口設置問題

關于STM32的SPI端口設置問題

作者: 時間:2016-11-10 來源:網絡 收藏
在復用SPI總線時,必須先設置總線端口。讀取其他ARM芯片(如NXP)一般很容易看出芯片的設置是否正確。不過對于STM32就容易讓人迷惑了。例如,我們在使用SPI總線進行通信時,可以這樣設置:

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; // 復用的推挽輸出

本文引用地址:http://cqxgywz.com/article/201611/317391.htm

恐怕大家對MISO端口的設置就會產生疑惑了,MISO不是應該設置成為輸入端口(GPIO_Mode_IN_FLOATING)才行的嗎?

答題是肯定的,對于STM32的這一類管腳來說(如USART_RX)即可以設置成為輸入模式,也可以設置成為復用的推挽輸出。其工作都是正常的,不過建議大家還是設置成為輸入端口的好,容易理解。

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



評論


技術專區

關閉