新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > ADXL345采用I2C模式與tms320vc5509A接口

        ADXL345采用I2C模式與tms320vc5509A接口

        作者: 時間:2018-08-03 來源:網絡 收藏

        VC5509A包含I2C外設接口,可以方便的與ADXL345。在調試中,使用了實驗室自制的DSP主板SDUST VC5509A V1.1。該板的JP2擴展接口引出了I2C總線。該主板上也使用I2C總線完成與AIC23B的配置,但由于I2C總線可掛置多個外設,所以無需再連接一片ADXL345,不會有影響。

        本文引用地址:http://www.104case.com/article/201808/385323.htm

        由于ADXL345不容易焊接,所以在買芯片時也購買了飛拓電子的PCB板。在該PCB板上已經添加了去耦電容、上拉電阻等。下圖為VC5509A主板與ADXL345模塊的連線示意圖。

        ADXL345與5509A主板連線(I2C)示意圖

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

        下圖為完整的原理圖:

        ADXL345與5509A主板連線(I2C)原理圖

        調試要點小結:

        1)ADXL345的中斷默認是高電平有效,而5509A默認是低電平有效,所以開始要修改一下。通過設置DATA_FORMAT(0x31)寄存器中的DATA_INVERT位,將其置1即表示低電平有效。

        2)修改CPLD代碼,將INT0輸出由1改為高阻抗。

        3)可通過讀取寄存器DEVID,來判斷I2C讀是否正常。該寄存器的數據固定為0xE5,若數據讀取正確,則表明I2C讀取函數編寫無誤。

        4)連續讀取寄存器,會出現總線忙的錯誤,需要在讀取數據完畢后添加一必要的延時。

        5)調試總結發現,雖然5509A的手冊中寫明外部中斷是低電平有效的,但實際應為下降沿有效。由于ADXL345運行狀態的不確定性,在使能中斷前,INT1輸出就可能已經拉低了。這時即便使能外部中斷,也無法按預想的進入中斷子程序。需要想辦法將INT1 清除一次,這樣才有機會觸發中斷。所以在中斷使能后,通過讀取寄存器的方式來實現清除中斷,以觸發中斷循環。

        6)發現CSL中的I2C讀寫函數相當耗費時間。觀察其大約占用380000個指令周期,在144MHz的速率下,大約消耗2.6ms。而設定的ADXL345的數據輸出速率為200Hz,遠遠跟隨不上。在每個中斷中,至少需要7個讀寫指令,單純這部分的耗時就達到了18.2ms。也就是說當使用I2C總線時,ADXL345的數據輸出速率最高只能設為50Hz。

        7)最后測試,將速率設置為25Hz,通過示波器觀察中斷,大約40ms中斷一次,對應25Hz。中斷的低電平時間基本一致,說明能夠規律的進入中斷。將速率設置為50Hz,觀察中斷,大約20ms中斷一次,對應50Hz。進入中斷也比較規律。當設置為100Hz時,中斷不再呈現周期性,低電平保持時間也不一致。說明出現了中斷嵌套的現象。與推斷一致。



        關鍵詞: 通信

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宝山区| 中宁县| 绥阳县| 西乌| 武穴市| 简阳市| 囊谦县| 额济纳旗| 松滋市| 辽中县| 汾阳市| 哈尔滨市| 敦化市| 梨树县| 尖扎县| 沙洋县| 汾西县| 错那县| 敦化市| 道孚县| 邮箱| 宁波市| 定结县| 荃湾区| 江山市| 上栗县| 六枝特区| 中超| 镶黄旗| 瑞安市| 义马市| 弥勒县| 阿坝| 酒泉市| 夏河县| 宁明县| 香格里拉县| 永定县| 湖口县| 新巴尔虎右旗| 武宁县|