ADXL345采用I2C模式與tms320vc5509A接口
VC5509A包含I2C外設接口,可以方便的與ADXL345通信。在調試中,使用了實(shí)驗室自制的DSP主板SDUST VC5509A V1.1。該板的JP2擴展接口引出了I2C總線(xiàn)。該主板上也使用I2C總線(xiàn)完成與AIC23B的配置,但由于I2C總線(xiàn)可掛置多個(gè)外設,所以無(wú)需再連接一片ADXL345,不會(huì )有影響。
本文引用地址:http://dyxdggzs.com/article/201808/385323.htm由于A(yíng)DXL345不容易焊接,所以在買(mǎi)芯片時(shí)也購買(mǎi)了飛拓電子的PCB板。在該PCB板上已經(jīng)添加了去耦電容、上拉電阻等。下圖為VC5509A主板與ADXL345模塊的連線(xiàn)示意圖。

ADXL345與5509A主板連線(xiàn)(I2C)示意圖
分析原理圖,ADXL345需要3.3V供電,直接使用5509A主板來(lái)提供,而不使用345小板上的5V轉換,所以5V引腳空缺即可。CS引腳懸空,因為在模塊中已經(jīng)將其上拉,表示采用I2C模式通信。將SDO下拉,I2C地址為0x53(若上拉,I2C地址為1D)。將INT1n輸出與主板的INT0n相連,將SDA和SCL線(xiàn)對應連接。圖中標注的U1引腳為5509A主板上擴展口JP2對應的引腳編號。
下圖為完整的原理圖:

ADXL345與5509A主板連線(xiàn)(I2C)原理圖
調試要點(diǎn)小結:
1)ADXL345的中斷默認是高電平有效,而5509A默認是低電平有效,所以開(kāi)始要修改一下。通過(guò)設置DATA_FORMAT(0x31)寄存器中的DATA_INVERT位,將其置1即表示低電平有效。
2)修改CPLD代碼,將INT0輸出由1改為高阻抗。
3)可通過(guò)讀取寄存器DEVID,來(lái)判斷I2C讀是否正常。該寄存器的數據固定為0xE5,若數據讀取正確,則表明I2C讀取函數編寫(xiě)無(wú)誤。
4)連續讀取寄存器,會(huì )出現總線(xiàn)忙的錯誤,需要在讀取數據完畢后添加一必要的延時(shí)。
5)調試總結發(fā)現,雖然5509A的手冊中寫(xiě)明外部中斷是低電平有效的,但實(shí)際應為下降沿有效。由于A(yíng)DXL345運行狀態(tài)的不確定性,在使能中斷前,INT1輸出就可能已經(jīng)拉低了。這時(shí)即便使能外部中斷,也無(wú)法按預想的進(jìn)入中斷子程序。需要想辦法將INT1 清除一次,這樣才有機會(huì )觸發(fā)中斷。所以在中斷使能后,通過(guò)讀取寄存器的方式來(lái)實(shí)現清除中斷,以觸發(fā)中斷循環(huán)。
6)發(fā)現CSL中的I2C讀寫(xiě)函數相當耗費時(shí)間。觀(guān)察其大約占用380000個(gè)指令周期,在144MHz的速率下,大約消耗2.6ms。而設定的ADXL345的數據輸出速率為200Hz,遠遠跟隨不上。在每個(gè)中斷中,至少需要7個(gè)讀寫(xiě)指令,單純這部分的耗時(shí)就達到了18.2ms。也就是說(shuō)當使用I2C總線(xiàn)時(shí),ADXL345的數據輸出速率最高只能設為50Hz。
7)最后測試,將速率設置為25Hz,通過(guò)示波器觀(guān)察中斷,大約40ms中斷一次,對應25Hz。中斷的低電平時(shí)間基本一致,說(shuō)明能夠規律的進(jìn)入中斷。將速率設置為50Hz,觀(guān)察中斷,大約20ms中斷一次,對應50Hz。進(jìn)入中斷也比較規律。當設置為100Hz時(shí),中斷不再呈現周期性,低電平保持時(shí)間也不一致。說(shuō)明出現了中斷嵌套的現象。與推斷一致。
評論