|
在spi通信過程中有如下時序(不能復(fù)制圖片,所以為附件1)
2.png (417.21 KB, 下載次數(shù): 60)
下載附件
時序
2016-9-30 10:24 上傳
按照標(biāo)準(zhǔn)的SPI協(xié)議,當(dāng)SPI被配置為主機模式后,通過SPI對從設(shè)備進(jìn)行操作時,其NSS應(yīng)該自動置低,從而選中(使能)從設(shè)備;一旦不對從設(shè)備進(jìn)行操作,NSS立刻置為高。
但是,我在實際調(diào)試過程中卻發(fā)現(xiàn):STM32 SPI NSS無法自動實現(xiàn)跳變。 一旦SPI初始化完成并使能SPI,NSS立刻置低,然后保持不變。
這個問題一直無法解決,直到我在ST官方論壇上看到國外有些技術(shù)人員也在討論這個問題,他們得出的結(jié)論是:STM32 SPI NSS無法自動跳變。
對于這個問題,可以采用下面的方法解決:
在SPI初始化時,采用NSS soft模式,然后使能NSS輸出功能。從而將NSS當(dāng)做GPIO使用,通過軟件set和reset來實現(xiàn)NSS的置位和復(fù)位。
檢測NSS可以實現(xiàn)的是自身主機和從機模式的切換,而不是大多數(shù)人所認(rèn)為的自動NSS。。。也就是說:在一個多SPI系統(tǒng)中,STM32 SPI通過NSS檢測,一旦發(fā)現(xiàn)系統(tǒng)中無NSS低信號,自己就輸出低,從而成為主機;當(dāng)系統(tǒng)中有NSS低信號時(及已經(jīng)有其它SPI宣布為主機),自己就配置為從機。 所謂的hard模式的NSS,實際就是為了實現(xiàn)多機間通信的。
|
|