常用總線、通信接口(65)課件_第1頁
常用總線、通信接口(65)課件_第2頁
常用總線、通信接口(65)課件_第3頁
常用總線、通信接口(65)課件_第4頁
常用總線、通信接口(65)課件_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

3.9常用總線、通信接口數據通信的基本方式可分為并行通信與串行通信兩種:并行通信:是指利用多條數據傳輸線將一個數據的各位

同時傳送。

特點:是傳輸速度快,適用于短距離通信。串行通信:是指利用一條傳輸線將數據一位位地順序

傳送。

特點:是通信線路簡單,利用電話或電報線路就可

實現通信,降低成本,適用于遠距離通信,

但傳輸速度慢。12/13/202213.9常用總線、通信接口數據通信的基本方式可分為并行通串行通信:分為同步通信(SYNC)與異步通信(ASYNC)兩種方式。(實際通信中,沒有絕對的“異步”或“同步”,只是按不同的程度上“同步”。)異步通信:一個字節(jié)內同步,而字節(jié)之間“不同步”,

稱之為“異步”。同步通信:大于一個字節(jié)的“幀數據”或“塊數據”內

同步,稱之為“幀同步”或“塊同步”。稱

之為“同步”。(這時實際上“幀數據”

或“塊數據”之間也是“異步”)12/13/20222串行通信:分為同步通信(SYNC)與異步通信(ASYNC)兩異步通信字符格式:規(guī)定有起始位、數據位、奇偶校驗位、停止位等波特率:是衡量數據傳送速率的指標(bps)。12/13/20223異步通信12/11/20223數據傳送方向單工方式只允許數據按照一個固定的方向傳送半雙工方式每次只能有一個站發(fā)送,另一個站接收全雙工方式允許通信雙方同時進行發(fā)送和接收12/13/20224數據傳送方向12/11/20224串行通信的基本特征是數據逐位順序進行傳送串行通信的格式及約定(如:同步方式、通訊速率、數據塊格式、信號電平……等)不同,形成了多種串行通信的協議與接口標準。常見的有:?通用異步收發(fā)器(UART)——本課程介紹的串口?通用串行總線(USB)單總線(1-Wire)?I2C總線?CAN總線?SPI總線?1394?RS-485,RS-232C,RS422A標準……等等12/13/20225串行通信的基本特征是數據逐位順序進行傳送12/11/2022SPI、I2C、1-Wire、RS232是目前單片機應用系統(tǒng)中最常用的幾個串行總線接口。與并行擴展總線相比,串行擴展總線能夠最大程度發(fā)揮最小系統(tǒng)的資源功能、簡化連接線路,縮小電路板面積、擴展性好,可簡化系統(tǒng)設計。串行總線的缺點是數據吞吐容量小,信號傳輸較慢。但隨著CPU芯片工作頻率的提高,以及串行總線的功能增強,這些缺點將逐步淡化。12/13/20226SPI、I2C、1-Wire、RS232是目前單片機應用系統(tǒng)3.9.1I2C總線I2C(InterIntegratedCircuit)常譯為內部集成電路總線,或集成電路間總線,它是由Philips公司推出的芯片間串行傳輸總線。使用2線實現數據通信。 1根串行數據線(SDA) 1根串行時鐘線(SCL)。12/13/202273.9.1I2C總線I2C(InterIntegra1.I2C總線的基本特性硬件結構上具有相同的硬件接口界面。12/13/202281.I2C總線的基本特性硬件結構上具有相同的硬件接口界面??偩€接口器件地址具有很大的獨立性。在單主系統(tǒng)中,每個I2C接口芯片具有唯一的器件地址,各從器件之間互不干擾,相互之間不能進行通信。MCU與I2C器件之間的通信是通過獨一無二的器件地址來實現的。數據傳輸首先從最高位開始。傳輸速率在標準模式下可達100kbit/s,在快速模式下達400kbit/s,在高速模式下達3.4Mbit/s。它是一個真正的多主機總線。如果兩個或更多主機同時初始化數據傳輸,可以通過沖突檢測和仲裁防止數據被破壞。軟件操作的一致性。任何器件通過I2C總線與MCU進行數據傳送的方式基本一樣,決定了I2C總線軟件編寫的一致性。數據線SDA/時鐘線SCL(接上拉電阻)

12/13/20229總線接口器件地址具有很大的獨立性。在單主系統(tǒng)中,每個I2C接2.I2C總線工作原理

(1)I2C總線信號類型開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。結束信號:SCL為低電平時,SDA由低電平向高電平跳變,結束傳送數據。應答信號:接收數據的器件在接收到8bit數據后,向發(fā)送數據的器件(發(fā)送器)發(fā)出特定的低電平脈沖,表示已收到數據。發(fā)送器接收到應答信號后,根據實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應答信號,由判斷為接收器出現故障。數據只能在SCL為低電平時才能改變,SCL為高電平時SDA須穩(wěn)定。起始信號與結束信號都是由主器件產生。12/13/2022102.I2C總線工作原理(1)I2C總線信號類型12/11/12/13/20221112/11/202211(2)I2C總線數據傳輸

主器件和從器件都可以工作于接收和發(fā)送狀態(tài)??偩€必須由主器件(通常為單片機)控制,主器件產生串行時鐘控制總線的傳輸方向,并產生起始和停止條件。在起始信號結束后,主器件將發(fā)送一個用于選擇從器件地址的7位地址碼和一個數據方向位(R/W),方向位為“0”表示主器件把數據寫到所選擇的從器件中,此時主器件作為發(fā)送器,而從器件作為接收器;方向位為“1”表示主器件從所選擇的從器件中讀取數據,此時主器件作為接收器,而從器件作為發(fā)送器。在尋址字節(jié)后是按指定讀、寫操作的數據字節(jié)與應答位。在數據傳送完成后主器件必須發(fā)送停止信號。12/13/202212(2)I2C總線數據傳輸主器件和從器件都可以工作于接收和發(fā)在51上用P1口模擬I2C(c語言)/*電平模擬函數和基本讀寫函數voidIIC_Start(void);voidIIC_Stop(void);voidSEND_0(void);voidSEND_1(void);bitCheck_Acknowledge(void);voidWrite_Byte(ucharb);bitWrite_N_Bytes(uchar*buffer,ucharn);bitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer);ucharRead_Byte(void);*/12/13/202213在51上用P1口模擬I2C(c語言)/*電平模擬函數和#include<string.h>#include<reg52.h>#include<intrins.h>#include"aiic_51.h"sbitSCL=P1^6;sbitSDA=P1^7;voidDELAY(uintt){while(t!=0)t--;}12/13/202214#include<string.h>12/11/20221voidIIC_Start(void){//啟動I2C總線的函數,當SCL為高電平時使SDA產生一個負跳變SDA=1;SCL=1;DELAY(DELAY_TIME);SDA=0;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}12/13/202215voidIIC_Start(void)12/11/202voidIIC_Stop(void){//終止I2C總線,當SCL為高電平時使SDA產生一個正跳變SDA=0;SCL=1;DELAY(DELAY_TIME);SDA=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}12/13/202216voidIIC_Stop(void)12/11/2022voidSEND_0(void){//發(fā)送0,在SCL為低電平時使SDA信號變?yōu)榈蚐CL=0;SDA=0;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidSEND_1(void){//發(fā)送1,在SCL為低電平時使SDA信號變?yōu)楦逽CL=0;SDA=1;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}12/13/202217voidSEND_0(void)12/11/202217bitCheck_Acknowledge(void){//發(fā)送完一個字節(jié)后檢驗設備的應答信號SDA=1;SCL=1;DELAY(DELAY_TIME/2);F0=SDA;DELAY(DELAY_TIME/2);SCL=0;DELAY(DELAY_TIME);if(F0==1)returnFALSE;returnTRUE;}12/13/202218bitCheck_Acknowledge(void)12voidWrite_Byte(ucharb){//向IIC總線寫一個字節(jié)uchari;for(i=0;i<8;i++)if((b<<i)&0x80)SEND_1();elseSEND_0();}12/13/202219voidWrite_Byte(ucharb)12/11bitWrite_N_Bytes(uchar*buffer,ucharn){//向I2C總線寫n個字節(jié)uchari;IIC_Start();for(i=0;i<n;i++) { Write_Byte(buffer[i]); if(!Check_Acknowledge()) { IIC_Stop(); return(i==n); } }IIC_Stop();returnTRUE;}12/13/202220bitWrite_N_Bytes(uchar*buffeucharRead_Byte(void)reentrant{//從I2C總線讀一個字節(jié)ucharb=0,i;for(i=0;i<8;i++) { SDA=1;//釋放總線 SCL=1;//接受數據 DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0==1) { b=b<<1; b=b|0x01; } else b=b<<1; }returnb;}12/13/202221ucharRead_Byte(void)reentrantbitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer){//從I2C總線讀n個字節(jié)uchari;IIC_Start();Write_Byte(SlaveAdr);//向總線發(fā)送接收器地址if(!Check_Acknowledge())//等待接收器應答信號returnFALSE;for(i=0;i<n;i++) { buffer[i]=Read_Byte(); if(i!=n) SEND_0();//發(fā)送應答 else SEND_1();//發(fā)送非應答 }IIC_Stop();returnTRUE;}12/13/202222bitRead_N_Bytes(ucharSlaveAdIIC例:12/13/202223IIC例:12/11/20222312/13/20222412/11/20222412/13/20222512/11/20222512/13/20222612/11/20222612/13/20222712/11/20222712/13/20222812/11/20222812/13/20222912/11/20222912/13/20223012/11/20223012/13/20223112/11/20223112/13/20223212/11/20223212/13/20223312/11/20223312/13/20223412/11/20223412/13/20223512/11/20223512/13/20223612/11/20223612/13/20223712/11/20223712/13/20223812/11/20223812/13/20223912/11/2022391.SPI總線的特點(串行外圍設備接口:serialperipheralinterface)一般使用4條線

串行時鐘線(SCK) 主機輸入/從機輸出數據線MISO 主機輸出/從機輸入數據線MOSI 低電平有效的從機選擇線SSSPI總線技術是Motorola公司推出的一種同步串行接口

3.9.2SPI串行總線12/13/2022401.SPI總線的特點3.9.2SPI串行總線12/11/2.SPI總線系統(tǒng)的構成單片機與多個SPI串行接口設備典型結構如圖6.1所示。12/13/2022412.SPI總線系統(tǒng)的構成單片機與多個SPI串行接口設備典型結3.SPI串行總線在MCS-51系列單片機中的實現

MCS-51單片機I/O口模擬SPI總線接口原理圖如圖6.2所示。12/13/2022423.SPI串行總線在MCS-51系列單片機中的實現MCS-單片機,如Motorola公司的M68HC08系列、Cygnal公司的C8051F0XX系列、Philips公司的P89LPC93X系列。A/D和D/A轉換器,如:AD公司的AD7811/12、TI公司的TLC1543、TLC2543、TLC5615等。實時時鐘RTC,如Dallas公司的DS1302/05/06等。溫度傳感器,如AD公司的AD7816/17/18;NS公司的LM74等。其他設備,如LED控制驅動器MAX7219、HD7279等,集成看門狗、電壓監(jiān)控、E2PROM等功能的X5045等。4.常用SPI串行總線接口的器件12/13/2022434.常用SPI串行總線接口的器件12/11/202243SPI例:串行專用鍵盤/顯示器接口芯片HD72791.HD7279的主要特點 ⑴與CPU間采用串行接口方式,僅占用4根口線; ⑵內部含有譯碼器,可直接接收BCD碼或16進制碼,同時具有兩種譯碼方式,實現LED數碼管位尋址和段尋址,消隱和閃爍屬性等多種控制指令,編程靈活; ⑶循環(huán)左移和循環(huán)右移指令; ⑷內部含有驅動器,無需外圍元件可直接驅動LED ⑸具有級聯功能,可方便的實現多于8位顯示或多于64鍵的鍵盤接口; ⑹具有自動消除抖動并識別按鍵鍵值的功能。 12/13/202244SPI例:串行專用鍵盤/顯示器接口芯片HD72791.HD72.HD7279的引腳說明DIG0~DIG7:8個LED管的位驅動輸出端。SA~SG:LED數碼管的A段~G段的輸出端。DP為小數點的驅動輸出端。:片選信號。DATA:串行數據輸入/輸出端。CLK:數據串行傳送的同步時鐘輸入端。KEY:按鍵信號輸出端。RC:連接HD7279的外接振蕩元件,其典型值為R=1.5kΩ,C=15pF。:復位端。CLKO:振蕩輸出端VDD:正電源(+5V)VSS:接地12/13/2022452.HD7279的引腳說明DIG0~DIG7:8個LED3.HD7279的控制與實現 HD7279的控制指令由6條純指令、7條帶數據指令和1條讀鍵盤指令組成。1)純指令 (1)復位(清除)指令(A4H)

該指令將所有的顯示清除,所有設置的字符消隱、閃爍等屬性也被一起清除。執(zhí)行該指令后,芯片所處的狀態(tài)與系統(tǒng)上電后所處的狀態(tài)一樣。

D7D6D5D4D3D2D1D01010010012/13/2022463.HD7279的控制與實現 HD7279的控制指令由6(2)測試指令(BFH)

該指令使所有的LED全部點亮,并處于閃爍狀態(tài),主要用于測試。(3)左移指令(A1H)

該指令使所有的顯示自右向左(從第1位向第8位)移動一位(包括處于消隱狀態(tài)的顯示位),但對各位所設置的消隱及閃爍屬性不變。移動后,最右邊一位為空(無顯示)。D7D6D5D4D3D2D1D010111111D7D6D5D4D3D2D1D01010000112/13/202247(2)測試指令(BFH)D7D6D5D4D3D2D1D010(4)右移指令(A0H)

(5)循環(huán)左移指令(A3H)

該指令與左移指令類似,不同之處在于移動后原最左邊一位(第8位)的內容顯示于最右位(第1位)。D7D6D5D4D3D2D1D010100000D7D6D5D4D3D2D1D010100011(6)循環(huán)右移指令(A2H)該指令與循環(huán)左移指令類似,但移動方向相反。

D7D6D5D4D3D2D1D01010001012/13/202248(4)右移指令(A0H)D7D6D5D4D3D2D1D012)帶數據的指令 帶數據指令均由雙字節(jié)組成,第1字節(jié)為指令標志碼(有的還含有位地址),第2字節(jié)為顯示內容。(1)按方式0譯碼顯示指令

命令由二個字節(jié)組成,前半部分為指令,其中a2、a1、a0為LED數碼管的位地址,即顯示數據是送給哪一位LED的。具體分配如表6.6所列。指令中的d3~d0為顯示數據,收到此指令時,HD7279按表6.7規(guī)則(譯碼方式0)進行譯碼和顯示。小數點的顯示由DP位控制,DP=1時,小數點顯示,DP=0時,小數點不顯示。指令中的XXX為無影響位。位D7D6D5D4D3D2D1D0十六進制碼指令碼10000a2a1a080H~87H數據碼DPXXXd3d2d1d012/13/2022492)帶數據的指令 帶數據指令均由雙字節(jié)組成,第1字節(jié)為指令LED位地址譯碼表a2a1a0LED顯示位000LED1001LED2010LED3011LED4100LED5101LED6110LED7111LED812/13/202250LED位地址譯碼表a2a1a0LED顯示位000LED100方式0譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字00H008H801H109H902H20AH—03H30BHE04H40CHH05H50DHL06H60EHP07H70FH空(無顯示)12/13/202251方式0譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字(2)按方式1譯碼顯示指令 此指令與上一條指令基本相同,所不同的是譯碼方式。方式1情況下,LED顯示的內容與十六進制相對應,該指令的譯碼規(guī)則見表(譯碼方式1)。a2、a1、a0位地址譯碼見表。位D7D6D5D4D3D2D1D0十六進制碼指令碼11001a2a1a0C8H~CFH數據碼DPXXXd3d2d1d012/13/202252(2)按方式1譯碼顯示指令 此指令與上一條指令基本相同,方式1譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字00H008H801H109H902H20AHA03H30BHB04H40CHC05H50DHD06H60EHE07H70FHF12/13/202253方式1譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字(3)不譯碼顯示指令(方式2) 其中a2,a1,a0為位地址,位地址譯碼見表。第2字節(jié)仍為LED顯示的內容,其中A-G和DP為顯示數據,分別對應LED數碼管的各段和小數點,當取值為“1”時,該段點亮;取值為“0”時,該段熄滅。位D7D6D5D4D3D2D1D0十六進制碼指令碼10010a2a1a090H~9FH數據碼DPABCDEFG12/13/202254(3)不譯碼顯示指令(方式2) 其中a2,a1,a0為位(4)閃爍控制指令 此命令控制各個數碼管的閃爍屬性。d0~d7分別對應LED1~LED8數碼管,當取值為1時,LED不閃爍;取值為0時,LED閃爍。開機后,缺省的狀態(tài)為各位均不閃爍。位D7D6D5D4D3D2D1D0十六進制碼指令碼1000100088H數據碼d7d6d5d4d3d2d1d012/13/202255(4)閃爍控制指令 此命令控制各個數碼管的閃爍屬性。d0~(5)消隱控制指令

此命令控制各個數碼管的消隱屬性。d0~d7分別對應LED1~LED8數碼管,當取值為“1”時,LED顯示;取值為“0”時,LED消隱。位D7D6D5D4D3D2D1D0十六進制碼指令碼1001100098H數據碼d7d6d5d4d3d2d1d012/13/202256(5)消隱控制指令 此命令控制各個數碼管的消隱屬性。d0~(6)段點亮指令位D7D6D5D4D3D2D1D0十六進制碼指令碼11100000E0H數據碼XXd5d4d3d2d1d0該指令的作用是點亮某個數碼管中某一指定的段,或64個LED矩陣中某一指定的LED。d5~d0為段地址,范圍從00H~3FH,

12/13/202257(6)段點亮指令位D7D6D5D4D3D2D1D0十六進制 該指令作用為關閉(熄滅)數碼管中的某一段,d5~d0為段地址,范圍從00H~3FH,作用與段點亮指令相同,僅將點亮段改為關閉段。(7)段關閉指令位D7D6D5D4D3D2D1D0十六進制碼指令碼11000000C0H數據碼d7d6d5d4d3d2d1d012/13/202258 該指令作用為關閉(熄滅)數碼管中的某一段,d5~d0為段地3)讀鍵盤數據指令 該指令從HD7279讀出當前的按鍵代碼。與其它指令不同,此命令的前一個字節(jié)15H為單片機傳送到HD7279的指令,而后一個字節(jié)d7~d0則為HD7279返回的按鍵代碼,其范圍是00H~3FH(無鍵按下時為0xFF)。。位D7D6D5D4D3D2D1D0十六進制碼指令碼0001010115H數據碼d7d6d5d4d3d2d1d012/13/2022593)讀鍵盤數據指令 該指令從HD7279讀出當前的按鍵代碼4)控制時序

(1)純指令時序

(2)帶數據指令時序符號最小值典型值最大值T12550250T258250T358250T41525250T51525250T658T758250T8512/13/2022604)控制時序(1)純指令時序(2)帶數據指令時序符號最?。?)讀鍵盤指令時序為了保證HD7279正常工作,選定HD7279的振蕩元件RC和單片機的晶振之后,應調節(jié)延時時間,使時序中的T1~T8滿足表所列要求。由表中的數據可知,HD7279規(guī)定的時間范圍很寬,容易滿足時序的要求。為了提高CPU訪問HD7279的速度,應調整延時,使運行時間接近最短。符號最小值典型值最大值T12550250T258250T358250T41525250T51525250T658T758250T8512/13/202261(3)讀鍵盤指令時序為了保證HD7279正常工作,選定HDT1~T8數據值μs符號最小值典型值最大值T12550250T258250T358250T41525250T51525250T658T758250T8512/13/202262T1~T8數據值μs符號最小值典型值最大值T4.MCS-51單片機與HD7279的接口電路12/13/2022634.MCS-51單片機與HD7279的接口電路12/113.9.3單總線單總線(1-Wire)是Dallas公司推出外圍串行擴展總線,采用單根信號線完成數據的雙向傳輸。單總線技術有三個顯著的特點:單總線芯片通過一根信號線進行地址信息、控制信息和數據信息的傳送,并可通過該信號線為單總線器件提供電源;每個單總線芯片都具有全球唯一的訪問序列號,當多個單總線器件掛在同一單總線上時,對所有單總線芯片的訪問都通過該唯一序列號區(qū)分;單總線芯片在工作過程中,不需要提供外接電源,而通過它本身具有的“總線竊電”技術從總線上竊取電源。12/13/2022643.9.3單總線單總線(1-Wire)是Dallas公司12/13/20226512/11/2022653.9常用總線、通信接口數據通信的基本方式可分為并行通信與串行通信兩種:并行通信:是指利用多條數據傳輸線將一個數據的各位

同時傳送。

特點:是傳輸速度快,適用于短距離通信。串行通信:是指利用一條傳輸線將數據一位位地順序

傳送。

特點:是通信線路簡單,利用電話或電報線路就可

實現通信,降低成本,適用于遠距離通信,

但傳輸速度慢。12/13/2022663.9常用總線、通信接口數據通信的基本方式可分為并行通串行通信:分為同步通信(SYNC)與異步通信(ASYNC)兩種方式。(實際通信中,沒有絕對的“異步”或“同步”,只是按不同的程度上“同步”。)異步通信:一個字節(jié)內同步,而字節(jié)之間“不同步”,

稱之為“異步”。同步通信:大于一個字節(jié)的“幀數據”或“塊數據”內

同步,稱之為“幀同步”或“塊同步”。稱

之為“同步”。(這時實際上“幀數據”

或“塊數據”之間也是“異步”)12/13/202267串行通信:分為同步通信(SYNC)與異步通信(ASYNC)兩異步通信字符格式:規(guī)定有起始位、數據位、奇偶校驗位、停止位等波特率:是衡量數據傳送速率的指標(bps)。12/13/202268異步通信12/11/20223數據傳送方向單工方式只允許數據按照一個固定的方向傳送半雙工方式每次只能有一個站發(fā)送,另一個站接收全雙工方式允許通信雙方同時進行發(fā)送和接收12/13/202269數據傳送方向12/11/20224串行通信的基本特征是數據逐位順序進行傳送串行通信的格式及約定(如:同步方式、通訊速率、數據塊格式、信號電平……等)不同,形成了多種串行通信的協議與接口標準。常見的有:?通用異步收發(fā)器(UART)——本課程介紹的串口?通用串行總線(USB)單總線(1-Wire)?I2C總線?CAN總線?SPI總線?1394?RS-485,RS-232C,RS422A標準……等等12/13/202270串行通信的基本特征是數據逐位順序進行傳送12/11/2022SPI、I2C、1-Wire、RS232是目前單片機應用系統(tǒng)中最常用的幾個串行總線接口。與并行擴展總線相比,串行擴展總線能夠最大程度發(fā)揮最小系統(tǒng)的資源功能、簡化連接線路,縮小電路板面積、擴展性好,可簡化系統(tǒng)設計。串行總線的缺點是數據吞吐容量小,信號傳輸較慢。但隨著CPU芯片工作頻率的提高,以及串行總線的功能增強,這些缺點將逐步淡化。12/13/202271SPI、I2C、1-Wire、RS232是目前單片機應用系統(tǒng)3.9.1I2C總線I2C(InterIntegratedCircuit)常譯為內部集成電路總線,或集成電路間總線,它是由Philips公司推出的芯片間串行傳輸總線。使用2線實現數據通信。 1根串行數據線(SDA) 1根串行時鐘線(SCL)。12/13/2022723.9.1I2C總線I2C(InterIntegra1.I2C總線的基本特性硬件結構上具有相同的硬件接口界面。12/13/2022731.I2C總線的基本特性硬件結構上具有相同的硬件接口界面。總線接口器件地址具有很大的獨立性。在單主系統(tǒng)中,每個I2C接口芯片具有唯一的器件地址,各從器件之間互不干擾,相互之間不能進行通信。MCU與I2C器件之間的通信是通過獨一無二的器件地址來實現的。數據傳輸首先從最高位開始。傳輸速率在標準模式下可達100kbit/s,在快速模式下達400kbit/s,在高速模式下達3.4Mbit/s。它是一個真正的多主機總線。如果兩個或更多主機同時初始化數據傳輸,可以通過沖突檢測和仲裁防止數據被破壞。軟件操作的一致性。任何器件通過I2C總線與MCU進行數據傳送的方式基本一樣,決定了I2C總線軟件編寫的一致性。數據線SDA/時鐘線SCL(接上拉電阻)

12/13/202274總線接口器件地址具有很大的獨立性。在單主系統(tǒng)中,每個I2C接2.I2C總線工作原理

(1)I2C總線信號類型開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。結束信號:SCL為低電平時,SDA由低電平向高電平跳變,結束傳送數據。應答信號:接收數據的器件在接收到8bit數據后,向發(fā)送數據的器件(發(fā)送器)發(fā)出特定的低電平脈沖,表示已收到數據。發(fā)送器接收到應答信號后,根據實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應答信號,由判斷為接收器出現故障。數據只能在SCL為低電平時才能改變,SCL為高電平時SDA須穩(wěn)定。起始信號與結束信號都是由主器件產生。12/13/2022752.I2C總線工作原理(1)I2C總線信號類型12/11/12/13/20227612/11/202211(2)I2C總線數據傳輸

主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。總線必須由主器件(通常為單片機)控制,主器件產生串行時鐘控制總線的傳輸方向,并產生起始和停止條件。在起始信號結束后,主器件將發(fā)送一個用于選擇從器件地址的7位地址碼和一個數據方向位(R/W),方向位為“0”表示主器件把數據寫到所選擇的從器件中,此時主器件作為發(fā)送器,而從器件作為接收器;方向位為“1”表示主器件從所選擇的從器件中讀取數據,此時主器件作為接收器,而從器件作為發(fā)送器。在尋址字節(jié)后是按指定讀、寫操作的數據字節(jié)與應答位。在數據傳送完成后主器件必須發(fā)送停止信號。12/13/202277(2)I2C總線數據傳輸主器件和從器件都可以工作于接收和發(fā)在51上用P1口模擬I2C(c語言)/*電平模擬函數和基本讀寫函數voidIIC_Start(void);voidIIC_Stop(void);voidSEND_0(void);voidSEND_1(void);bitCheck_Acknowledge(void);voidWrite_Byte(ucharb);bitWrite_N_Bytes(uchar*buffer,ucharn);bitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer);ucharRead_Byte(void);*/12/13/202278在51上用P1口模擬I2C(c語言)/*電平模擬函數和#include<string.h>#include<reg52.h>#include<intrins.h>#include"aiic_51.h"sbitSCL=P1^6;sbitSDA=P1^7;voidDELAY(uintt){while(t!=0)t--;}12/13/202279#include<string.h>12/11/20221voidIIC_Start(void){//啟動I2C總線的函數,當SCL為高電平時使SDA產生一個負跳變SDA=1;SCL=1;DELAY(DELAY_TIME);SDA=0;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}12/13/202280voidIIC_Start(void)12/11/202voidIIC_Stop(void){//終止I2C總線,當SCL為高電平時使SDA產生一個正跳變SDA=0;SCL=1;DELAY(DELAY_TIME);SDA=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}12/13/202281voidIIC_Stop(void)12/11/2022voidSEND_0(void){//發(fā)送0,在SCL為低電平時使SDA信號變?yōu)榈蚐CL=0;SDA=0;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidSEND_1(void){//發(fā)送1,在SCL為低電平時使SDA信號變?yōu)楦逽CL=0;SDA=1;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}12/13/202282voidSEND_0(void)12/11/202217bitCheck_Acknowledge(void){//發(fā)送完一個字節(jié)后檢驗設備的應答信號SDA=1;SCL=1;DELAY(DELAY_TIME/2);F0=SDA;DELAY(DELAY_TIME/2);SCL=0;DELAY(DELAY_TIME);if(F0==1)returnFALSE;returnTRUE;}12/13/202283bitCheck_Acknowledge(void)12voidWrite_Byte(ucharb){//向IIC總線寫一個字節(jié)uchari;for(i=0;i<8;i++)if((b<<i)&0x80)SEND_1();elseSEND_0();}12/13/202284voidWrite_Byte(ucharb)12/11bitWrite_N_Bytes(uchar*buffer,ucharn){//向I2C總線寫n個字節(jié)uchari;IIC_Start();for(i=0;i<n;i++) { Write_Byte(buffer[i]); if(!Check_Acknowledge()) { IIC_Stop(); return(i==n); } }IIC_Stop();returnTRUE;}12/13/202285bitWrite_N_Bytes(uchar*buffeucharRead_Byte(void)reentrant{//從I2C總線讀一個字節(jié)ucharb=0,i;for(i=0;i<8;i++) { SDA=1;//釋放總線 SCL=1;//接受數據 DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0==1) { b=b<<1; b=b|0x01; } else b=b<<1; }returnb;}12/13/202286ucharRead_Byte(void)reentrantbitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer){//從I2C總線讀n個字節(jié)uchari;IIC_Start();Write_Byte(SlaveAdr);//向總線發(fā)送接收器地址if(!Check_Acknowledge())//等待接收器應答信號returnFALSE;for(i=0;i<n;i++) { buffer[i]=Read_Byte(); if(i!=n) SEND_0();//發(fā)送應答 else SEND_1();//發(fā)送非應答 }IIC_Stop();returnTRUE;}12/13/202287bitRead_N_Bytes(ucharSlaveAdIIC例:12/13/202288IIC例:12/11/20222312/13/20228912/11/20222412/13/20229012/11/20222512/13/20229112/11/20222612/13/20229212/11/20222712/13/20229312/11/20222812/13/20229412/11/20222912/13/20229512/11/20223012/13/20229612/11/20223112/13/20229712/11/20223212/13/20229812/11/20223312/13/20229912/11/20223412/13/202210012/11/20223512/13/202210112/11/20223612/13/202210212/11/20223712/13/202210312/11/20223812/13/202210412/11/2022391.SPI總線的特點(串行外圍設備接口:serialperipheralinterface)一般使用4條線

串行時鐘線(SCK) 主機輸入/從機輸出數據線MISO 主機輸出/從機輸入數據線MOSI 低電平有效的從機選擇線SSSPI總線技術是Motorola公司推出的一種同步串行接口

3.9.2SPI串行總線12/13/20221051.SPI總線的特點3.9.2SPI串行總線12/11/2.SPI總線系統(tǒng)的構成單片機與多個SPI串行接口設備典型結構如圖6.1所示。12/13/20221062.SPI總線系統(tǒng)的構成單片機與多個SPI串行接口設備典型結3.SPI串行總線在MCS-51系列單片機中的實現

MCS-51單片機I/O口模擬SPI總線接口原理圖如圖6.2所示。12/13/20221073.SPI串行總線在MCS-51系列單片機中的實現MCS-單片機,如Motorola公司的M68HC08系列、Cygnal公司的C8051F0XX系列、Philips公司的P89LPC93X系列。A/D和D/A轉換器,如:AD公司的AD7811/12、TI公司的TLC1543、TLC2543、TLC5615等。實時時鐘RTC,如Dallas公司的DS1302/05/06等。溫度傳感器,如AD公司的AD7816/17/18;NS公司的LM74等。其他設備,如LED控制驅動器MAX7219、HD7279等,集成看門狗、電壓監(jiān)控、E2PROM等功能的X5045等。4.常用SPI串行總線接口的器件12/13/20221084.常用SPI串行總線接口的器件12/11/202243SPI例:串行專用鍵盤/顯示器接口芯片HD72791.HD7279的主要特點 ⑴與CPU間采用串行接口方式,僅占用4根口線; ⑵內部含有譯碼器,可直接接收BCD碼或16進制碼,同時具有兩種譯碼方式,實現LED數碼管位尋址和段尋址,消隱和閃爍屬性等多種控制指令,編程靈活; ⑶循環(huán)左移和循環(huán)右移指令; ⑷內部含有驅動器,無需外圍元件可直接驅動LED ⑸具有級聯功能,可方便的實現多于8位顯示或多于64鍵的鍵盤接口; ⑹具有自動消除抖動并識別按鍵鍵值的功能。 12/13/2022109SPI例:串行專用鍵盤/顯示器接口芯片HD72791.HD72.HD7279的引腳說明DIG0~DIG7:8個LED管的位驅動輸出端。SA~SG:LED數碼管的A段~G段的輸出端。DP為小數點的驅動輸出端。:片選信號。DATA:串行數據輸入/輸出端。CLK:數據串行傳送的同步時鐘輸入端。KEY:按鍵信號輸出端。RC:連接HD7279的外接振蕩元件,其典型值為R=1.5kΩ,C=15pF。:復位端。CLKO:振蕩輸出端VDD:正電源(+5V)VSS:接地12/13/20221102.HD7279的引腳說明DIG0~DIG7:8個LED3.HD7279的控制與實現 HD7279的控制指令由6條純指令、7條帶數據指令和1條讀鍵盤指令組成。1)純指令 (1)復位(清除)指令(A4H)

該指令將所有的顯示清除,所有設置的字符消隱、閃爍等屬性也被一起清除。執(zhí)行該指令后,芯片所處的狀態(tài)與系統(tǒng)上電后所處的狀態(tài)一樣。

D7D6D5D4D3D2D1D01010010012/13/20221113.HD7279的控制與實現 HD7279的控制指令由6(2)測試指令(BFH)

該指令使所有的LED全部點亮,并處于閃爍狀態(tài),主要用于測試。(3)左移指令(A1H)

該指令使所有的顯示自右向左(從第1位向第8位)移動一位(包括處于消隱狀態(tài)的顯示位),但對各位所設置的消隱及閃爍屬性不變。移動后,最右邊一位為空(無顯示)。D7D6D5D4D3D2D1D010111111D7D6D5D4D3D2D1D01010000112/13/2022112(2)測試指令(BFH)D7D6D5D4D3D2D1D010(4)右移指令(A0H)

(5)循環(huán)左移指令(A3H)

該指令與左移指令類似,不同之處在于移動后原最左邊一位(第8位)的內容顯示于最右位(第1位)。D7D6D5D4D3D2D1D010100000D7D6D5D4D3D2D1D010100011(6)循環(huán)右移指令(A2H)該指令與循環(huán)左移指令類似,但移動方向相反。

D7D6D5D4D3D2D1D01010001012/13/2022113(4)右移指令(A0H)D7D6D5D4D3D2D1D012)帶數據的指令 帶數據指令均由雙字節(jié)組成,第1字節(jié)為指令標志碼(有的還含有位地址),第2字節(jié)為顯示內容。(1)按方式0譯碼顯示指令

命令由二個字節(jié)組成,前半部分為指令,其中a2、a1、a0為LED數碼管的位地址,即顯示數據是送給哪一位LED的。具體分配如表6.6所列。指令中的d3~d0為顯示數據,收到此指令時,HD7279按表6.7規(guī)則(譯碼方式0)進行譯碼和顯示。小數點的顯示由DP位控制,DP=1時,小數點顯示,DP=0時,小數點不顯示。指令中的XXX為無影響位。位D7D6D5D4D3D2D1D0十六進制碼指令碼10000a2a1a080H~87H數據碼DPXXXd3d2d1d012/13/20221142)帶數據的指令 帶數據指令均由雙字節(jié)組成,第1字節(jié)為指令LED位地址譯碼表a2a1a0LED顯示位000LED1001LED2010LED3011LED4100LED5101LED6110LED7111LED812/13/2022115LED位地址譯碼表a2a1a0LED顯示位000LED100方式0譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字00H008H801H109H902H20AH—03H30BHE04H40CHH05H50DHL06H60EHP07H70FH空(無顯示)12/13/2022116方式0譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字(2)按方式1譯碼顯示指令 此指令與上一條指令基本相同,所不同的是譯碼方式。方式1情況下,LED顯示的內容與十六進制相對應,該指令的譯碼規(guī)則見表(譯碼方式1)。a2、a1、a0位地址譯碼見表。位D7D6D5D4D3D2D1D0十六進制碼指令碼11001a2a1a0C8H~CFH數據碼DPXXXd3d2d1d012/13/2022117(2)按方式1譯碼顯示指令 此指令與上一條指令基本相同,方式1譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字00H008H801H109H902H20AHA03H30BHB04H40CHC05H50DHD06H60EHE07H70FHF12/13/2022118方式1譯碼顯示表d3~d0LED顯示字d3~d0LED顯示字(3)不譯碼顯示指令(方式2) 其中a2,a1,a0為位地址,位地址譯碼見表。第2字節(jié)仍為LED顯示的內容,其中A-G和DP為顯示數據,分別對應LED數碼管的各段和小數點,當取值為“1”時,該段點亮;取值為“0”時,該段熄滅。位D7D

溫馨提示

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

評論

0/150

提交評論