版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
總線技術(shù)I2C與SPI接口《小型智能電子產(chǎn)品設(shè)計與制作》總線總線(Bus)是計算機各種功能部件之間傳送信息的公共通信干線,它是由導線組成的傳輸線束在計算機系統(tǒng)中,各個部件之間傳送信息的公共通路叫總線,微型計算機是以總線結(jié)構(gòu)來連接各個功能部件的??偩€分類
按照傳輸數(shù)據(jù)的方式劃分,可以分為串行總線和并行總線。串行總線中,二進制數(shù)據(jù)逐位通過1根數(shù)據(jù)線發(fā)送到目的器件;并行總線的數(shù)據(jù)線通常超過2根。常見的串行總線有SPI、I2C、USB及RS232等。按照時鐘信號是否獨立,可以分為同步總線和異步總線。同步總線的時鐘信號獨立于數(shù)據(jù),而異步總線的時鐘信號是從數(shù)據(jù)中提取出來的。SPI、I2C是同步串行總線,RS232采用異步串行總線。SCSI、ATA、PCI、IEEE1394總線技術(shù)指標總線的工作頻率:以MHZ為單位,工作頻率越高,總線工作速度越快,總線帶寬越寬。總線的位寬:總線能同時傳送的二進制數(shù)據(jù)的位數(shù)總線的帶寬=總線的工作頻率*總線的位寬/8注意:波特率是指數(shù)據(jù)信號對載波的調(diào)制速率,它用單位時間內(nèi)載波調(diào)制狀態(tài)改變的次數(shù)來表示,其單位是波特(Baud)。波特率與比特率(數(shù)字信號的傳輸速率bit/s)的關(guān)系是比特率=波特率X單個調(diào)制狀態(tài)對應的二進制位數(shù)。。異步通信字符格式:規(guī)定有起始位、數(shù)據(jù)位、奇偶校驗位、停止位等(RS232\485)數(shù)據(jù)傳送方向概念單工方式:只允許數(shù)據(jù)按照一個固定的方向傳送半雙工方式:每次只能有一個站發(fā)送,另一個站接收全雙工方式:允許通信雙方同時進行發(fā)送和接收串行與并行總線對比與并行擴展總線相比,串行擴展總線能夠最大程度發(fā)揮最小系統(tǒng)的資源功能、簡化連接線路,縮小電路板面積、擴展性好,可簡化系統(tǒng)設(shè)計。串行總線的缺點是數(shù)據(jù)吞吐容量小,信號傳輸較慢。但隨著CPU芯片工作頻率的提高,以及串行總線的功能增強,這些缺點將逐步淡化。SPI、I2C、1-Wire、RS232是目前單片機應用系統(tǒng)中最常用的幾個串行總線接口。I2C總線I2C總線I2C(InterIntegratedCircuit)常譯為內(nèi)部集成電路總線,或集成電路間總線,它是由Philips公司推出的芯片間串行傳輸總線。使用2線實現(xiàn)數(shù)據(jù)通信。
1根串行數(shù)據(jù)線(SDA)
1根串行時鐘線(SCL)I2C總線的基本特性1硬件結(jié)構(gòu)上具有相同的硬件接口界面R:4.7K-5.1K-20k(DATASHEET)I2C總線的基本特性2在單主系統(tǒng)中,每個I2C接口芯片具有唯一的器件地址,各從器件之間互不干擾,相互之間不能進行通信。MCU與I2C器件之間的通信是通過獨一無二的器件地址來實現(xiàn)的。如果兩個或更多主機同時初始化數(shù)據(jù)傳輸,可以通過沖突檢測和仲裁防止數(shù)據(jù)被破壞。任何器件通過I2C總線與MCU進行數(shù)據(jù)傳送的方式基本一樣,決定了I2C總線軟件編寫的一致性。數(shù)據(jù)傳輸位速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s。I2C總線信息傳送當I2C總線沒有進行信息傳送時,數(shù)據(jù)線(SDA)和時鐘線(SCL)都為高電平(上拉)開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。結(jié)束信號:SCL為高電平時,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。開始信號和結(jié)束信號之間傳送的是信息,信息的字節(jié)數(shù)沒有限制,但每個字節(jié)必須為8位,高位在前,低位在后。數(shù)據(jù)線SDA上每一位信息狀態(tài)的改變只能發(fā)生在時鐘線SCL為低電平的期間,因為SCL高電平的期間SDA狀態(tài)的改變已經(jīng)被用來表示開始信號和結(jié)束信號。每個字節(jié)后面必須接收一個應答信號(ACK),ACK是從控制器在接收到8位數(shù)據(jù)后向主控制器發(fā)出的特定的低電平脈沖,用以表示已收到數(shù)據(jù)。主控制器接收到應答信號(ACK)后,可根據(jù)實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到ACK,則判斷為從控制器出現(xiàn)故障。讀寫操作主控制器每次傳送的信息的第一個字節(jié)必須是器件地址碼,第二個字節(jié)為器件單元地址,用于實現(xiàn)選擇所操作的器件的內(nèi)部單元,從第三個字節(jié)開始為傳送的數(shù)據(jù)。其中器件地址碼格式如下:D7D6D5D4D3D2D1D0器件類型碼片選R/WI2C讀寫操作范例/*電平模擬函數(shù)和基本讀寫函數(shù)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);*/sbitSCL=P1^6;sbitSDA=P1^7;voidDELAY(uintt){while(t!=0)t--;}voidIIC_Start(void){//啟動I2C總線的函數(shù),當SCL為高電平時使SDA產(chǎn)生一個負跳變
SDA=1;SCL=1;DELAY(DELAY_TIME);SDA=0;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidIIC_Stop(void){//終止I2C總線,當SCL為高電平時使SDA產(chǎn)生一個正跳變SDA=0;SCL=1;DELAY(DELAY_TIME);SDA=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidSEND_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);}bitCheck_Acknowledge(void){//發(fā)送完一個字節(jié)后檢驗設(shè)備的應答信號SDA=1;SCL=1;DELAY(DELAY_TIME/2);F0=SDA;DELAY(DELAY_TIME/2);SCL=0;DELAY(DELAY_TIME);if(F0==1)returnFALSE;returnTRUE;}voidWrite_Byte(ucharb){//向IIC總線寫一個字節(jié)uchari;for(i=0;i<8;i++)if((b<<i)&0x80)SEND_1();elseSEND_0();}bitWrite_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;}ucharRead_Byte(void)reentrant{//從I2C總線讀一個字節(jié)ucharb=0,i;for(i=0;i<8;i++) { SDA=1;//釋放總線
SCL=1;//接受數(shù)據(jù)
DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0==1) { b=b<<1; b=b|0x01; } else b=b<<1; }returnb;}bitRead_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;}SPI串行總線SPI串行總線SPI總線的特點(串行外圍設(shè)備接口:serialperipheralinterface)一般使用4條線
串行時鐘線(SCK) 主機輸入/從機輸出數(shù)據(jù)線MISO
主機輸出/從機輸入數(shù)據(jù)線MOSI
低電平有效的從機選擇線SSSPI總線技術(shù)是Motorola公司推出的一種同步串行接口SPI總線系統(tǒng)的構(gòu)成MCS-51單片機I/O口模擬SPI總線接口原理圖常用SPI串行總線接口的器件單片機,如Motorola公司的M68HC08系列、Cygnal公司的C8051F0XX系列、Philips公司的P89LPC93X系列。A/D和D/A轉(zhuǎn)換器,如:AD公司的AD7811/12、TI公司的TLC1543、TLC2543、TLC5615等。實時時鐘RTC,如Dallas公司的DS1302/05/06等。溫度傳感器,如AD公司的AD7816/17/18;NS公司的LM74等。其他設(shè)備,如LED控制驅(qū)動器MAX7219、HD7279等,集成看門狗、電壓監(jiān)控、E2PROM等功能的X5045等。SPI時序SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數(shù)據(jù)。
Dallas公司的DS1302為例DS1302的引腳如圖:其中:X1、X2:32.768KHz晶振接入引腳。GND:地。/RST:復位引腳,低電平有效。I/O:數(shù)據(jù)輸入/輸出引腳,具有三態(tài)功能。SCLK:串行時鐘輸入引腳。VCC1:工作電源引腳。VCC2:備用電源引腳。DS1302與單片機的連接DS1302與單片機的連接僅需要3條線:時鐘線SCLK、數(shù)據(jù)線I/O和復位線RST。時鐘線SCLK與P1.0相連,數(shù)據(jù)線I/O與P1.1相連,復位線RST與P1.2相連(片選)。VCC2X1X2GNDVCC1SCLKI/ORST+5V8051P1.0P1.2P1.3+5VDS1302DS1302控制字控制寄存器用于存放DS1302的控制命令字,DS1302的RST引腳回到高電平后寫入的第一個字就為控制命令。它用于對DS1302讀寫過程進行控制,它的格式如下:D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0RD/W寄存器名稱D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0R/W秒寄存器10000000或1分寄存器10000010或1小時寄存器10000100或1日寄存器10000110或1月寄存器10001000或1星期寄存器10001010或1年寄存器10001100或1寫保護寄存器10001110或1慢充電寄存器10010000或1時鐘突發(fā)模式10111110或1RAM011000000或1110或1RAM3011111100或1RAM突發(fā)模式11111110或1DS1302的輸入輸出過程DS1302通過RST引腳驅(qū)動輸入輸出過程,當置RST高電平啟動輸入輸出過程,在SCLK時鐘的控制下,首先把控制命令字寫入DS1302的控制寄存器,其次根據(jù)寫入的控制命令字,依次讀寫內(nèi)部寄存器或片內(nèi)RAM單元的數(shù)據(jù),對于日歷、時鐘寄存器,根據(jù)控制命令字,一次可以讀寫一個日歷、時鐘寄存器,也可以一次讀寫8個字節(jié),對所有的日歷、時鐘寄存器;對于片內(nèi)RAM單元,根據(jù)控制命令字,一次可讀寫一個字節(jié),一次也可讀寫31個字節(jié)。當數(shù)據(jù)讀寫完后,RST變?yōu)榈碗娖浇Y(jié)束輸入輸出過程。無論是命令字還是數(shù)據(jù),一個字節(jié)傳送時都是低位在前,高位在后,每一位的讀寫發(fā)生在時鐘的上升沿。程序模擬#define……..。。。。。。SbitAcc_7=Acc^7;SbitSCLK=P1^0;SbitDIO=P1^1;SbitRST=P1^2;//地址、數(shù)據(jù)發(fā)送子程序voidWrite1302(unsignedcharaddr,dat){unsignedchari,temp;RST=0;//數(shù)據(jù)傳送終止
SCLK=0;//清零時鐘線
RST=1;//引腳為高,啟動讀寫//發(fā)送寫地址控制字
for(i=8;i>0;i--)//循環(huán)8次
{SCLK=0;temp=addr;DIO=(bit)(temp&0x01);//從低位到高位
addr>>=1;SCLK=1;//上升沿寫入
}(續(xù))//發(fā)送數(shù)據(jù)
for(i=8;i>0;i-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 噴塑包紙項目可行性研究報告評審方案設(shè)計2025年立項詳細標準+甲
- 2025年中國清潔護膚保健品市場運營態(tài)勢分析及投資前景預測報告
- 2025公司之間借款合同協(xié)議書
- 廣西壯族自治區(qū)柳州市2024年中考語文一模試卷含答案
- 緊線工具行業(yè)深度研究報告
- 2024-2025年中國超微型電子計算機行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報告
- 2025開辦建材分裝廠合同
- 2025錦宏西山莊主體承包合同
- 《再塑生命的人》演講稿
- 《兩小兒辯日》讀后感150字
- 股權(quán)協(xié)議書和合伙人協(xié)議書
- 河南省駐馬店市2023-2024學年高一上學期1月期末語文試題(含答案解析)
- 幼兒園名師公開課:小班安全《超市安全我知道》微課件
- MOOC 英文技術(shù)寫作-東南大學 中國大學慕課答案
- 2022年10月自考00850廣告設(shè)計基礎(chǔ)試題及答案含解析
- 工會委員會會議紀要
- 《水電工程水文設(shè)計規(guī)范》(NB-T 10233-2019)
- 2024年1月電大國家開放大學期末考試試題及答案:法理學
- (高清版)DZT 0284-2015 地質(zhì)災害排查規(guī)范
- 駕駛員勞務派遣車輛管理方案
- 電纜大和小修危險源辨識和控制措施
評論
0/150
提交評論