我一直在試圖移植一些AVR代碼來驅動一個簡單的SPI LCD作爲學習練習(我對ARM一般來說很新穎)。爲此,我只需要在主模式下使用SPI。我查看了我的器件(STM32F103C8)的datasheet,發現我需要的SPI1引腳,SCK和MOSI分別與其他外設(第29頁)一起映射爲PA5和PA7的替代功能。我的理解是,爲了在這些引腳上使用SPI功能,我需要確保映射到同一引腳的任何其他功能都被禁用。但是,在查看外設時鐘控制寄存器的默認值時,看起來其他功能已被禁用。STM32F1 - 在裸機上使用主SPI
我看着SPI部分在reference manual,包括第25.3.3 - 在主模式配置SPI。首先,我在APB2ENR中啓用SPI1主時鐘,並按照本節中的步驟將SPI1配置爲符合我的需要。我還更改了PA5/7的設置,將其模式設置爲「備用功能輸出推輓」(9.1.4)。最後,我通過設置CR1_SPE來啓用SPI1。
從我的閱讀中,我曾經想過,在配置SPI之後,通過將值加載到SPI1數據寄存器中,數據將被移出。但是,在寫入數據之後,SPI狀態寄存器中的TXE標誌永遠不會置位,表示我寫入的數據只是坐在那裏。
在這一點上,我假設有其他東西我沒有正確配置。例如,我不能100%確定如何處理PA5/7引腳。我試圖從數據表中理解我能做些什麼,但我沒有得到任何地方。還有什麼需要完成之前,它會工作?
我不認爲引腳配置不正確會阻止SPI嘗試傳輸數據。它不會去任何地方,但外圍設備仍然會這樣。我會建議外設配置不正確。你是否啓用了SPI的時鐘?你是否啓用了SPI? –
發佈你的代碼,否則我們所能做的只是猜測...... –