新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > I2C總線的程序設計

        I2C總線的程序設計

        作者: 時間:2011-07-20 來源:網絡 收藏
          采用I2C總線工作方式驅動MAX518芯片時,MSSP模塊在產生啟動條件的基礎上,連續發送3個字節信息,分別為地址字節、命令字節及所需轉換的數椐字節,3個宇節發送完畢后,MSSP模塊產停止條件,MAX518才開始進行模/數轉換.

        因為MAX518的地址字節為58H,所以只有向其發送58H地址時,才能選通它。命令字節可以為00H或01H 當為00H時,選擇OUT0通逍輸出模擬量:當為01H時,選擇OUT1通道輸出模擬量。

        本程序中的命令字節為01H,即選擇D/A1通道輸出正弦波信號.待輸出的數據量根掂需耍在00H~FFH間變化。MSSP模塊產生啟動條件后,地址字節、命令字節、待轉換的數據發送成功,且產生停止條件時,SSIFG都會被置1。

        因此在編寫程序時,可以通過查詢該標志位來判斷相應的步驟是否完成。若該步驟沒有完成,則繼續等待查詢;若已完成,則清除SSIFG標志位,繼續進行下一步操作。本設計的程序流程如圖1和圖2所示。

          

        圖1 I2C的初始化程序流程   圖2 主程序流程及I2C發送數據子程序流程   

        實現代碼如下。

        (1)首先定義數據組存放正弦表,通過在數組名前加const標識,把該數組存放到ROM中.   

        (2)初始化I2C模塊,設置SCL為輸入口、SDA為輸出口,通過設HSSP7ADD寄存器來確定I2C的工作頻率,最后使能I2C。   

        (3)該字函數通過5個do-while語句成I2C的啟動、發送地址字節、發送命令字節、發送數據字節和產生停止條件的功能,最后通過對SSPIF清0,清楚發送標志。   

        (4)主函數3完成各個子函數的調用功能,在while循環中調用I2C總線輸出數據子函數。  

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 拉萨市| 安陆市| 青海省| 宣城市| 桑植县| 泊头市| 贵阳市| 金门县| 江孜县| 阿图什市| 沂源县| 三门县| 吉安市| 保靖县| 广河县| 华坪县| 余庆县| 古交市| 饶阳县| 镇巴县| 甘孜县| 达孜县| 卢氏县| 四子王旗| 怀安县| 襄垣县| 望谟县| 南陵县| 苗栗市| 梁山县| 白河县| 清流县| 楚雄市| 海兴县| 商丘市| 师宗县| 龙胜| 红桥区| 隆安县| 防城港市| 霍城县|