成人伊人|一艘游轮一百个女的一个男的|绿巨人污|韩国三级电影网址|国产深夜福利

當前位置: 首頁 > 傳感器常見問題 > ADXL345采用SPI模式與VC5509A接口

相關商品

瀏覽歷史

ADXL345采用SPI模式與VC5509A接口
傳感器常見問題 / 2012-12-23

 VC5509AMcBSP接口能夠配置成4SPI模式,因而可直接與ADXL345通信。仍然使用了實驗室自制的DSP主板SDUST VC5509A V1.1。該板的JP2擴展接口引出了McBSP0接口。該主板上還通過McBSP0AIC23B0進行數據通信。如果不做處理,會影響到與ADXL345的通信。根據DSP主板的原理圖,拆除了電阻R37R79R80R81R82R75,使得McBSPAIC23B0的通信線斷開。

在調試I2C模式時,ADXL345模塊焊接了必要的上拉電阻,而在SPI模式時,這些上拉電阻是不需要的。將三個上拉電阻拆除即可。下圖為VC5509AADXL345通信的原理圖(SPI模式)。

ADXL3455509A主板連線(SPI)原理圖

分析上圖,McBSP0CLKX0充當SCK信號,DR0充當MISO信號,DX0充當MOSI信號,FSX0充當SS信號,INT0n充當INTn信號。這些信號分別與ADXL345的對應引腳直接相連即可。下圖為完整的原理圖:

ADXL3455509A主板連線(SPI)原理圖

調試要點小結:

1)將VC5509AMcBSP0配置在時鐘停止模式。此時,CLKX用作SCK信號,FSX用作SS信號,CLKR內部與CLKX相連,FSR內部與FSX相連。在這里,McBSP工作在主模式,DX充當MOSI信號;DR充當MISO信號。

2)程序編寫的關鍵是要把McBSP0正確的配置在時鐘停止模式。使用CSL來完成該配置工作,容易實現,避免了一些不必要的錯誤。在McBSP的數據手冊中,有配置McBSP工作在SPI模式的詳細步驟(6-8)。下面為配置步驟:

1)復位發送和接收器。XRST=0RRST=0

2)復位采樣率生成器。GRST=0

3)修改影響SPI工作的寄存器。需要修改的一些信息列出如下:

1> 根據ADXL345的手冊中SPI的時序圖,得出數據在SCK時鐘的下降沿發送,在上升沿接收。所以配置CLKSTP=10bCLKXP=1bCLKRP=0b

2> CLKX充當SCK信號,該信號由VC5509A產生,CLKX應配置為輸出。所以配置CLKXM=1b

3> 時鐘信號由McBSP的采樣率生成器提供。所以配置SCLKME=0bCLKSM=1b

4> 系統時鐘工作在144MHz,如果要讓ADXL345的數據輸出速率達到3200Hz,需要使得SCK時鐘頻率高于2MHz;為避免時鐘過高造成負面影響,推薦SCK時鐘不高于5MHz。在這里設定SCK頻率為4MHz。所以配置CLKGDV=36144/4=36)。

5> FSX充當SS信號,為輸出信號;且ADXL345CS信號為低電平有效。所以配置FSXM=1bFSGM=0bFSXP=1b

6> 為保證FSX信號的正確性,需配置XDATDLY=01bRDATDLY=01b

7> SPI模式時,還需注意只能使用單幀模式,幀長固定為1。需要配置XPHASE=0RPHASE=0XFRLEN1=0

8> 因為在時鐘停止模式下,發送和接收電路同步于同一個時鐘信號,所以需要將XWDLEN1RWDLEN1設為相同值。這里根據ADXL345的讀寫時序,設定其長度均為16

4)使能采樣率生成器。GRST=1

5)使能發送和接收器。XRST=1RRST=1

6)使能幀同步邏輯。FRST=1

3)調試中,碰到了一些比較奇怪的現象。比如不連接ADXL345MISO上也有很雜散的信號輸出,SS信號高電平僅為2.2V左右。后來發現是由于AIC23B0的干擾,拆除終端匹配電阻后,信號恢復正常。

4)開始調試時,程序無法進入中斷,不容易觀察讀寫時序。使用循環讀取寄存器清除中斷的方式來構造讀寫時序。這時可看到中斷信號的變化,SCK信號也為設定的4MHz。根據波形,對比時序圖,來尋找bug。這要比單純修改程序代碼要高效的多。

5)關于MISO信號。該信號由ADXL345輸出。根據時序圖,高8位應當為無效數據,但實際觀察的波形和讀取的數據表明,高8位的確也存在數據。為凸顯出問題,修改為循環讀取1個寄存器,發現高8位和低8位相同;改為循環讀取2個寄存器,發現高8位和低8位數據交錯。找到了規律:在讀取數據時,高8位上次讀取過的數據;低8位為這次要讀取的數據。所以只需將高8位數據屏蔽即可。

6MISO信號在最后輸出高電平后,有一個很緩慢的下降沿;分析這是由于ADXL345在輸出完最后一個數據(高電平)后,即保持高阻抗,所以表現出一個緩慢的下降沿。不會對數據傳輸的正確性造成影響。

7)對ADXL345的執行寫操作時,也需要執行一條讀操作。否則讀取的數據會發生錯亂。

8)在程序的開始,需要清除ADXL345的中斷信號,才能觸發中斷循環。在這里讀取一次寄存器,也能夠進入中斷,但此時DATA_RDY中斷還沒有產生,所以無法觸發中斷循環。所以添加了一個循環和標志位,循環檢測標志位并讀取寄存器;在有效中斷時將標志位置1,當檢測到標志位為1后,表明已觸發中斷循環,退出讀取循環,繼續下面的操作。但是有一點,這種方式在測試程序中是可行的;而在真正使用中是行不通的。因為若ADXL345存在問題,則程序死在這里,使得其他功能也無法實現。實際中可在此實際一個有限循環,而非無限循環。

9)最后測試,將速率設置為3200Hz,通過示波器觀察中斷,大約300us中斷一次,對應3200Hz。中斷的低電平時間基本一致,說明能夠規律的進入中斷,而不像先前雜亂的中斷信號。測試中斷函數的指令大約為9000條,占時為大約54us,支持中斷頻率大約19kHz

程序編寫展望:

1)將McBSP0DMA結合,可進一步提升數據讀寫的效率。這種方式在需要對讀取的數據進行大量數據運算時很有優勢。但實現有難度,需要把XINT0RINT0INT0中斷和DMA配合好。實現難度比較大。

2)現在由于緩沖區的限制,只能觀察到部分加速度波形,如果能添加RTDX,并編寫一個上位機軟件,可以將采集到的加速度信息存儲到上位機,并可觀察到完整的加速度信息。

用戶評論(共0條評論)

  • 暫時還沒有任何用戶評論
總計 0 個記錄,共 1 頁。 第一頁 上一頁 下一頁 最末頁
用戶名: 游客
E-mail:
評價等級:
評論內容: