單片機原理及接口技術 課件 第十章 IIC通信協(xié)議與典型電路應用_第1頁
單片機原理及接口技術 課件 第十章 IIC通信協(xié)議與典型電路應用_第2頁
單片機原理及接口技術 課件 第十章 IIC通信協(xié)議與典型電路應用_第3頁
單片機原理及接口技術 課件 第十章 IIC通信協(xié)議與典型電路應用_第4頁
單片機原理及接口技術 課件 第十章 IIC通信協(xié)議與典型電路應用_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單原及接片理口技術機12第十章IIC通信協(xié)議與典型電路應用01IIC時序初步認識02IIC通信協(xié)議AT24C02芯片03AT24C02芯片與單片機通信的典型示例04利用PCF8574芯片擴展I/O端口PrincipleandinterfacetechnologyofMicrocomputer05習題IIC通信協(xié)議與典型電路應用單片機常用通信協(xié)議中,IIC通信協(xié)議是常用協(xié)議之一。該通信總線是由PHILIPS公司開發(fā)的兩線式串行總線,常用于連接微處理器及其外圍芯片。IIC總線的主要特點是接口方式簡單,只需兩條線可掛載多個參與通信的器件,即多機模式,并且任何一個器件都可以作為主機用來發(fā)布指令和數據。從原理上來講,以前學過的UART屬于異步通信,比如電腦發(fā)送給單片機,電腦只負責把數據通過TXD發(fā)送出來即可,接收數據是由單片機負責的事情。而IIC屬于同步通信,在IIC通信總線中,SCL時鐘總線負責收發(fā)時鐘節(jié)拍,SDA數據總線負責傳輸數據。IIC的發(fā)送方和接收方都要以SCL這個時鐘節(jié)拍為基準進行數據的發(fā)送和接收。從應用上來講,串行UART通信多用于板間通信,比如單片機和電腦,這個設備和另外一個設備之間的通信。IIC多用于板內通信,比如單片機和板載芯片之間的通信。01IIC時序初步認識IIC時序概述IIC(inter-Integratedcircuit),兩線式串行總線,用于MCU和外設間的通信。在硬件上,IIC總線由時鐘總線SCL和數據總線SDA兩條總線構成,以半雙工方式實現MCU和外設之間數據傳輸,速度可達400kbps,連接到總線上的所有器件的時鐘總線SCL都連到一起,所有數據總線SDA連到一起。IIC總線是開漏并聯(lián)的結構,外部要添加上拉電阻。對于開漏電路外部加上拉電阻,就組成了線“與”的關系??偩€上線“與”的關系意義是指,所有接入的器件該條總線保持高電平,這條線才是高電平,但是其中任何一個器件輸出低電平,那這條線就會保持低電平,因此可以做到任何一個器件都可以拉低電平,這樣也就說明任何一個器件都可以作為主機。絕大多數情況下我們都是用單片機來做主機,通過IIC總線掛載多個器件,其中每一個都像門牌一樣有自己唯一的地址,在信息傳輸的過程中,通過這個地址就可以正常識別到屬于自己的信息。如圖10-1所示,掛載多個IIC從機的示意圖。1.1IIC時序協(xié)議過去章節(jié)介紹UART串行通信的時候,說明了通信流程分為起始位、數據位、停止位這三部分,同理在IIC中也有起始信號、數據傳輸和停止信號的定義,如圖10-2所示。1.2從圖上可以看出來,IIC和UART時序流程類似,同時也有區(qū)別。UART每一個字節(jié)中,都有一個起始位、8個數據位、1位停止位。而IIC分為起始信號、傳輸信號、停止信號。其中傳輸信號部分,可以單次傳輸很多個字節(jié),字節(jié)數是不受限制的,而每個字節(jié)的數據最后也跟一個應答位,通常用ACK表示,相當于UART的停止位。下面把IIC通信時序進行具體分析。之前我們已經學過了串行UART,大家心里有了傳輸的概念,因此學習IIC的過程以UART來作比較,有助于理解。在UART通信過程中,雖然用了TXD和RXD兩根線,但是實際使用中,一條線就可以完成,兩根線是把發(fā)送和接收分開而已,但是IIC每次通信,不管是發(fā)送還是接收,必須兩根線都參與工作才能完成,為了更方便的看出來每一位的傳輸流程,下面把IIC的數據傳輸過程分離出來。1、數據有效性規(guī)定IIC總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩(wěn)定,只有在時鐘線上的信號為低電平期間,數據線上的高電平或低電平狀態(tài)才允許變化。如圖10-3所示。2、起始和終止信號SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號;SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。如圖10-4所示是IIC起始和終止信號示意圖。起始和終止信號都是由主機發(fā)出的,在起始信號產生后,總線就處于被占用的狀態(tài);在終止信號產生后,總線就處于空閑狀態(tài)。連接到IIC總線上的器件,若具有IIC總線的硬件接口,則很容易檢測到起始和終止信號。接收器件收到一個完整的數據字節(jié)后,有可能需要完成一些其它工作,如處理內部中斷服務等,可能無法立刻接收下一個字節(jié),這時接收器件可以將SCL線拉成低電平,從而使主機處于等待狀態(tài)。直到接收器件準備好接收下一個字節(jié)時,再釋放SCL線使之為高電平,從而使數據傳送可以繼續(xù)進行。3、數據應答格式每當主機向從機發(fā)送完一個字節(jié)的數據,主機總是需要等待從機給出一個應答信號,以確認從機是否成功接收到了數據,從機應答主機所需要的時鐘仍是主機提供的,應答出現在每一次主機完成8個數據位傳輸后緊跟著的時鐘周期,低電平0表示應答,1表示非應答,如圖10-5所示。4、數據幀格式IIC總線上傳送的數據信號是廣義的,既包括地址信號,又包括真正的數據信號。在起始信號后必須傳送一個從機的地址(7位),第8位是數據的傳送方向位(R/T),用“0”表示主機發(fā)送數據(T),“1”表示主機接收數據(R)。{這里小編在驅動MPU6050模塊的時候,就犯過這樣的錯誤,它寫的MPU6050從機地址是0x68,因為發(fā)送從機地址的時候,要加一位讀寫方向位,因為剛開始應該是向這個MPU6050里寫從機里某個寄存器的地址,所以應該是7位地址0x68(1101000)+二進制位0=11010000)也就是0xD0,表示要向該IIC設備里寫東西,然后再緊接著寫入IIC設備里的寄存器地址,而我直接寫入了0x68,導致出錯},每次數據傳送總是由主機產生的終止信號結束。但是,若主機希望繼續(xù)占用總線進行新的數據傳送,則可以不產生終止信號,馬上再次發(fā)出起始信號對另一從機進行尋址。在總線的一次數據傳輸過程中,可以有以下幾種組合方式:1、主機向從機發(fā)送數據,數據傳送方向在整個傳輸過程中不發(fā)生改變。具體傳輸過程如圖10-6所示。其中有陰影部分表示數據由主機向從機傳送,無陰影部分則表示數據由從機向主機傳送。A表示應答(低電平),A非表示非應答(高電平)。S表示起始信號,P表示終止信號。2、主機在第一個字節(jié)后,立即從從機讀數據,傳輸數據格式如圖10-7所示。在傳送過程中,當需要改變傳送方向時,起始信號和從機地址都被重復產生一次,但兩次讀/寫方向位正好反相,反相的數據傳輸格式如圖10-8所示。單片機模擬IIC時序信號代碼51單片機I/O端口不具有IIC數據傳輸功能,因此我們采取通過軟件對電平的高低操作來實現IIC數據傳輸。下面是起始信號檢測、終止信號檢測、應答信號、非應答信號、等待應答信號、接收一個字節(jié)和讀取一個字節(jié)的基本代碼指令。1.3IIC通信協(xié)議AT24C02芯片02AT24C02芯片概述2.1AT24C02是一個2K位串行CMOSEEPROM芯片,該芯片內部含有256個8位字節(jié)。有一個8字節(jié)頁寫入緩沖器。器件通過IIC總線接口進行操作,可工作在低電壓低功耗模式下,常應用于工業(yè)或者商業(yè)場景中,封裝形式一般為:PDIP、SOIC、MAP、SSOP,圖10-9是PDIP封裝形式。AT24C02芯片特性:1、可工作于低電壓和低功耗模式下;2、兩線串行接口,簡便連接方式;3、雙向數據可同時傳輸;4、高可靠性:一百萬次讀寫操作,數據保存長達100年;5、滿足工業(yè)級和高溫高濕要求。AT24C02引腳分配和參數工作表:尋址引腳(A0、A1和A2):A0、A1和A2引腳用于多器件之間的尋址操作,將這些輸入引腳上的電平與從器件地址中的相應位做比較,如果比較結果為“真”,則該器件被選中,地址尋址工作完成。在本章節(jié)講述實驗中,片選信號地址輸入引腳A0、A1和A2被直接接到邏輯0(也就是接地)上,直接由單片機控制其應用,尋址功能并沒有使用,但是如果有多個器件,該功能被正確使用即可達到尋址的目的和效果。數據引腳(SDA):串行數據引腳為雙向引腳,用于把地址和數據輸入/輸出器件,該引腳為漏極開路電路,需要外接上拉電阻。AT24C02總線工作原理:IIC總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩(wěn)定,只有在時鐘線上的信號為低電平期間,數據線上的高電平或低電平狀態(tài)才允許變化。下面按照芯片使用邏輯將AT24C02起始和終止信號、數據傳送信號的總線工作原理總結如下:起始和終止信號:SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號;SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。數據傳送信號:每一個字節(jié)必須保證是8位長度。數據傳送時,先傳送最高位(MSB),每一個被傳送的字節(jié)后面都必須跟隨一位應答位(即一幀共有9位)。如果一段時間內沒有收到從機的應答信號,則自動認為從機已正確接收到數據。AT24C02芯片與單片機通信的典型示例03項目要求:利用單片機(示例型號AT89C51)的P1、P2和P3端口分別與按鍵部分(獨立按鍵S),顯示部分(LCD1602)和IIC協(xié)議存儲芯片(AT24C02)連接,最終在LCD1602顯示對按鍵計數的程序,在這個項目中,既能學習對AT24C02的存儲、讀取過程,又能熟悉P3端口的工作模式。項目仿真和電路圖設計3.1通過Proteus繪制項目電路圖,并且通過該軟件能夠制作PCB板的功能,實現電路的設計、仿真和實現,Proteus仿真電路圖如圖10-12所示。利用Proteus繪制基于AT24C02對按鍵計數項目有以下器件:LM016L:2行16列液晶(EN三個控制端口(共14線),工作電壓為5V。無背光,可顯示2行16列英文字符,有8位數據總線D0-D7);AT24C02:2K串行CMOSE2PROM芯片;BUTTON(S):獨立按鍵;項目軟件設計3.2根據本章主要內容是對2K串行CMOSE2PROM芯片使用的IIC通信協(xié)議進行詳細講解,而本程序中涉及到的定時計數器、LCD1602和串行數據傳輸等功能程序已經在前序章節(jié)介紹,所以在本次程序講解過程中不詳解,請主要關注的是如何利用單片機IO端口高低電平變化而模擬IIC通信協(xié)議傳輸的效果。實驗完成需要補充的是,51單片機內部是不具備IIC硬件模塊的,所有51單片機都是通過對IO端口高低電平變化的控制模擬IIC通訊協(xié)議。當然,使用IO口高低電平變換模擬IIC,更有利于徹底理解透徹IIC通信的實質。今后,如果使用到內部自帶IIC模塊的單片機(例如STM32),學習IIC通訊協(xié)議會更輕松,使用內部的硬件模塊,可以提高程序的執(zhí)行效率。利用PCF8574芯片擴展I/O端口04PCF8574芯片概述4.1PCF8574是CMOS電路。它通過兩條雙向總線(IIC)可使51單片機實現I/O口擴展。該器件包含一個8位準雙向口和一個IIC總線接口。PCF8574電流消耗很低,且I/O口輸出鎖存具有大電流驅動能力,可直接驅動LED。它還帶有一條中斷接線(INT)可與MCU的中斷邏輯相連。通過INT發(fā)送中斷信號,遠端I/O口不必經過IIC總線通信就可通知MCU是否有數據從端口輸入。這意味著PCF8574可以作為一個單被控器。PCF8574芯片具有以下特性:操作電壓2.5-6.0V;低備用電流(≤10μA);IIC并行口擴展電路開漏中斷輸出IIC總線實現8位遠程I/O口與大多數MCU兼容輸出鎖存具有大電流驅動能力,可直接驅動LED通過3個硬件地址引腳可尋址8個器件(PCF8574A可多達16個)DIP16,SO16或SSOP20形式封裝PCF8574芯片封裝格式如圖10-13所示。利用PCF8574芯片實現驅動LCD項目4.2液晶顯示一般用到4根或者是8根的數據線,這樣的方式會占用較多的I/O口,影響51單片機的使用。PCF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論