8051單片機的I2C接口并行擴展
發(fā)布時間:2008/9/4 0:00:00 訪問次數(shù):714
摘 要:為提高8051系列單片機i2c總線的工作效率,提高整機工作性能,根據(jù)i2c總線協(xié)議設(shè)計了8051單片機的i2c接口電路。用vhdl語言進行設(shè)計,并用maxplusⅱ進行編譯仿真,下載芯片為有epm7128slc84 -。保。
。薄∫⊙
i2c總線接口器件在視頻處理、移動通信等領(lǐng)域的應(yīng)用已經(jīng)非常普遍。另外,通用的i2c總線接口器件,如帶i2c總線的ram,rom,a/d,d/a,lcd驅(qū)動器等,也越來越多地應(yīng)用于計算機及自動控制系統(tǒng)中。隨著i2c接口器件越來越廣泛的應(yīng)用,8051系列單片機與他之間的通信越來越頻繁。
。福埃担毕盗袉纹瑱C與i2c總線接口器件通信時,8051的通用口與i2c總線器件的scl,sda連接。根據(jù)i2c總線數(shù)據(jù)傳輸協(xié)議,8051必須對其兩個通用口進行頻繁的置位、清零。根據(jù)基于51指令系統(tǒng)編制的匯編程序,傳送一位數(shù)據(jù),需要9個機器周期,而對于8051,一個機器周期要耗費6個時鐘周期,即用54個時鐘周期才能傳送一位數(shù)據(jù)。如此則極大地占用了cpu的工作時間,降低了系統(tǒng)的工作效率,導(dǎo)致i2c器件的優(yōu)勢難以顯現(xiàn)。因此,有必要設(shè)計8051與i2c總線的專用接口電路。該接口電路能夠?qū)Γ椋玻憧偩上的數(shù)據(jù)進行自動收發(fā),而cpu只需要通過并口訪問該接口電路中的有關(guān)寄存器就可以實現(xiàn)與i2c器件的數(shù)據(jù)交換,從而使整個系統(tǒng)的性能得到提高。本設(shè)計用vhdl硬件描述語言為工具,用altera公司的 maxplusⅱ軟件進行編譯仿真,下載芯片為epm7128slc84-15。
。病≡O(shè)計目標(biāo)和要求
為了提高數(shù)據(jù)傳送的速度,設(shè)計一個i2c接口電路。8051不直接與i2c器件交換數(shù)據(jù),而是通過并口與該i2c接口電路交換數(shù)據(jù),i2c總線上的數(shù)據(jù)傳送也通過該i2c接口電路來完成。從而通過cpu的外部存儲器讀寫指令就可實現(xiàn)與i2c器件的數(shù)據(jù)交換,使對串口的操作用并口的方式來實現(xiàn)。
在i2c接口電路內(nèi)部有一個控制寄存器ci0和一個數(shù)據(jù)寄存器ci1,即i2c接口電路占用兩個地址。通過寫控制寄存器ci0的內(nèi)容實現(xiàn)對i2c接口電路的編程,讀寫數(shù)據(jù)寄存器ci1的內(nèi)容實現(xiàn)與i2c器件的數(shù)據(jù)交換。在ci0中的內(nèi)容定義了8051對i2c器件進行操作的類型(讀或?qū)懀┖停椋玻闫骷䞍?nèi)地址的字節(jié)數(shù)等信息,使i2c接口電路能夠識別從8051傳來的數(shù)據(jù)是地址還是數(shù)據(jù)、8051將要發(fā)送數(shù)據(jù)還是接收數(shù)據(jù)以及數(shù)據(jù)的長度等。
如果8051要發(fā)送數(shù)據(jù)給i2c器件,則根據(jù)i2c總線協(xié)議,在數(shù)據(jù)ci1接收到第一個數(shù)據(jù)后啟動i2c總線,然后將ci1中的數(shù)據(jù)進行并串轉(zhuǎn)換后逐位發(fā)出,發(fā)出完畢后設(shè)置一個標(biāo)志位,使8051知道可以發(fā)送下一個總線后首先寫i2c器件內(nèi)地址,然后進行數(shù)據(jù)接收,進行串并轉(zhuǎn)換后將接收到的數(shù)據(jù)裝入ci1中,再設(shè)置標(biāo)志位,使8051知道可以讀出數(shù)據(jù)。
根據(jù)上述設(shè)計要求,i2c接口芯片的引腳如圖1所示。其中clk可以使用獨立的時鐘,使i2c總線的位傳送速度遠高于8051的位操作,從而可使i2c總線的數(shù)據(jù)傳送接近并口的數(shù)據(jù)速率;a0是地址信號輸入,a0=0時進行ci0寫操作,當(dāng)a0=1時進行ci1讀/寫操作;bz為標(biāo)志輸出位,bz=0時,8051需要等待,bz=1時8051可以對ci1操作。
點擊此處查看全部新聞圖片
。椋玻憬涌谛酒谙到y(tǒng)中的情況如圖2所示。這里8051對i2c接口芯片操作使用了查詢方式,也可以改用中斷方式
點擊此處查看全部新聞圖片
。场〔⑿薪涌谠O(shè)計的實現(xiàn)
3.1 接口設(shè)計的內(nèi)部結(jié)構(gòu)
該芯片的內(nèi)部結(jié)構(gòu)圖如圖3所示。系統(tǒng)由控制寄存器ci0,數(shù)據(jù)寄存器ci1,并串轉(zhuǎn)換,串并轉(zhuǎn)換,移位寄存器以及i2c控制模塊6部分構(gòu)成。
3.2 方式控制字
。福埃担毕蚩刂萍拇嫫鳎悖椋皩懣刂谱,實現(xiàn)對i2c接口的編程控制。ci0的控制字格式如下所示:
。幔,a1,a0位:對與8051相連的i2c器件組的片選(器件地址)。對應(yīng)不同值時選擇不同的器件通信。
r/w:用來控制8051對i2c器件的讀寫操作。1表示8051對i2c器件讀數(shù)據(jù);0表示8051對i2c器件寫數(shù)據(jù)。
。恚保恚埃寒(dāng)s=1時的4種工作方式:
①i2c總線未連接,要進行寫操作。
、冢椋玻憧偩未連接,要進行讀操作。
、郏椋玻憧偩已連接,換一個i2c器件或換新地址,要進行寫操作。
、埽椋玻憧偩已連接,換一個i2
摘 要:為提高8051系列單片機i2c總線的工作效率,提高整機工作性能,根據(jù)i2c總線協(xié)議設(shè)計了8051單片機的i2c接口電路。用vhdl語言進行設(shè)計,并用maxplusⅱ進行編譯仿真,下載芯片為有epm7128slc84。。保。
。薄∫⊙
。椋玻憧偩接口器件在視頻處理、移動通信等領(lǐng)域的應(yīng)用已經(jīng)非常普遍。另外,通用的i2c總線接口器件,如帶i2c總線的ram,rom,a/d,d/a,lcd驅(qū)動器等,也越來越多地應(yīng)用于計算機及自動控制系統(tǒng)中。隨著i2c接口器件越來越廣泛的應(yīng)用,8051系列單片機與他之間的通信越來越頻繁。
8051系列單片機與i2c總線接口器件通信時,8051的通用口與i2c總線器件的scl,sda連接。根據(jù)i2c總線數(shù)據(jù)傳輸協(xié)議,8051必須對其兩個通用口進行頻繁的置位、清零。根據(jù)基于51指令系統(tǒng)編制的匯編程序,傳送一位數(shù)據(jù),需要9個機器周期,而對于8051,一個機器周期要耗費6個時鐘周期,即用54個時鐘周期才能傳送一位數(shù)據(jù)。如此則極大地占用了cpu的工作時間,降低了系統(tǒng)的工作效率,導(dǎo)致i2c器件的優(yōu)勢難以顯現(xiàn)。因此,有必要設(shè)計8051與i2c總線的專用接口電路。該接口電路能夠?qū)Γ椋玻憧偩上的數(shù)據(jù)進行自動收發(fā),而cpu只需要通過并口訪問該接口電路中的有關(guān)寄存器就可以實現(xiàn)與i2c器件的數(shù)據(jù)交換,從而使整個系統(tǒng)的性能得到提高。本設(shè)計用vhdl硬件描述語言為工具,用altera公司的。恚幔穑欤酰螈④浖M行編譯仿真,下載芯片為epm7128slc84-15。
。病≡O(shè)計目標(biāo)和要求
為了提高數(shù)據(jù)傳送的速度,設(shè)計一個i2c接口電路。8051不直接與i2c器件交換數(shù)據(jù),而是通過并口與該i2c接口電路交換數(shù)據(jù),i2c總線上的數(shù)據(jù)傳送也通過該i2c接口電路來完成。從而通過cpu的外部存儲器讀寫指令就可實現(xiàn)與i2c器件的數(shù)據(jù)交換,使對串口的操作用并口的方式來實現(xiàn)。
在i2c接口電路內(nèi)部有一個控制寄存器ci0和一個數(shù)據(jù)寄存器ci1,即i2c接口電路占用兩個地址。通過寫控制寄存器ci0的內(nèi)容實現(xiàn)對i2c接口電路的編程,讀寫數(shù)據(jù)寄存器ci1的內(nèi)容實現(xiàn)與i2c器件的數(shù)據(jù)交換。在ci0中的內(nèi)容定義了8051對i2c器件進行操作的類型(讀或?qū)懀┖停椋玻闫骷䞍?nèi)地址的字節(jié)數(shù)等信息,使i2c接口電路能夠識別從8051傳來的數(shù)據(jù)是地址還是數(shù)據(jù)、8051將要發(fā)送數(shù)據(jù)還是接收數(shù)據(jù)以及數(shù)據(jù)的長度等。
如果8051要發(fā)送數(shù)據(jù)給i2c器件,則根據(jù)i2c總線協(xié)議,在數(shù)據(jù)ci1接收到第一個數(shù)據(jù)后啟動i2c總線,然后將ci1中的數(shù)據(jù)進行并串轉(zhuǎn)換后逐位發(fā)出,發(fā)出完畢后設(shè)置一個標(biāo)志位,使8051知道可以發(fā)送下一個總線后首先寫i2c器件內(nèi)地址,然后進行數(shù)據(jù)接收,進行串并轉(zhuǎn)換后將接收到的數(shù)據(jù)裝入ci1中,再設(shè)置標(biāo)志位,使8051知道可以讀出數(shù)據(jù)。
根據(jù)上述設(shè)計要求,i2c接口芯片的引腳如圖1所示。其中clk可以使用獨立的時鐘,使i2c總線的位傳送速度遠高于8051的位操作,從而可使i2c總線的數(shù)據(jù)傳送接近并口的數(shù)據(jù)速率;a0是地址信號輸入,a0=0時進行ci0寫操作,當(dāng)a0=1時進行ci1讀/寫操作;bz為標(biāo)志輸出位,bz=0時,8051需要等待,bz=1時8051可以對ci1操作。
點擊此處查看全部新聞圖片
。椋玻憬涌谛酒谙到y(tǒng)中的情況如圖2所示。這里8051對i2c接口芯片操作使用了查詢方式,也可以改用中斷方式
點擊此處查看全部新聞圖片
。场〔⑿薪涌谠O(shè)計的實現(xiàn)
3.1 接口設(shè)計的內(nèi)部結(jié)構(gòu)
該芯片的內(nèi)部結(jié)構(gòu)圖如圖3所示。系統(tǒng)由控制寄存器ci0,數(shù)據(jù)寄存器ci1,并串轉(zhuǎn)換,串并轉(zhuǎn)換,移位寄存器以及i2c控制模塊6部分構(gòu)成。
。常病》绞娇刂谱
8051向控制寄存器ci0寫控制字,實現(xiàn)對i2c接口的編程控制。ci0的控制字格式如下所示:
。幔玻幔保幔拔唬簩εc8051相連的i2c器件組的片選(器件地址)。對應(yīng)不同值時選擇不同的器件通信。
。颍鳎河脕砜刂疲福埃担睂Γ椋玻闫骷淖x寫操作。1表示8051對i2c器件讀數(shù)據(jù);0表示8051對i2c器件寫數(shù)據(jù)。
。恚保恚埃寒(dāng)s=1時的4種工作方式:
、伲椋玻憧偩未連接,要進行寫操作。
、冢椋玻憧偩未連接,要進行讀操作。
、郏椋玻憧偩已連接,換一個i2c器件或換新地址,要進行寫操作。
、埽椋玻憧偩已連接,換一個i2
熱門點擊
- 單片機簡介與單片機的發(fā)展歷史
- 基于控制專用單片機的無刷直流電機控制器
- 采用混合信號高電壓單片機實現(xiàn)LED降壓-升壓
- MCS-51單片機的指令時序
- MCS51系列單片機軟件復(fù)位的方法
- MSP430單片機與nRF905無線通信系統(tǒng)
- 小型單片機系統(tǒng)延時關(guān)機電路
- 單片機通用模擬串口C程序
- 8051單片機的I2C接口并行擴展
- 單片機應(yīng)用領(lǐng)域
推薦技術(shù)資料
- 硬盤式MP3播放器終級改
- 一次偶然的機會我結(jié)識了NE0 2511,那是一個遠方的... [詳細]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車用精準定位
- 高效先進封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究