一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

I2C和SPI總線補(bǔ)充

 langhuayipian 2010-09-13
  1.I2C總線及其工作原理
    微控制器和各種傳感器的通信一般是通過I2C 總線(Inter-IntegratedCircuit)。
    I2C 串行總線一般有兩根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。I2C 的工作原理如圖所示,主機(jī)在SCL 線上產(chǎn)生自己的時鐘來傳輸I2C 總線上的數(shù)據(jù),數(shù)據(jù)只在時鐘的高電平周期有效,每傳輸一個數(shù)據(jù)位就產(chǎn)生一個時鐘脈沖,數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL 線的時鐘信號是低電平時才能改變,當(dāng)SCL 為高電平時,SDA 的改變表示“開始”和“停止”狀態(tài),即SDA 由高電平轉(zhuǎn)入低電平表示開始,該命令必須在其它命令前執(zhí)行;SDA 由低電平轉(zhuǎn)入高電平表示停止?fàn)顟B(tài),該命令可終止所有通訊。
    在開始條件后,SCL 低電平期間,SDA 允許變化,每位數(shù)據(jù)需一個時鐘脈沖,當(dāng)SCL 為高時,SDA 必須穩(wěn)定,主控器在應(yīng)答時鐘脈沖高電平期間釋放SDA 線,轉(zhuǎn)由接收器控制。相同總線上的設(shè)備在收到數(shù)據(jù)后,以置SDA 為低電平的方式對其確認(rèn)??偩€不忙時,數(shù)據(jù)線和時鐘線保持為高電平。
    仿真:
    用keil C語言寫出I2C總線傳輸?shù)拇a,編譯通過后寫入MCU的程序ROM中,測試是否能按照總線的協(xié)議正常工作。
    首先,對MC8051 的端口加以命名:
        Sbit sda=P1^7
        Sbit scl=P1^6
    啟動函數(shù):在SCL 為高時,給出SDA 的下降沿,即為啟動信號。
    停止函數(shù):在SCL 為高時,給出SDA 的上升沿,即為停止信號。
    發(fā)送函數(shù):向I2C 總線寫數(shù)據(jù),每次寫8 位。首先拉低SCL,然后使發(fā)送數(shù)據(jù)左移,用SDA 發(fā)送一位數(shù)據(jù),再拉高SCL 以給出上升沿,發(fā)出SDA的狀態(tài)值。
    接受函數(shù):從I2C 總線讀數(shù)據(jù),每次讀8 位。首先拉高SCL,然后接受值左移一位把低位和SDA 相或得到SDA 的狀態(tài)值,再拉低SCL 以給出下降沿。
    舉例說明:利用MCU 程序控制傳送數(shù)據(jù)12,二進(jìn)制表示為00001100。Modelsim 的仿真結(jié)果如圖所示,可見sda 即P1[7]上傳輸數(shù)據(jù),scl 即P1[6]上的狀態(tài)改變控制了時鐘,時序與協(xié)議要求完全符合。
 
    2.SPI總線及其工作原理
    微控制器和無線收發(fā)器模塊的通信一般是通過SPI 總線(Serial Peripheral interface)。
    SPI 就是串行外圍設(shè)備接口,是一種高速的、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB 的布局上節(jié)省空間,提供方便。
    該接口一般使用4 條線:串行時鐘線(SCK)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI 和低電平有效的從機(jī)選擇線SS(有的SPI 接口芯片帶有中斷信號線INT 或INT、有的SPI 接口芯片沒有主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI)。
    SPI 的工作模式有兩種:主模式和從模式,無論那種模式,都支持3Mbit/s的速率,并且還具有傳輸完成標(biāo)志和寫沖突保護(hù)標(biāo)志。
    仿真:
    對于不帶SPI 串行總線接口的MC8051 來說,可以使用軟件來模擬SPI的操作,包括串行時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出。對于不同的串行接口外圍芯片,它們的時鐘時序是不同的。
    用keil C 語言寫出I2C總線傳輸?shù)拇a,編譯通過后寫入MCU 的程序ROM 中,測試是否能按照總線的協(xié)議正常工作。
    首先,對MC8051 的端口加以命名:
        Sbit MISI=P1^0
        Sbit MISO=P1^3
        Sbit SCK=P1^1
        Sbit SS=P1^2
    發(fā)送函數(shù):向SPI 總線寫數(shù)據(jù),每次寫8 位。首先拉低SCK,然后使發(fā)送數(shù)據(jù)左移,用MISI發(fā)送一位數(shù)據(jù),再拉高SCL 以給出時鐘的上升沿以發(fā)出數(shù)據(jù)。
    接受函數(shù):從SPI 總線讀數(shù)據(jù),每次讀8 位。首先拉低SCK,然后接受值左移一位把低位和MISO相或得到接受數(shù)據(jù)該位的狀態(tài)值,再拉高SCL以給出上升沿。
    舉例說明:利用MCU 程序控制傳送數(shù)據(jù)23,二進(jìn)制表示為00010111。Modelsim 的仿真結(jié)果如圖所示,SCK 即P1[1]上產(chǎn)生的是串行時鐘信號,SS 即P1[2]上產(chǎn)生片選信號。此時情況為發(fā)送信號,而MCU為主機(jī),因此MISI即P1[0]上的信號是主機(jī)輸出即MCU 發(fā)送的數(shù)據(jù),而MISO 即P1[3]上沒有信號的變化。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美亚洲三级视频在线观看| 在线免费不卡亚洲国产| 中文字幕乱码免费人妻av| 五月天六月激情联盟网| 日本丁香婷婷欧美激情| 国产精品国产亚洲区久久| 色偷偷偷拍视频在线观看| 日本高清中文精品在线不卡| 久久福利视频视频一区二区| 国产黄色高清内射熟女视频| 一区二区三区免费公开| 日韩欧美一区二区不卡视频| 国产精品国产亚洲看不卡| 夫妻激情视频一区二区三区| 欧美精品久久男人的天堂| 国产一区二区三区av在线| 五月婷婷综合激情啪啪| 亚洲午夜精品视频在线| 大尺度剧情国产在线视频| 樱井知香黑人一区二区| 国自产拍偷拍福利精品图片| 亚洲日本韩国一区二区三区| 日韩精品一区二区一牛| 久久99亚洲小姐精品综合| 亚洲精品黄色片中文字幕| 欧美成人精品一区二区久久| 国产精品伦一区二区三区四季| 午夜精品国产精品久久久| 亚洲最新av在线观看| 国产男女激情在线视频| 国产精品不卡高清在线观看| 老司机精品线观看86| 久久经典一区二区三区| 日系韩系还是欧美久久| 国产精品伦一区二区三区四季| 91福利视频日本免费看看 | 好吊视频有精品永久免费| 激情综合五月开心久久| 超薄肉色丝袜脚一区二区| 亚洲性生活一区二区三区| 成人国产激情福利久久|