Tel: 137-2421-1742 E-mail: paul@rdbuy.cn
ICP備案證書號:粵ICP備12082730號-1
共執行 65 個查詢,用時 0.016538 秒,在線 342 人,Gzip 已啟用,占用內存 2.591 MB
Powered by ECShop v4.0.1
VC
在調試I
ADXL345與
分析上圖,McBSP0的CLKX0充當SCK信號,DR0充當MISO信號,DX0充當MOSI信號,FSX0充當SS信號,INT0n充當INTn信號。這些信號分別與ADXL345的對應引腳直接相連即可。下圖為完整的原理圖:
ADXL345與
調試要點小結:
1)將VC
2)程序編寫的關鍵是要把McBSP0正確的配置在時鐘停止模式。使用CSL來完成該配置工作,容易實現,避免了一些不必要的錯誤。在McBSP的數據手冊中,有配置McBSP工作在SPI模式的詳細步驟(6-8)。下面為配置步驟:
(1)復位發送和接收器。XRST=0,RRST=0。
(2)復位采樣率生成器。GRST=0。
(3)修改影響SPI工作的寄存器。需要修改的一些信息列出如下:
1> 根據ADXL345的手冊中SPI的時序圖,得出數據在SCK時鐘的下降沿發送,在上升沿接收。所以配置CLKSTP=10b,CLKXP=1b,CLKRP=0b。
2> CLKX充當SCK信號,該信號由VC
3> 時鐘信號由McBSP的采樣率生成器提供。所以配置SCLKME=0b,CLKSM=1b。
4> 系統時鐘工作在144MHz,如果要讓ADXL345的數據輸出速率達到3200Hz,需要使得SCK時鐘頻率高于2MHz;為避免時鐘過高造成負面影響,推薦SCK時鐘不高于5MHz。在這里設定SCK頻率為4MHz。所以配置CLKGDV=36(144/4=36)。
5> FSX充當SS信號,為輸出信號;且ADXL345的CS信號為低電平有效。所以配置FSXM=1b,FSGM=0b,FSXP=1b。
6> 為保證FSX信號的正確性,需配置XDATDLY=01b,RDATDLY=01b。
7> 在SPI模式時,還需注意只能使用單幀模式,幀長固定為1。需要配置XPHASE=0,RPHASE=0,XFRLEN1=0,
8> 因為在時鐘停止模式下,發送和接收電路同步于同一個時鐘信號,所以需要將XWDLEN1和RWDLEN1設為相同值。這里根據ADXL345的讀寫時序,設定其長度均為16。
(4)使能采樣率生成器。GRST=1。
(5)使能發送和接收器。XRST=1,RRST=1。
(6)使能幀同步邏輯。FRST=1。
3)調試中,碰到了一些比較奇怪的現象。比如不連接ADXL345,MISO上也有很雜散的信號輸出,SS信號高電平僅為2.2V左右。后來發現是由于AIC23B0的干擾,拆除終端匹配電阻后,信號恢復正常。
4)開始調試時,程序無法進入中斷,不容易觀察讀寫時序。使用循環讀取寄存器清除中斷的方式來構造讀寫時序。這時可看到中斷信號的變化,SCK信號也為設定的4MHz。根據波形,對比時序圖,來尋找bug。這要比單純修改程序代碼要高效的多。
5)關于MISO信號。該信號由ADXL345輸出。根據時序圖,高8位應當為無效數據,但實際觀察的波形和讀取的數據表明,高8位的確也存在數據。為凸顯出問題,修改為循環讀取1個寄存器,發現高8位和低8位相同;改為循環讀取2個寄存器,發現高8位和低8位數據交錯。找到了規律:在讀取數據時,高8位上次讀取過的數據;低8位為這次要讀取的數據。所以只需將高8位數據屏蔽即可。
6)MISO信號在最后輸出高電平后,有一個很緩慢的下降沿;分析這是由于ADXL345在輸出完最后一個數據(高電平)后,即保持高阻抗,所以表現出一個緩慢的下降沿。不會對數據傳輸的正確性造成影響。
7)對ADXL345的執行寫操作時,也需要執行一條讀操作。否則讀取的數據會發生錯亂。
8)在程序的開始,需要清除ADXL345的中斷信號,才能觸發中斷循環。在這里讀取一次寄存器,也能夠進入中斷,但此時DATA_RDY中斷還沒有產生,所以無法觸發中斷循環。所以添加了一個循環和標志位,循環檢測標志位并讀取寄存器;在有效中斷時將標志位置1,當檢測到標志位為1后,表明已觸發中斷循環,退出讀取循環,繼續下面的操作。但是有一點,這種方式在測試程序中是可行的;而在真正使用中是行不通的。因為若ADXL345存在問題,則程序死在這里,使得其他功能也無法實現。實際中可在此實際一個有限循環,而非無限循環。
9)最后測試,將速率設置為3200Hz,通過示波器觀察中斷,大約300us中斷一次,對應3200Hz。中斷的低電平時間基本一致,說明能夠規律的進入中斷,而不像先前雜亂的中斷信號。測試中斷函數的指令大約為9000條,占時為大約54us,支持中斷頻率大約19kHz。
程序編寫展望:
1)將McBSP0和DMA結合,可進一步提升數據讀寫的效率。這種方式在需要對讀取的數據進行大量數據運算時很有優勢。但實現有難度,需要把XINT0、RINT0、INT0中斷和DMA配合好。實現難度比較大。
2)現在由于緩沖區的限制,只能觀察到部分加速度波形,如果能添加RTDX,并編寫一個上位機軟件,可以將采集到的加速度信息存儲到上位機,并可觀察到完整的加速度信息。