ADXL345采用I2C模式與tms320vc5509A接口
VC5509A包含I2C外設(shè)接口,可以方便的與ADXL345通信。在調(diào)試中,使用了實(shí)驗(yàn)室自制的DSP主板SDUST VC5509A V1.1。該板的JP2擴(kuò)展接口引出了I2C總線。該主板上也使用I2C總線完成與AIC23B的配置,但由于I2C總線可掛置多個外設(shè),所以無需再連接一片ADXL345,不會有影響。
本文引用地址:http://www.ex-cimer.com/article/201808/385323.htm由于ADXL345不容易焊接,所以在買芯片時也購買了飛拓電子的PCB板。在該P(yáng)CB板上已經(jīng)添加了去耦電容、上拉電阻等。下圖為VC5509A主板與ADXL345模塊的連線示意圖。
ADXL345與5509A主板連線(I2C)示意圖
分析原理圖,ADXL345需要3.3V供電,直接使用5509A主板來提供,而不使用345小板上的5V轉(zhuǎn)換,所以5V引腳空缺即可。CS引腳懸空,因?yàn)樵谀K中已經(jīng)將其上拉,表示采用I2C模式通信。將SDO下拉,I2C地址為0x53(若上拉,I2C地址為1D)。將INT1n輸出與主板的INT0n相連,將SDA和SCL線對應(yīng)連接。圖中標(biāo)注的U1引腳為5509A主板上擴(kuò)展口JP2對應(yīng)的引腳編號。
下圖為完整的原理圖:
ADXL345與5509A主板連線(I2C)原理圖
調(diào)試要點(diǎn)小結(jié):
1)ADXL345的中斷默認(rèn)是高電平有效,而5509A默認(rèn)是低電平有效,所以開始要修改一下。通過設(shè)置DATA_FORMAT(0x31)寄存器中的DATA_INVERT位,將其置1即表示低電平有效。
2)修改CPLD代碼,將INT0輸出由1改為高阻抗。
3)可通過讀取寄存器DEVID,來判斷I2C讀是否正常。該寄存器的數(shù)據(jù)固定為0xE5,若數(shù)據(jù)讀取正確,則表明I2C讀取函數(shù)編寫無誤。
4)連續(xù)讀取寄存器,會出現(xiàn)總線忙的錯誤,需要在讀取數(shù)據(jù)完畢后添加一必要的延時。
5)調(diào)試總結(jié)發(fā)現(xiàn),雖然5509A的手冊中寫明外部中斷是低電平有效的,但實(shí)際應(yīng)為下降沿有效。由于ADXL345運(yùn)行狀態(tài)的不確定性,在使能中斷前,INT1輸出就可能已經(jīng)拉低了。這時即便使能外部中斷,也無法按預(yù)想的進(jìn)入中斷子程序。需要想辦法將INT1 清除一次,這樣才有機(jī)會觸發(fā)中斷。所以在中斷使能后,通過讀取寄存器的方式來實(shí)現(xiàn)清除中斷,以觸發(fā)中斷循環(huán)。
6)發(fā)現(xiàn)CSL中的I2C讀寫函數(shù)相當(dāng)耗費(fèi)時間。觀察其大約占用380000個指令周期,在144MHz的速率下,大約消耗2.6ms。而設(shè)定的ADXL345的數(shù)據(jù)輸出速率為200Hz,遠(yuǎn)遠(yuǎn)跟隨不上。在每個中斷中,至少需要7個讀寫指令,單純這部分的耗時就達(dá)到了18.2ms。也就是說當(dāng)使用I2C總線時,ADXL345的數(shù)據(jù)輸出速率最高只能設(shè)為50Hz。
7)最后測試,將速率設(shè)置為25Hz,通過示波器觀察中斷,大約40ms中斷一次,對應(yīng)25Hz。中斷的低電平時間基本一致,說明能夠規(guī)律的進(jìn)入中斷。將速率設(shè)置為50Hz,觀察中斷,大約20ms中斷一次,對應(yīng)50Hz。進(jìn)入中斷也比較規(guī)律。當(dāng)設(shè)置為100Hz時,中斷不再呈現(xiàn)周期性,低電平保持時間也不一致。說明出現(xiàn)了中斷嵌套的現(xiàn)象。與推斷一致。
評論