簡介
AS32X601內置的I2C模塊提供了支持全雙工的同步串行通信。該接口可配置為主機或從機模式,配置為主機模式時,它可為外部從器件提供通信時鐘(SCK),6個SPI每個都支持8個從機。
SPI 協議是由摩托羅拉公司提出的通訊協議(Serial Peripheral Interface),即串行外圍設備接口,是一種高速全雙工的通信總線。它被廣泛地使用在 ADC、 LCD 等設備與 MCU 中,要求通訊速率較高的場合。
1.信號線:SPI具有SCK,MOSI,MISO ,CS線
2.尋址方式:SPI是通過CS片選信號來選擇從機
3.通信速率:SPI速率較快(可達fPCLK/2),一般用于高速設備之間通信。AN32X601上SPI速率最快可達45MHz。
硬件設計
SPI通信使用 3 條總線及片選線,3條總線分別為SCK、MOSI、 MISO,片選線為CS0。
SPI時序
CS0、SCK、MOSI信號都由主機控制產生,而 MISO的信號由 從機產生,主機通過該信號線讀取從機的數據。MOSI 與 MISO的信號 只在 NSS為低電平 的時候才有效,在 SCK的 每個時鐘周期,MOSI 和 MISO 傳輸一位數據。
① 處 NSS信號由高變低,是SPI通信的起始信號。NSS是 每個從機各自獨占的信號線,當從機在自己的 NSS線檢測到起始信號后,就知道自己被主機選中,開始準備與主機通信。⑥ 處 NSS信號由低變高,是SPI通信的停止信號,表示本次通信結束,從機的選中狀態被取消。
軟件編程
配置SPIx需要的GPIO為復用功能。
通過配置ISPI_INITSTRUCT初始化I2Cx,包括時鐘分頻,主機或從機模式,相位模式等等。
按需求配置中斷,并配置IRQ_HANDLER;
調用收發接口,并處理數據
SPI常見問題解析
Q1主從通信時,先開從機,然后再給主機上電,通信正常,但是同時上電,即便是給主機加了延時都通信異常。
A:首先應排查硬件上的問題,如芯片間的去耦電容是否正常,電源是否穩定,如果確定了硬件沒有問題,就使用硬件片選試試,非常穩定,主從同時上電即使主機不加延時也不會引起通信異常。
Q2:使用的DMA收發,單獨測試一切正常,但是只要跟其他DMA同時使用就死機
A: 嘗試增大堆棧,MCU死機很大一部分原因是堆棧溢出(DMA是要用到堆棧的)
SPI穩定性優化
1,通信速率:主機的通信速率盡量不要超過從機SPI的最大速率
2,CRC校驗:如果工作環境較為惡劣,有較大的噪聲干擾,推薦開啟CRC校驗
3,硬件片選:雖然從理論上講,只有主機和從機片選開不開無所謂,但是經過向多名開發者驗證和我的多次測試,開啟硬件片選可以大大提升SPI通信穩定性。
審核編輯 黃宇
-
mcu
+關注
關注
146文章
17918瀏覽量
362801 -
調試
+關注
關注
7文章
612瀏覽量
34620 -
SPI
+關注
關注
17文章
1791瀏覽量
95266
發布評論請先 登錄
采用MSP430FR604x MCU的水流和燃氣流量計量超聲波傳感技術的常見問題解答(FAQ)

數字電源的低壓調試和高壓調試
OMAPL138/C6748 ROM引導加載程序資源和常見問題解答

評論