<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 8051單片機的I2C接口并行擴展

8051單片機的I2C接口并行擴展

作者: 時(shí)間:2012-04-05 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引 言

本文引用地址:http://dyxdggzs.com/article/171690.htm

總線(xiàn)器件在視頻處理、移動(dòng)通信等領(lǐng)域的應用已經(jīng)非常普遍。另外,通用的總線(xiàn)器件,如帶總線(xiàn)的RAM,ROM,A/D,D/A,LCD驅動(dòng)器等,也越來(lái)越多地應用于計算機及自動(dòng)控制系統中。隨著(zhù)I2C器件越來(lái)越廣泛的應用,8051系列與他之間的通信越來(lái)越頻繁。

8051系列與I2C總線(xiàn)接口器件通信時(shí),8051的通用口與I2C總線(xiàn)器件的SCL,SDA連接。根據I2C 總線(xiàn)數據傳輸協(xié)議,8051必須對其兩個(gè)通用口進(jìn)行頻繁的置位、清零。根據基于51指令系統編制的匯編程序,傳送一位數據,需要9個(gè)機器周期,而對于 8051,一個(gè)機器周期要耗費6個(gè)時(shí)鐘周期,即用54個(gè)時(shí)鐘周期才能傳送一位數據。如此則極大地占用了CPU的工作時(shí)間,降低了系統的工作效率,導致I2C器件的優(yōu)勢難以顯現。因此,有必要設計8051與I2C總線(xiàn)的專(zhuān)用接口電路。該接口電路能夠對I2C總線(xiàn)上的數據進(jìn)行自動(dòng)收發(fā),而CPU只需要通過(guò)并口訪(fǎng)問(wèn)該接口電路中的有關(guān)寄存器就可以實(shí)現與I2C器件的數據交換,從而使整個(gè)系統的性能得到提高。本設計用VHDL硬件描述語(yǔ)言為工具,用ALTERA公司的 MAXPLUSⅡ軟件進(jìn)行編譯仿真,下載芯片為EPM7128SLC84-15。

2 設計目標和要求

為了提高數據傳送的速度,設計一個(gè)I2C接口電路。8051不直接與I2C器件交換數據,而是通過(guò)并口與該I2C接口電路交換數據,I2C總線(xiàn)上的數據傳送也通過(guò)該I2C接口電路來(lái)完成。從而通過(guò)CPU的外部存儲器讀寫(xiě)指令就可實(shí)現與I2C器件的數據交換,使對串口的操作用并口的方式來(lái)實(shí)現。

在I2C接口電路內部有一個(gè)控制寄存器CI0和一個(gè)數據寄存器CI1,即I2C接口電路占用兩個(gè)地址。通過(guò)寫(xiě)控制寄存器CI0的內容實(shí)現對I2C接口電路的編程,讀寫(xiě)數據寄存器CI1的內容實(shí)現與I2C器件的數據交換。在CI0中的內容定義了8051對I2C器件進(jìn)行操作的類(lèi)型(讀或寫(xiě))和I2C器件內地址的字節數等信息,使I2C接口電路能夠識別從8051傳來(lái)的數據是地址還是數據、8051將要發(fā)送數據還是接收數據以及數據的長(cháng)度等。

如果8051要發(fā)送數據給I2C器件,則根據I2C總線(xiàn)協(xié)議,在數據CI1接收到第一個(gè)數據后啟動(dòng)I2C總線(xiàn),然后將CI1中的數據進(jìn)行并串轉換后逐位發(fā)出,發(fā)出完畢后設置一個(gè)標志位,使8051知道可以發(fā)送下一個(gè)總線(xiàn)后首先寫(xiě)I2C器件內地址,然后進(jìn)行數據接收,進(jìn)行串并轉換后將接收到的數據裝入CI1中,再設置標志位,使8051知道可以讀出數據。

根據上述設計要求,I2C接口芯片的引腳如圖1所示。其中clk可以使用獨立的時(shí)鐘,使I2C總線(xiàn)的位傳送速度遠高于8051的位操作,從而可使I2C總線(xiàn)的數據傳送接近并口的數據速率;a0是地址信號輸入,a0=0時(shí)進(jìn)行CI0寫(xiě)操作,當a0=1時(shí)進(jìn)行CI1讀/寫(xiě)操作;bz為標志輸出位,bz=0時(shí),8051需要等待,bz=1時(shí)8051可以對CI1操作。

19.gif

I2C接口芯片在系統中的情況如圖2所示。這里8051對I2C接口芯片操作使用了查詢(xún)方式,也可以改用中斷方式。

20.gif

3 接口設計的實(shí)現

3.1 接口設計的內部結構

該芯片的內部結構圖如圖3所示。系統由控制寄存器CI0,數據寄存器CI1,并串轉換,串并轉換,移位寄存器以及I2C控制模塊6部分構成。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 擴展 并行 接口 I2C 單片機

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>