版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第9章 串行總線擴(kuò)展技術(shù) 單片機(jī)總線擴(kuò)展技術(shù):分為并行總線和串行總線兩類.串行總線連線少,結(jié)構(gòu)簡單,占用單片機(jī)的I/O口資源較少,已是一種發(fā)展趨勢(shì).51系列單片機(jī)可用并行I/O口線通過軟件方法模擬串行總線時(shí)序, 與具串行接口的器件直接連接.常見有四種串行總線:SPI總線、I2C總線、SMBus總線以及單總線.9.1 SPI總線擴(kuò)展技術(shù) 9.1.1 SPI總線概述 1 SPI總線是一種同步串行外設(shè)接口技術(shù), 允許MCU(稱主設(shè)備、主機(jī)或主器件) 與外圍設(shè)備(稱從設(shè)備、從機(jī)或從器件) 通過4條邏輯信號(hào)線以串行方式數(shù)據(jù)交換.外圍設(shè)備如串行E2PROM、串行A/D或D/A轉(zhuǎn)換器、串行日歷/時(shí)鐘、串行U
2、ART控制器和串行LED顯示驅(qū)動(dòng)器等. SCLK-串行時(shí)鐘線(由主設(shè)備發(fā)出)MOSI-串行主出從入信號(hào)線(由主設(shè)備發(fā)出)MISO-串行主入從出信號(hào)線(由從設(shè)備發(fā)出)SS -從設(shè)備片選線(主設(shè)備發(fā)出,低電平有效)* 不計(jì)及片選線SS時(shí)稱為三線制總線. 2SPI總線的單主單從設(shè)備的連接關(guān)系圖: 目前廣用的一種非標(biāo)準(zhǔn)SPI總線命名如下: SCK,CLK-串行時(shí)鐘線(由主設(shè)備發(fā)出)SDI,DI,SI-串行數(shù)據(jù)輸入線SDO,DO,SO-串行數(shù)據(jù)輸出線nCS,CS,Nss,STE-從設(shè)備片選線(由主設(shè)備發(fā) 出,低電平有效)31. SPI總線的主要特點(diǎn): 1) 全雙工模式,可以同時(shí)發(fā)送和接收數(shù)據(jù).2) 主從
3、工作方式.3) 提供4種頻率可編程時(shí)鐘.4) 具有發(fā)送結(jié)束中斷標(biāo)志.5) 具有寫沖突保護(hù).6) 具有總線競爭保護(hù).2. 集成了SPI總線功能的MCU 許多廠商生產(chǎn)的MCU和外圍器件都集成了SPI硬件接口,代表性MCU型號(hào)見書本附錄E. 43. 集成了SPI總線功能的外圍器件 SPI總線的良好的數(shù)據(jù)傳輸特性已越來越多地集成在各種功能器件中,此類器件見書本附錄F. 9.1.2 SPI總線擴(kuò)展電路 可有多方式組成,如一個(gè)主MCU接一個(gè)或幾個(gè)從MCU,一個(gè)主MCU接一個(gè)或幾個(gè)從外圍器件等. 5 圖例是一個(gè)主設(shè)備接三個(gè)從設(shè)備.從設(shè)備可以是MCU或外圍器件,視需要而定. (1)串行信號(hào)線. 主入從出信號(hào)線
4、(MISO)和主出從入信號(hào)線(MOSI)各自連接,實(shí)現(xiàn)主從設(shè)備的收/發(fā)雙向通信.若從設(shè)備只接收不發(fā)送,該從設(shè)備的MISO線可懸空. 若從設(shè)備只發(fā)送不接,該從設(shè)備的MOSI線可懸空. 全雙工的情況下主設(shè)備把一位數(shù)據(jù)送到 MOSI線、從設(shè)備從MOSI線讀取該位數(shù)據(jù)的同時(shí),從設(shè)備也把一位數(shù)據(jù)送到MISO線上,主設(shè)備從MISO線讀入該位數(shù)據(jù).6 (2)串行時(shí)鐘. 串行時(shí)鐘線(SCLK)用作MISO和MOSI的同步傳輸. 主設(shè)備的SCLK由MCU內(nèi)部時(shí)鐘總線提供同步時(shí)鐘輸出;從設(shè)備的SCLK則作同步時(shí)鐘輸入. 每個(gè)字節(jié)的傳輸均自動(dòng)在SCLK產(chǎn)生8個(gè)時(shí)鐘脈沖,脈沖跳變時(shí)進(jìn)行移位和采樣. 主設(shè)備必須小于或等
5、于從設(shè)備的最大SPI時(shí)鐘頻率. (3)從設(shè)備片選線. 片選線用作主設(shè)備選擇從設(shè)備,向每個(gè)從設(shè)備提供獨(dú)立的控制線, 低電平生效,以防止數(shù)據(jù)傳輸沖突. 每次只會(huì)有一個(gè)被選中的從設(shè)備參與通信,SCLK和MOSI的信號(hào)對(duì)其他的從設(shè)備不起作用.79.1.3 SPI總線數(shù)據(jù)交換原理 主從設(shè)備之間SPI串行數(shù)據(jù)交換原理圖如下: 主從設(shè)備內(nèi)部均含有一個(gè)8位的移位寄存器,時(shí)鐘發(fā)生器,數(shù)據(jù)寄存器( SPDR ),控制寄存器8(SPCR)和狀態(tài)寄存器(SPSR). 通過MOSI和MISO信號(hào)線使兩者的移位寄存器形成一個(gè)環(huán)路. SPI控制寄存器的SPCR位定義為: SPI狀態(tài)寄存器的SPSR位定義為: 9 寄存器復(fù)位
6、后均為0,數(shù)據(jù)從高位到低位傳輸,控制寄存器SPCR的MSTR(方式位)置1設(shè)定為主設(shè)備,SS線送出低電平選中從設(shè)備, 把數(shù)據(jù)寫入數(shù)據(jù)寄存器SPDR,不經(jīng)過緩沖直接進(jìn)入移位寄存器,由SCLK脈沖作用從MOSI線上串行移出,從設(shè)備的數(shù)據(jù)則從MISO線移入主設(shè)備(由數(shù)據(jù)寄存器SPDR作緩沖).經(jīng)8個(gè)串行脈沖后主、從設(shè)備數(shù)據(jù)交換結(jié)束,狀態(tài)寄存器SPSR的SPIF(中斷標(biāo)志位)置1,產(chǎn)生中斷請(qǐng)求. 主設(shè)備所接收到的數(shù)據(jù)暫存在寄存器SPDR中,傳輸下一個(gè)數(shù)據(jù)之前需要把數(shù)據(jù)從SPDR讀出,使10標(biāo)志位SPIF清零. 控制寄存器SPCR的MSTR位清0,器件設(shè)定為從設(shè)備,數(shù)據(jù)在主設(shè)備SCLK脈沖的作用下進(jìn)入移
7、位寄存器后,被送到數(shù)據(jù)寄存器SPDR.在接收下一字節(jié)的數(shù)據(jù)之前,需要先讀出SPDR中的數(shù)據(jù),并把要傳輸?shù)街髟O(shè)備的數(shù)據(jù)存入SPDR中. 不再傳輸數(shù)據(jù)時(shí),主設(shè)備停止發(fā)送時(shí)鐘信號(hào)并取消從設(shè)備的片選信號(hào),主、從通信結(jié)束.9.1.4 SPI時(shí)鐘相位和極性 不同的SPI外圍設(shè)備的電平和采樣方式要求不11同, 可通過軟件設(shè)定控制寄存器SPCR中的CPOL(極性位)和CPHA(相位位)來實(shí)現(xiàn),SCLK信號(hào)的4種模式為: 12 極性位CPOL置時(shí)鐘線的空閑電平,相位位CPHA置數(shù)據(jù)線采樣的時(shí)鐘跳變沿. * 極性CPOL0,SCLK脈沖低電平空閑,高電平有效;CPOL1,脈沖高電平空閑,低電平有效. * 相位CP
8、HA0,SCLK脈沖前沿(上跳/下跳)采采樣數(shù)據(jù),后沿跳變?cè)试S數(shù)據(jù)變動(dòng). * 相位CPHA1,SCKL脈沖后沿(下跳/上跳)采樣數(shù)據(jù),前沿跳變數(shù)據(jù)可變動(dòng). 采樣前的半個(gè)時(shí)鐘周期數(shù)據(jù)必須穩(wěn)定,結(jié)束后才允許變動(dòng). 較為常用模式是MODE0和MODE3,主、從設(shè)備所選的模式必須一致.13幾種SCLK信號(hào)模式下SPI通信的格式介紹: 1)相位位CPHA0時(shí)(極性位CPOL0的低電平空閑和CPOL1的高電平空閑).片選線SS下降沿啟動(dòng)傳輸,SCLK前沿跳變時(shí)采樣最高位.8位數(shù)據(jù)傳送完成后片選線SS返回高電平,通信結(jié)束. 14 2)相位位CPHA1時(shí)(極性位CPOL0的低電平空閑和CPOL1的高電平空閑)
9、.片選線SS下降沿啟動(dòng)傳輸,SCLK前沿跳變時(shí)采樣最高位.8位數(shù)據(jù)傳送完成后片選線SS返回高電平,通信結(jié)束. 159.1.5 SPI總線采樣的軟件實(shí)現(xiàn) 51系列單片機(jī)沒有SPI接口,可由I/O口用軟件模擬SPI總線時(shí)序,使與外圍SPI器件同步串行通信.單片機(jī)作主設(shè)備,外圍串行器件作從設(shè)備,數(shù)據(jù)按高位在前低位在后的格式傳輸.軟件模擬的SCLK信號(hào),其極性和相位根據(jù)外圍器件的電氣特性決定.整體設(shè)計(jì)需考慮以下兩方面因素.1. 對(duì)外圍串行器件輸入/輸出特性的要求 1) 單片機(jī)如果沒有片選線控制外圍器件的輸入,則需增加門電路以控制SCLK的輸入,否則因16該器件一直被選通而無法連接更多的SPI器件. 2
10、) 單片機(jī)如果沒有三態(tài)控制端使未被選中的器件輸出呈高阻,則需增加三態(tài)門電路控制MISO的數(shù)據(jù)輸出,否則只能單獨(dú)連接該器件. 2. 外圍串行器件對(duì)時(shí)鐘信號(hào)的要求 若外圍串行器件在SCLK脈沖的上升沿輸入數(shù)據(jù),在下降沿輸出數(shù)據(jù),則SCLK信號(hào)應(yīng)初始化為高電平,通信結(jié)束后置為低電平. 相反若在SCLK脈沖下降沿輸入數(shù)據(jù), 上升沿輸出數(shù)據(jù),應(yīng)初始化為低電平,結(jié)束后置高電平. 173. 單片機(jī)模擬SPI接口輸入數(shù)據(jù) 51系列單片機(jī)作為主設(shè)備,軟件模擬SPI接口串行輸入數(shù)據(jù)的主要步驟: 1)單片機(jī)設(shè)置從設(shè)備SCLK信號(hào)所需的初始電平. 2)選擇從設(shè)備進(jìn)行數(shù)據(jù)通信(片選允許). 3)根據(jù)數(shù)據(jù)位數(shù)設(shè)定循環(huán)次數(shù)
11、. 4)改變SCLK線的電平狀態(tài)(從設(shè)備送出數(shù)據(jù)). 5)讀取從設(shè)備輸出端數(shù)據(jù),保存至進(jìn)位位CY. 6)累加器ACC帶進(jìn)位位循環(huán)左移1位. 7)恢復(fù)SCLK線為初始電平狀態(tài). 8)循環(huán)次數(shù)未完則重復(fù)步驟4)7). 18 9)保存所輸入的字節(jié),通信結(jié)束.4. 單片機(jī)模擬SPI接口輸出數(shù)據(jù) 1)單片機(jī)設(shè)置從設(shè)備SCLK信號(hào)所需的初始電平. 2)選擇從設(shè)備(片選允許). 3)設(shè)定位數(shù)循環(huán)次數(shù),把發(fā)送的數(shù)據(jù)存累加器A. 4)累加器ACC帶進(jìn)位位循環(huán)左移1位. 5)進(jìn)位位CY的數(shù)據(jù)送至從設(shè)備接收端. 6)改變SCLK線的電平狀態(tài)(主設(shè)備送出數(shù)據(jù)). 7)恢復(fù)SCLK線為初始電平狀態(tài). 8)循環(huán)次數(shù)未完則
12、重復(fù)步驟4)7). 9)通信結(jié)束.195. 單片機(jī)模擬SPI接口輸入/輸出數(shù)據(jù) 1)單片機(jī)設(shè)置從設(shè)備SCLK信號(hào)所需的初始電平. 2)選擇從設(shè)備(片選允許). 3)根據(jù)數(shù)位設(shè)定循環(huán)次數(shù). 4)待發(fā)送的數(shù)據(jù)裝入累加器ACC. 5)改變SCLK線的電平狀態(tài)(從設(shè)備送出數(shù)據(jù)). 6)把從設(shè)備輸出端數(shù)據(jù)讀入進(jìn)位位CY. 7)累加器ACC帶進(jìn)位位循環(huán)左移1位. 8)進(jìn)位位CY的數(shù)據(jù)送至從設(shè)備接收端. 9)恢復(fù)SCLK為初始電平狀態(tài)(主設(shè)備送出數(shù)據(jù)).10)循環(huán)次數(shù)未完則重復(fù)步驟5)9). 20 11)通信結(jié)束.9.1.6 51系列單片機(jī)的SPI擴(kuò)展應(yīng)用 51系列單片機(jī)擴(kuò)展SPI的軟件模擬方法實(shí)例,用兩片
13、級(jí)聯(lián)的串行/并行轉(zhuǎn)換器件,作兩位LED數(shù)碼管顯示只需三條口線. 若用5.2.3節(jié)的并行總線技術(shù),則軟件譯碼的動(dòng)態(tài)掃描顯示方案需占用10條I/O口線, 硬件譯碼的靜態(tài)顯示方案要占用6條I/O口線.顯示位數(shù)多則SPI總線是更好選擇.1. 實(shí)例電路的組成 單片機(jī)的P1.2口模擬串行數(shù)據(jù)輸出線MOSI,連接 2122第一片串行/并行轉(zhuǎn)換器的串行輸入端DS;P1.3口模擬串行時(shí)鐘線SCLK,分別接兩芯片的移位脈沖輸入端SH-CP,單片機(jī)作只發(fā)不收演示,不必模擬輸入線MISO. 兩芯片的并行輸出控制線ST-CP均由P1.4口控制, MR接高電平使片選均有效,三態(tài)輸出控制線OE均接低電平使并行輸出均有效.
14、Q0Q7分別作LED數(shù)碼管的段驅(qū)動(dòng)器, 經(jīng)電阻限流后連接數(shù)碼管段端口ag,第一芯片串行輸輸出線Q7以級(jí)聯(lián)方式接第二芯片串行輸入線DS. 2. 實(shí)例電路的工作原理23 串/并轉(zhuǎn)換器件在串行時(shí)鐘脈沖的上升沿對(duì)輸入數(shù)據(jù)采樣,在并行控制脈沖的上升沿輸出數(shù)據(jù). 以顯示兩位數(shù)字09為例: 累加器裝顯示“0”的數(shù)據(jù), P1.3口8個(gè)SCLK脈沖通過P1.2口依次把數(shù)據(jù)從高位到低位送入74HC595(1).接著累加器裝入顯示“1”的數(shù)據(jù). 此時(shí)74HC595(1)會(huì)把顯示 “0”的數(shù)據(jù)通過串行輸出線移位到74HC595(2). P1.4口發(fā)出控制信號(hào),使兩芯片的并行輸出口同時(shí)輸出數(shù)據(jù), 分別顯示“1”和“0”
15、.每按動(dòng)一次開關(guān)S,后續(xù)兩個(gè)為一組的十進(jìn)制數(shù)按同樣方法送入74HC595,循環(huán)分組顯示數(shù)字09.24 74HC595的并行輸出用于直接驅(qū)動(dòng)數(shù)碼管的7段ag.共陽極型屬各段低電平點(diǎn)亮,在編寫09的顯示程序時(shí), 通常采用查段字節(jié)碼轉(zhuǎn)換表的方式來編寫十六進(jìn)制轉(zhuǎn)換程序.本例關(guān)系如下.253. 實(shí)例電路的程序流程 實(shí)現(xiàn)的是09共十個(gè)數(shù)字的分組循環(huán)顯示. 從0開始相鄰兩個(gè)數(shù)字為一組,偶數(shù)顯示在右邊數(shù)碼管,奇數(shù)顯示在左邊數(shù)碼管. 系統(tǒng)上電顯示“0”和“1”,S按動(dòng)一次顯示下一組,第五組“8”和“9”顯示完畢后重新循環(huán). 264. 實(shí)例電路的C語言程序 實(shí)例電路中的程序根據(jù)流程圖采用C語言編寫,源代碼見書本P
16、.292293. 9.2 Microwire總線擴(kuò)展技術(shù) 9.2.1 Microwire總線概述 Microwire總線(3-Wire,又稱為3線制總線),屬同步串行通信接口技術(shù). 只允許有一個(gè)主設(shè)備,其余都是從設(shè)備.改進(jìn)的Microwire/Plus總線,允許同時(shí)有多個(gè)主設(shè)備存在.3線分別是: 27SI:串行輸入線(主、從設(shè)備中均作同步接收)SO:串行輸出線(主、從設(shè)備中均作同步發(fā)送)SK:串行時(shí)鐘線(主、從設(shè)備分別作輸出/輸入) 每個(gè)從設(shè)備需配置一條片選線CS,數(shù)據(jù)按最高位在前最低位在后方式傳送.另一命名方式是DO表示串行輸出線,DI表示串行輸入線. Microwire/Plus總線與SP
17、I總線相互兼容.9.2.2 Microwire總線擴(kuò)展電路 主、從設(shè)備是分別集成了Microwire總線的單片機(jī)和外圍器件.擴(kuò)展電路的連接方式如下: 28 例中一個(gè)主設(shè)備擴(kuò)展三個(gè)從設(shè)備,擴(kuò)展量由主設(shè)備所能提供的片選線決定.主設(shè)備SO線和SI線分別接所有從設(shè)備的SI線和SO線,SK線則接所有從設(shè)備的SK線,從設(shè)備片選線CS需獨(dú)立提供. 29 注意: 片選信號(hào)的極性.單片機(jī)作從設(shè)備時(shí)片選CS低有效,該類串行器件作從設(shè)備時(shí)CS高有效. 9.2.3 Microwire總線串行E2PROM的數(shù)據(jù)傳輸 以常用的3線制串行E2PROM為例,分析總線數(shù)據(jù)傳輸?shù)墓ぷ髟硪约靶鑷?yán)格遵循的指令時(shí)序.1. Micro
18、wire總線串行E2PROM 串行E2PROM(電可寫擦只讀存儲(chǔ)器)代表性系列: NMC9306/46;(2) NMC93C06/C26/C46/C56/C66;(3) NMC93CS06/CS26/CS46/CS56/CS6630 共同特點(diǎn)是: 與Microwire總線兼容;以16位的格式串行傳輸數(shù)據(jù);內(nèi)部擦寫周期自定時(shí);輸出端能提供內(nèi)部擦寫“忙”的狀態(tài)指示. 后期均采用功耗低的CMOS技術(shù),可擦寫10萬次,數(shù)據(jù)可保留1040年以上.均為8引腳封裝. a)是16位數(shù)據(jù)格式配置,6和7腳不接;b)是8位/16位數(shù)據(jù)格式可選配置,ORG接VCC為 16位數(shù)據(jù)格式,接地為8位數(shù)據(jù)格式 31 系列(
19、1)寫入數(shù)據(jù)之前要先執(zhí)行擦寫操作. 系列(2)(3)寫入時(shí)內(nèi)部自動(dòng)執(zhí)行擦寫操作. 系列(3)設(shè)置了寫保護(hù)功能,能避免誤寫操作. * 型號(hào)帶有后綴A則屬于改進(jìn)型,祥情需查閱相關(guān)器件的技術(shù)手冊(cè). 上述3個(gè)系列E2PROM的主要差別為: 2. Microwire總線串行E2PROM的指令集 共有7條操作指令,以NMC93C06(容量256位,組態(tài)1616位)和MNC93C46(容量1024位,6416位組態(tài))為例,這些指令也適用于其他的型號(hào). 32 地址碼A5A0為6位. 更大容量的器件地址碼擴(kuò)大到A7A0共8位, 增加了兩個(gè)地址位進(jìn)行尋址.各指令均由1位前導(dǎo)碼、2位操作碼、6或8位地址碼和16位數(shù)
20、據(jù)(寫入模式時(shí))組成. 333. Microwire總線串行E2PROM指令功能和時(shí)序 (1) READ指令(Read,讀出): 對(duì)指令和地址譯碼,把目標(biāo)地址的數(shù)據(jù)送到16位移位寄存器,D0口先輸出邏輯“0”,隨后輸出數(shù)據(jù)位D15D0,片選CS變低電平操作結(jié)束. 34(2) WEN指令(Erase/Write Enable,擦/寫允許) 又命名為EWEN,因上電時(shí)會(huì)自動(dòng)執(zhí)行WDS指令(擦/寫功能),所以在執(zhí)行任何擦/寫指令之前,須先執(zhí)行WEN指令. 符號(hào)“X”可為任意值,WEN指令的效果維持到執(zhí)行WDS指令或切斷供電電源才會(huì)結(jié)束. 35(3) ERASE指令(Eease,擦除) 把目標(biāo)地址所在
21、的數(shù)據(jù)位擦除為邏輯“1”.最后一位地址后, 片選CS下降沿啟動(dòng)內(nèi)部擦/寫周期,經(jīng)tcs(250微秒)后CS恢復(fù)高. DO為邏輯“0”時(shí)表示擦除“忙”,邏輯“1”時(shí)表示擦除完成. 36(4) WRITE指令(Write,寫入) 把16位數(shù)據(jù)寫入內(nèi)部指定地址.SK上升沿把DI最后一位送入后,片選CS須在下一個(gè)SK上升沿之前設(shè)為低,其下降沿啟動(dòng)內(nèi)部擦/寫周期, 250微秒后CS恢復(fù)高電平.DO可指示內(nèi)部寫入狀態(tài).37(5) ERAL指令(Erase All,整塊擦除) 把整塊儲(chǔ)存器的全部數(shù)位擦除為邏輯“1”,與ERASE指令類似.D0可指示出擦除的狀態(tài). 38(6) WRALL指令(Write Al
22、l,整塊寫入) 把16位數(shù)據(jù)寫入到整塊儲(chǔ)存器中.DO可指示出寫入狀態(tài). 39(7) WDS指令(Erase/Write Disable,擦/寫禁止) 有時(shí)候也被命名為EWDS.該指令的功能是禁止所有的擦/寫操作,防止數(shù)據(jù)被誤擦寫. 409.2.4 51系列單片機(jī)與Microwire串行E2PROM 的應(yīng)用 51系列單片機(jī)內(nèi)部沒有集成Microwire總線功能,可以利用軟件方法通過I/O口模擬Microwire時(shí)序,只需4條口線就能擴(kuò)展實(shí)現(xiàn)與 Microwire串行E2PROM的數(shù)據(jù)交換. 圖例的93C46由ORG接地, 組成1288位格式,單片機(jī)上電后自動(dòng)在93C46地址編號(hào)為1的存儲(chǔ)器寫入從
23、高到低的16位數(shù) 00011000,01100110.開關(guān)S按一次,從93C46讀出并顯示高8位,按二次顯示低8位,按三次發(fā)光二極管顯示全熄. 41AT89C52與93C46的實(shí)例電路 421. 實(shí)例電路的程序流程 先對(duì)芯片作一次擦除操作, 接著把數(shù)據(jù)分兩個(gè)8位字節(jié)寫入,再逐次按動(dòng)S,把數(shù)據(jù)讀出作顯示檢驗(yàn). 在顯示的數(shù)據(jù)中約定1為LED發(fā)亮,0為熄滅. 如果從高到低要顯示00011000(18H),則P1口需送出11100111(E7H). 432. 實(shí)例電路的C語言程序 采用C語言按上述流程圖編寫程序,93C46使用8Bit數(shù)據(jù)模式,讀和寫地址都為7位,程序中把地址與操作碼的最后一位合并成一
24、個(gè)字節(jié)寫入.源代碼見書本P.299303. 9.3 I2C總線擴(kuò)展技術(shù) 9.3.1 I2C總線概述 I2C總線又寫成I2C或IIC,是一種2線制世界范圍內(nèi)的工業(yè)接口標(biāo)準(zhǔn),單片機(jī)可以作為主設(shè)備與作為2線制外圍從設(shè)備進(jìn)行同步雙向串行傳輸. 44 I2C總線采用2條信號(hào)線:串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL. 所有主從設(shè)備均接在這兩條線上,每個(gè)從設(shè)備都有唯一的地址. 從設(shè)備量受到器件地址的限制, 且總線的最大電容量不應(yīng)超過400pF.傳輸速率沒有最低限制,最低可以為零. 1. I2C總線的主要特點(diǎn) 1)主從工作方式.2)從設(shè)備由分配的唯一地址與主設(shè)備通信,從 設(shè)備之間不能通信.3)共用一條雙向串行數(shù)
25、據(jù)線SDA作輸入/輸出, 與時(shí)鐘線SCL配合產(chǎn)生各種所需信號(hào). 454)主從設(shè)備是漏極或集電極開路結(jié)構(gòu),因此2 線必須接上拉電阻.5)總線驅(qū)動(dòng)能力強(qiáng),2線制總線的外圍器件由 CMOS技術(shù)制造,功耗低,總線的長度和總線 器件的數(shù)量由電容負(fù)載和從設(shè)備地址決定. 2. I2C總線擴(kuò)展連接 圖中的I2C總線連接了1個(gè)主設(shè)備(MCU,如有多個(gè)則屬多主設(shè)備 )和3個(gè)從設(shè)備,只要把所有主從設(shè)備的SDA線、SCL線相互連接, 兩線分別由上拉電阻連接電源VCC,就構(gòu)成整個(gè)傳輸系統(tǒng). 463. I2C總線接口的電氣結(jié)構(gòu) 屬雙向同步串行總線,SDA和SCL兩線的內(nèi)部結(jié)構(gòu)相同,通過上拉電阻接電源正極. 總線輸出端的場(chǎng)
26、效應(yīng)晶體管FET為集電極開路結(jié)構(gòu), 總線空閑時(shí)兩線為高電平.輸出級(jí)共同構(gòu)成線“與”關(guān)系. 47 SDA或SCL對(duì)應(yīng)的FET管截止時(shí),線輸出“1”; FET管導(dǎo)通時(shí),線輸出“0”.總線上的I2C器件通過SDA輸入緩沖器、SCL輸入緩沖器獲取總線上的數(shù)據(jù)、時(shí)鐘信號(hào).484. 多主式系統(tǒng)的總線仲裁 主設(shè)備需由具有I2C總線接口的MCU擔(dān)任,如果有兩個(gè)或多個(gè)主設(shè)備(MCU),稱為多主式系統(tǒng),會(huì)出現(xiàn)總線競爭的現(xiàn)象. MCU可直接把自身的SDA和SCL口線接入系統(tǒng),兩線內(nèi)部的硬件電路能通過線“與”操作自動(dòng)完成時(shí)鐘的同步和總線的仲裁, 防止多主設(shè)備同時(shí)啟動(dòng)數(shù)據(jù)傳輸而產(chǎn)生競爭現(xiàn)象, 使總線在同一時(shí)刻內(nèi)只有一個(gè)
27、主設(shè)備傳送數(shù)據(jù). 若總線只有一個(gè)主設(shè)備,稱為基本系統(tǒng),不會(huì)出現(xiàn)總線競爭,不存在總線仲裁問題. 495. I2C總線接口的單片機(jī)和外圍器件 I2C總線使用簡便,已經(jīng)廣泛地集成在各類器件中.附錄G為常見的I2C總線單片機(jī), 附錄H為部分I2C總線的器件,供檢索參考.9.3.2 I2C總線時(shí)序1. I2C總線信號(hào)的時(shí)序關(guān)系 50 I2C時(shí)鐘線SCL高電平時(shí),數(shù)據(jù)線SDA上的電平有效(高為數(shù)據(jù)“1”,低為數(shù)據(jù)“0”);時(shí)鐘線SCL低電平時(shí),允許SDA的數(shù)據(jù)變動(dòng). 主設(shè)備在時(shí)刻(1)產(chǎn)生SCL上升沿,在時(shí)刻(2)讀SDA數(shù)據(jù),在時(shí)刻(3)產(chǎn)生SCL下降沿. I2C總線基本的工作時(shí)序包括:啟動(dòng)總線、傳輸數(shù)
28、據(jù)、應(yīng)答和停止總線等. 2. 啟動(dòng)信號(hào)與停止信號(hào) I2C總線由主設(shè)備發(fā)出啟動(dòng)信號(hào)(S)啟動(dòng)總線:當(dāng)時(shí)鐘SCL線為高電平時(shí), 主設(shè)備使數(shù)據(jù)線SDA從高電平到低電平跳變,總線便啟動(dòng). 51 I2C總線由主設(shè)備發(fā)出停止信號(hào)(P)停止總線:主設(shè)備先釋放時(shí)鐘線SCL為高電平,然后使數(shù)據(jù)線SDA發(fā)生從低電平到高電平跳變,總線便終止. * 這種終止總線的操作可以發(fā)生在數(shù)據(jù)傳輸中途, 總線終止后需要新的啟動(dòng)信號(hào)才能再次啟動(dòng)總線. 523. 應(yīng)答信號(hào)與非應(yīng)答信號(hào) 總線中每一個(gè)8位地址或數(shù)據(jù)傳輸完后, 從設(shè)備都需發(fā)出應(yīng)答信號(hào)ACK(低電平)或非應(yīng)答信號(hào)ACK(高電平),均對(duì)應(yīng)第9個(gè)SCL時(shí)鐘信號(hào).從設(shè)備發(fā)送信號(hào)后
29、,釋放SDA線為高電平,完成傳輸.534. 數(shù)據(jù)傳輸過程 SCL低電平時(shí)屬準(zhǔn)備期允許數(shù)據(jù)變化,SCL高電平時(shí)屬數(shù)據(jù)傳輸期. 總線啟動(dòng)后主設(shè)備在SDA線上傳送的首字節(jié)作從設(shè)備選擇,傳輸順序從最高位到最低位, 其前7位為地址碼,末位為讀/寫方式位,“0”向從設(shè)備寫入數(shù)據(jù),“1”由從設(shè)備讀出. 從設(shè)備與總線發(fā)出的地址作比較,地址一致的從設(shè)備按照 讀/寫方式位要求作后續(xù)字節(jié)傳送,并在每個(gè)字節(jié)之后發(fā)出應(yīng)答信號(hào)ACK, 沒有傳送字節(jié)量的限制. 若SCL一直保持低電平可暫停傳輸.主設(shè)備最后發(fā)停止信號(hào).54 I2C總線連續(xù)傳輸數(shù)據(jù)的格式 主設(shè)備由從設(shè)備讀出數(shù)據(jù)字節(jié)時(shí),從設(shè)備每傳輸一個(gè)數(shù)據(jù)字節(jié), 主設(shè)備就發(fā)出一
30、位應(yīng)答ACK信號(hào),表示數(shù)據(jù)收到;數(shù)據(jù)字節(jié)全部讀完時(shí),主設(shè)備發(fā)出一位非應(yīng)答ACK信號(hào),然后停止總線. 9.3.3 I2C總線串行器件的數(shù)據(jù)傳輸方法 I2C總線的串行外圍器件(附錄H)可按生產(chǎn)廠商分配的器件地址進(jìn)行尋址,如串行E2PROM55分配的地址都為“1010”,串行溫度傳感器分配的地址為“1001”,用戶無法更改. 串行E2PROM的應(yīng)用最為廣泛,下面以AT24Cxx為例進(jìn)行方法討論. 1. 串行E2PROM的主要特點(diǎn) AT24Cxx系列屬于8位數(shù)據(jù)格式,可以雙向數(shù)據(jù)傳輸和頁區(qū)尋址.采用CMOS技術(shù)制造,功耗低(三態(tài)時(shí)約2mA,待機(jī)時(shí)約60A),均為8腳封裝.內(nèi)部設(shè)有自定時(shí)寫入周期和寫保護(hù)
31、功能,可擦寫10萬次以上,數(shù)據(jù)保留100年,電壓范圍從2.0到5.0V.常見型號(hào)有: 56AT24C01A 容量 1024 bits(1288)AT24C02 容量 2048 bits(2568)AT24C04 容量 4096 bits(5128) AT24C08 容量 8192 bits(10248)AT24C16 容量 16384 bits(20488) 2. 串行E2PROM的器件尋址 器件的引腳定義:A0A2 地址輸入線SDA 串行輸入/輸出線SCL 串行時(shí)鐘輸入線WP 寫保護(hù)線(或空腳NC)57VCC 供電電源線GND 接地線 WP接地器件可正常讀/寫操作,接VCC寫保護(hù). 7位地址
32、位中的前4位是器件地址,后3位是器件引腳A2A0的值,用作同型號(hào)器件的片選線(接VCC或GND),結(jié)合軟件編碼確定頁區(qū)首地址. 按256字節(jié)為一頁進(jìn)行分頁.AT24C02只有1頁,而AT24C04分為2頁,AT24C08分為4頁,AT24C16分為8頁.頁數(shù)超過1頁的器件通過引腳來表示頁區(qū)首址Pi(i取0或1).具體說:一個(gè)2頁的器件,A0被P0占用,編碼可以為0和1; 4頁的器件,A1和A0被58P1、P0占用,編碼可以為00、01、10和11;8頁的器件,A2、A1和A0被P2、P1和P0占用, 編碼可以為000111.器件的頁面首地址: * 多個(gè)同類型的器件,軟件編址Pi值后,只要頁面首
33、地址之間有256B的間隔,就不會(huì)地址重疊. 59器件的尋址字節(jié): 例1:I2C串行E2PROM器件的接線方式,硬件連 接與頁面編址示圖如下. 60 由于尋址的最大空間為2KB,因此I2C總線可以連接的器件數(shù)量如下:611片 AT24C16 (2KB/片)2片 AT24C08 (1KB/片)4片 AT24C04 (512B/片)8片 AT24C02 (256B/片)3. 串行E2PROM的讀/寫模式 串行E2PROM器件的5種讀/寫操作方法如下: (1) 字節(jié)寫入: 主設(shè)備啟動(dòng)總線(S),向器件寫入“器件尋址地址”字節(jié),器件返回“0”電平應(yīng)答ACK,主設(shè)備檢測(cè)62到后送第9個(gè)時(shí)鐘,接著寫入器件片
34、內(nèi)地址字節(jié),器件返回“0”應(yīng)答ACK, 最后主設(shè)備寫入數(shù)據(jù)字節(jié),器件返回“0”應(yīng)答ACK, 主設(shè)備停止總線(P).經(jīng)片內(nèi)自定時(shí)寫周期(約10ms)后可新一論寫入. 例2:“例1”中的24C04屬2頁器件,向2E單元(在 第1頁)寫入數(shù)值33H.實(shí)際SDA字節(jié)寫入為: (2) 頁區(qū)寫入 : 63 頁區(qū)(或稱頁面)寫入可一次連續(xù)寫入n個(gè)字節(jié)數(shù)據(jù),以某個(gè)地址單元開始,隨后每一數(shù)據(jù)字節(jié)的寫入地址會(huì)自動(dòng)加1,總線停止后只需啟動(dòng)一個(gè)自定義寫儲(chǔ)存器周期,而字節(jié)寫入要執(zhí)行n次總線的啟動(dòng)/停止過程.頁區(qū)寫入的格式為: 器件型號(hào)不同,頁區(qū)寫入的長度n會(huì)不同,超過n則會(huì)發(fā)生數(shù)據(jù)循環(huán)上卷(覆蓋).n字節(jié)數(shù)諸如: AT
35、24C01A/02 n8B AT24C04/08/16 n16B64例3:從2EH單元開始進(jìn)行頁區(qū)寫入數(shù)據(jù)33H, 34H,35H,36H,實(shí)際SDA頁區(qū)寫入為: (3) 現(xiàn)行地址讀 : 所有讀出操作只需把器件尋址地址中的最低位R/W改為“1”.每次讀/寫操作完成后只要維持系統(tǒng)工作狀態(tài)不變,則目標(biāo)地址仍然有效. 現(xiàn)行地址讀 能讀出上一次讀/寫操作所保持的地址加1的現(xiàn)行地址,而不必送入數(shù)據(jù)首地址. 65 主設(shè)備一旦送出器件尋址字節(jié),且器件返回了應(yīng)答信號(hào)ACK,現(xiàn)行地址的數(shù)據(jù)字節(jié)就能讀出,隨后主設(shè)備送出非應(yīng)答信號(hào)ACK(“1” 電平),并終止總線.現(xiàn)行地址讀的格式為: (4) 隨機(jī)讀出 : 可以讀
36、取任意地址的數(shù)據(jù),靈活性最大.首先使用“偽字節(jié)寫入” 送出器件的尋址字節(jié)(R/W 位為“0”)和器件的片內(nèi)地址字節(jié). 器件返回應(yīng) 66答信號(hào)ACK后,再重新啟動(dòng)總線(S),按現(xiàn)行地址讀方式讀出數(shù)據(jù), 現(xiàn)行地址讀方式送出器件尋址字節(jié)(R/W位為“1”). 器件返回應(yīng)答ACK后,目標(biāo)地址的數(shù)據(jù)便送入數(shù)據(jù)線SDA.主設(shè)備送出非應(yīng)答ACK(“1” 電平)并終止總線.隨機(jī)讀出的格式為: * “偽字節(jié)寫”不執(zhí)行“字節(jié)寫入”方式的寫操作, 而是重新啟動(dòng)總線并執(zhí)行“現(xiàn)行地址讀”,地 67址不會(huì)加1,就能讀出目標(biāo)地址的數(shù)據(jù). 例4:續(xù)上述“例1”,若2FH地址單元的數(shù)據(jù)為 34H,實(shí)際SDA的數(shù)據(jù)隨機(jī)讀出為:
37、(5) 序列讀出 : 序列讀出(或稱連續(xù)讀)方式可在執(zhí)行了 “現(xiàn)行地址讀”或“隨機(jī)讀”操作之后進(jìn)行.主設(shè)備每讀出一個(gè)字節(jié)數(shù)據(jù), 就返回一個(gè)應(yīng)答信號(hào)ACK.68 器件收到主設(shè)備的應(yīng)答ACK后,自動(dòng)把數(shù)據(jù)地址增1,輸出數(shù)據(jù)字節(jié). 所需字節(jié)讀完時(shí)主設(shè)備返回一個(gè)非應(yīng)答ACK(“1”電平)并終止總線. 注意: 連續(xù)讀出操作當(dāng)超過最大256B器件頁面地址時(shí),數(shù)據(jù)會(huì)上卷(復(fù)蓋). 序列讀出方式使數(shù)據(jù)地址自動(dòng)增1,主設(shè)備對(duì)每個(gè)讀出數(shù)據(jù)要給器件返回一個(gè)應(yīng)答ACK.主設(shè)備只需啟動(dòng)/停止總線一次. 699.3.4 51單片機(jī)與I2C串行E2PROM的擴(kuò)展應(yīng)用 1. 實(shí)例電路的結(jié)構(gòu)和原理 51單片機(jī)可用I/O口模擬I
38、2C總線接口功能. 70 89C51的兩條I/O口線模擬I2C總線,與24C04的I2C接口相連接,圖中24C04的A2、A1、A0均接地,頁區(qū)首址為000. 電路功能是:向24C04首頁的地址00寫入09共10個(gè)自然數(shù),然后依次讀出,送MC14495(見5.2.2節(jié))譯碼.最后由LED數(shù)碼管靜態(tài)顯示. MC14495輸出口內(nèi)部集成了290歐限流電阻,不必外加限流電阻可直接驅(qū)動(dòng)數(shù)碼管.控制線低電平時(shí)4位BCD碼直接譯碼輸出,在上升沿時(shí)鎖存,高電平保持顯示. 可顯示09、AF共16個(gè)字符,沒有熄滅碼.71 單片機(jī)讀出的10個(gè)自然數(shù),把低4位BCD碼送至P1.3 P1.0口,由按鍵S進(jìn)行顯示控制,
39、每按下S鍵一次,顯示一個(gè)數(shù)據(jù).2. 匯編語言程序的模塊化設(shè)計(jì) 程序模塊中把單片機(jī)稱為主節(jié)點(diǎn),把器件稱為從節(jié)點(diǎn).基本操作由9個(gè)模塊組成,由入口參數(shù)決定讀/寫字節(jié)數(shù). 時(shí)序脈沖寬度用空操作指令延時(shí)來滿足4.7s范圍.適于不帶I2C接口的單片機(jī)移植使用. 匯編語言E2PROM讀/寫子程序9個(gè)基本模塊為: 72 STA 啟動(dòng)I2總線 STP 停止I2總線 W8BIT 向從節(jié)點(diǎn)寫入8位 (BIT) R8BIT 向從節(jié)點(diǎn)讀出8位 (BIT) CACK 檢查從節(jié)點(diǎn)應(yīng)答位(ACK) MACK 主節(jié)點(diǎn)發(fā)送應(yīng)答位(ACK) NOACK 主節(jié)點(diǎn)發(fā)非應(yīng)答位(/ACK) WNBYT 向從節(jié)點(diǎn)隨機(jī)寫入N字節(jié) RNBYT
40、向從節(jié)點(diǎn)隨機(jī)讀出N字節(jié) 73使用的偽指令如下: SDA EQU P3.2 ; 數(shù)據(jù)線 SCL EQU P3.3 ; 時(shí)鐘線 SLAW EQU 18H ; 寫器件尋址頁 SLAR EQU 19H ; 讀器件尋址頁 子程序調(diào)用時(shí)賦初值如下: 18H 例如寫第1頁時(shí)賦 #A0H,即(#10100000B) 19H 例如讀第1頁時(shí)賦 #A1H,即(#10100001B) R0 RAM數(shù)據(jù)存/取首地址 R1 E2PROM數(shù)據(jù)存/取首地址 R3 數(shù)據(jù)個(gè)數(shù)計(jì)數(shù)74子程序模塊編寫例:(1) “啟動(dòng)總線”子程序及流程圖 STA:SETB SDA SETB SCL ;初始化為高 NOP CLR SDA ;先降 N
41、OP CLR SCL ;后降RET75(2) “停止總線”子程序及流程圖 STP:CLR SDA SETB SCL ;初始化為高 NOP SETB SDA ;先升 NOP CLR SDA ;再降 CLR SCL ;后降RET76(3) 8位“字節(jié)寫”子程序及流程圖 入口:AData (SDAp3.2, SCLp3.3) W8BIT: MOV R5,#08HWLP: RLC A MOV SDA,C SETB SCL ;啟動(dòng)脈沖 NOP CLR SCL ;停止脈沖 CLR SDA DJNZ R5,WLP RET77(4) 8位“字節(jié)讀”子程序及流程圖 R8BIT: MOV R5,#08HRLP:
42、SETB SDA SETB SCL ;啟動(dòng)脈沖 MOV C,SDA RLC A CLR SCL ;停止脈沖 DJNZ R5, RLP MOV R0, A RET注:用間接尋址R0存8位數(shù)據(jù)78(5) 查從節(jié)點(diǎn)“應(yīng)答ACK”子程序及流程圖 CACK: SETB SDA SETB SCL ;啟動(dòng)脈沖 CLR F0 MOV C,SDA JNC CEND SETB F0CEND: CLR SCL ;停止脈沖 RET注: F0=0表示有ACK回應(yīng).79(6) 主節(jié)點(diǎn)發(fā)“應(yīng)答ACK”子程序及流程圖 MACK:SETB SDA SETB SCL ;啟動(dòng)脈沖 NOP NOP CLR SCL ;停止脈沖 SET
43、B SDA RET80(7) 主節(jié)點(diǎn)發(fā)“非應(yīng)答ACK”子程序及流程圖 NOACK:SETB SDA SETB SCL;啟動(dòng)脈沖 NOP NOP CLR SCL ;停止脈沖 CLR SDA RET81(8) “隨機(jī)寫N字節(jié)”子程序 WNBYT:LCALL STA ; 啟動(dòng)總線 MOV A, SLAW ; 器件地址(寫) LCALL W8BIT ; 寫器件字節(jié) LCALL CACK ; 查從節(jié)點(diǎn)ACK JB F0, WNBYT ; 無ACK,重寫 MOV A, R1 ; E2PROM 地址 LCALL W8BIT ; 寫地址字節(jié) LCALL CACK ; 查從節(jié)點(diǎn)ACK JB F0, WNBYT
44、; 無ACK,重寫82WRDA: MOV A, R0 ; RAM地址 LCALL W8BIT ; 寫地址字節(jié) LCALL CACK ; 查從節(jié)點(diǎn)ACK JB F0, WNBYT ; 無ACK,重寫 INC R0 ; RAM地址增1 DJNZ R3,WRDA ; 字節(jié)計(jì)數(shù)完? LCALL STP ; 停止總線 RET83(9) “隨機(jī)讀N字節(jié)”子程序 RNBYT:LCALL STA ; 啟動(dòng)總線 MOV A, SLAW ; 器件地址(寫) LCALL W8BIT ; 寫器件字節(jié) LCALL CACK ; 查從節(jié)點(diǎn)ACK JB F0, RNBYT ; 無ACK,重讀! MOV A, R1 ; E2
45、PROM 地址 LCALL W8BIT ; 寫地址字節(jié) LCALL CACK ; 查從節(jié)點(diǎn)ACK JB F0, RNBYT ; 無ACK,重讀! LCALL STA ; 再啟動(dòng)總線 MOV A, SLAR ; 器件地址(讀) LCALL W8BIT ; 寫器件字節(jié)84 LCALL CACK ; 查從節(jié)點(diǎn)ACK JB F0, RNBYT ; 無ACK,重讀! RDDA: LCALL R8BIT ; 讀數(shù)據(jù)字節(jié) MOV R0, A ; 數(shù)據(jù)存 RAM DJNZ R3, CYC ; 數(shù)據(jù)字節(jié)完 ? LCALL NOACK ; 主節(jié)點(diǎn)送非ACK LJMP REND CYC: LCALL MACK ;
46、主節(jié)點(diǎn)送ACK INC R0 ; RAM增1 ;(E2PROM自動(dòng)增1) LJMP RDDA ; 循環(huán)讀數(shù)據(jù) REND: LCALL STP ; 停止總線 RET 853. 實(shí)例電路的C語言主程序流程圖 864. 實(shí)例電路的C語言程序源代碼 含讀/寫操作函數(shù)和主程序,詳見書P.314319.9.4 單總線擴(kuò)展技術(shù) 單總線(1-Wire Bus)只需要一條信號(hào)線和一條地線,單線實(shí)行半雙工通信,傳輸時(shí)鐘和雙向數(shù)據(jù),可掛接多個(gè)單總線從器件并兼作電源線. 每個(gè)單總線器件內(nèi)部固化了全球唯一的64位器件ID(標(biāo)識(shí)碼). 實(shí)現(xiàn)了傳統(tǒng)并行總線的地址線、數(shù)據(jù)線和控制線三大總線的功能. 9.4.1 單總線概述87
47、1. 單總線器件 Dallas-MAXIM公司生產(chǎn)的單總線器件有兩類:傳統(tǒng)芯片封裝和不銹鋼外殼式iButton(信息紐扣)封裝.iButton器件有F3和F5兩種厚度,如圖: 不銹鋼紐扣外殼作為地線,背面的金屬觸點(diǎn)作為信號(hào)線,設(shè)計(jì)成接觸式可熱拔插的器件.882. 單總線的特點(diǎn) 1) 主從設(shè)備之間的連接簡單、連線少. 2) 器件采用CMOS技術(shù)制造,功耗極低(靜態(tài)電 流A級(jí)),可通過單總線由主設(shè)備供電. 3) 單總線上可掛接數(shù)百個(gè)以上的單總線器件, 主設(shè)備通過內(nèi)部唯一的ID碼識(shí)別器件. 4) 單主多從的雙向半雙工串行通信方式. 5) 主從設(shè)備都為開漏結(jié)構(gòu), 總線上需要外接 上拉電阻. * 典型的
48、1-Wire器件型號(hào)見書本P.319 899.4.2 單總線工作原理 單總線上掛接的多個(gè)單總線器件(從設(shè)備)可由單片機(jī)(主設(shè)備)的I/O口直接驅(qū)動(dòng).單總線主/從設(shè)備的電路連接方式如圖: 小規(guī)模系統(tǒng)的從設(shè)備可用插件接入,引線最長5m.用沒有屏蔽的雙絞線接入電纜,最長可25m. 90單片機(jī)與單總線器件連接的內(nèi)部結(jié)構(gòu)圖 * 單片機(jī)的I/O口為開漏結(jié)構(gòu),需外接上拉電阻R. 91 單總線器件內(nèi)部存儲(chǔ)了一個(gè)激光刻制的8字節(jié)ROM單元, 含有64位全球唯一的ID(標(biāo)識(shí)碼,又稱注冊(cè)碼).ROM格式為: ID碼組成:第1字節(jié)為8位家族碼(產(chǎn)品類型的分類標(biāo)志),6字節(jié)的48位地址序列號(hào)(總量可達(dá)248個(gè),足夠數(shù)量
49、分配使器件地址不沖突,最后1字節(jié)屬循環(huán)冗余校驗(yàn)碼(CRC).92 器件內(nèi)部設(shè)有生成CRC校驗(yàn)碼硬件電路(CRC多項(xiàng)式發(fā)生器由移位寄存器和異或門比較電路組成),以DS1990A器件為例,CRC的多項(xiàng)式如下: CRCX8+X5+X4+1 CRC校驗(yàn)碼由軟件方法產(chǎn)生:主設(shè)備收到64位器件ID碼后, 用56位數(shù)據(jù)(最后1字節(jié)除外)作為X值參與計(jì)算CRC值,并與接收到的8位CRC值作比較,數(shù)值相同則傳輸無誤,否則重新傳輸. 內(nèi)部寄生供電電路:單總線高電平時(shí)通過二極管VD向芯片供電,并對(duì)內(nèi)部電容C充電.低電平時(shí)93二極管截止,內(nèi)部電容C向芯片供電.單總線應(yīng)能間隔不斷提供高電平對(duì)C充電以維持器件工作. 單總
50、線強(qiáng)上拉供電用場(chǎng)效應(yīng)管提供(除了上拉電阻外),以確保某些器件的足夠工作電流. 單總線傳輸速率一般為16.3Kbit/s,最大可達(dá)142Kbit/s,通常采用100Kbit/s 以下的速率.主設(shè)備I/O口 可直接驅(qū)動(dòng)200m范圍內(nèi)的從設(shè)備,經(jīng)擴(kuò)展可達(dá)1km. 9.4.3 單總線信號(hào)傳輸時(shí)序單總線器件均須嚴(yán)格遵循單總線的通信協(xié)議. 94單總線接口基本通信流程圖: 基本通信流程包括:初始化;ROM命令傳輸;功能命令傳輸. 均由復(fù)位脈沖、應(yīng)答脈沖、寫“0”、寫“1”、讀“0”和讀“1”等幾種基本時(shí)序組成. 除應(yīng)答信號(hào)外,上述時(shí)序均由主設(shè)備發(fā)出,字節(jié)均按低位在前,高位在后的順序進(jìn)行傳輸(與串行同步通信的
51、不同,與異步串行通信的相同) 95 單總線的串行通信分為標(biāo)準(zhǔn)模式和高速模式,默認(rèn)用標(biāo)準(zhǔn)模式,單總線的基本信號(hào)時(shí)序?yàn)? 961. 初始化時(shí)序 見圖a),包括主設(shè)備發(fā)出的復(fù)位脈沖和從設(shè)備返回的應(yīng)答脈沖.主設(shè)備拉低單總線480960us產(chǎn)生TX,然后釋放總線(經(jīng)上拉電阻拉回高電平),轉(zhuǎn)為接收狀態(tài)RX.從設(shè)備檢測(cè)到釋放時(shí)產(chǎn)生的上97升沿跳變,延時(shí)1560us后拉低總線60240us產(chǎn)生應(yīng)答脈沖.主設(shè)備檢測(cè)到從設(shè)備的應(yīng)答后,開始向從設(shè)備傳輸ROM命令和功能命令.主設(shè)備的RX監(jiān)測(cè)時(shí)間至少在480us以上. 2. 寫“1”時(shí)序 見圖b),主設(shè)備先拉低總線電平,在115us內(nèi)由上拉電阻拉高電平釋放總線,并至少
52、保持60us.從設(shè)備在1560us內(nèi)讀取總線電平狀態(tài),便完成了數(shù)據(jù)“1”的傳輸.兩個(gè)獨(dú)立時(shí)段(或稱時(shí)隙)之間的數(shù)據(jù)寫入至少應(yīng)有1us的恢復(fù)時(shí)間. 983. 寫“0”時(shí)序 見圖c),主設(shè)備先拉低總線電平,115us后繼續(xù)保持低電平至少60us,從設(shè)備1560us內(nèi)讀取總線電平狀態(tài),便完成了數(shù)據(jù)“0”的傳輸.兩個(gè)獨(dú)立時(shí)段之間的數(shù)據(jù)寫入至少應(yīng)有1us恢復(fù)時(shí)間. 4. 讀“1”時(shí)序 見圖d),主設(shè)備先發(fā)起把總線拉低115us.若從設(shè)備隨后送出“1”,則總線變?yōu)楦唠娖?電平有效時(shí)間為15us. 主設(shè)備在該時(shí)段內(nèi)對(duì)總線采樣,然后從設(shè)備大于15us小于60us時(shí)間內(nèi)釋放總線,恢復(fù)高電平,完成讀“1”的操作.
53、兩個(gè)獨(dú)立時(shí)段之99間的數(shù)據(jù)讀出至少應(yīng)有1us的恢復(fù)時(shí)間.5. 讀“0”時(shí)序 見圖e),主設(shè)備先發(fā)起把總線拉低115us.若從設(shè)備隨后送出“0”,則總線變?yōu)榈碗娖?電平有效時(shí)間為15us. 主設(shè)備在該時(shí)段內(nèi)對(duì)總線采樣,然后從設(shè)備大于15us小于60us時(shí)間內(nèi)釋放總線,恢復(fù)高電平,完成讀“0”的操作.兩個(gè)獨(dú)立時(shí)段之間的數(shù)據(jù)讀出至少應(yīng)有1us的恢復(fù)時(shí)間. * 讀時(shí)序需在主設(shè)備發(fā)出讀數(shù)據(jù)的ROM命令后馬上產(chǎn)生,從設(shè)備才開始往總線發(fā)送“0”或“1”. 1009.4.4 單總線的ROM命令 單總線有7個(gè)長度為1字節(jié)的ROM命令,主要用來管理和識(shí)別單總線器件,實(shí)現(xiàn)“片選”功能. 主設(shè)備初始化檢測(cè)到單總線的應(yīng)
54、答脈沖后就可以發(fā)出ROM命令,與各單總線器件的 64位ID碼相關(guān),能檢測(cè)出單總線上連接的從設(shè)備數(shù)量及類型,或檢測(cè)出是否有從設(shè)備處于報(bào)警狀態(tài). 各個(gè)ROM命令及其功能如下:1. 搜索ROM 命令碼F0h 系統(tǒng)上電啟動(dòng)時(shí),主設(shè)備可通過循環(huán)執(zhí)行搜索ROM命令,用排除法獲取總線所有從設(shè)備的ID碼. 101 循環(huán)搜索分三個(gè)步驟:讀出一位、讀該位的補(bǔ)碼、向該位寫入指定值. 按這三個(gè)步驟逐位重復(fù)執(zhí)行,根據(jù)兩次讀得的狀態(tài)值判斷并選擇不同的搜索分支,所有與該值不匹配的從設(shè)備隨后都不被搜索,重復(fù)執(zhí)行直到第64位操作完畢. 經(jīng)過一次完整的搜索過程,主設(shè)備就可知道某個(gè)從設(shè)備的ID碼.重復(fù)執(zhí)行同樣的搜索過程可以識(shí)別其余
55、從設(shè)備的ID碼.2. 讀ROM 命令碼33h適用于總線上只有一個(gè)從設(shè)備的場(chǎng)合,主設(shè)備102無需執(zhí)行搜索ROM過程,可直接讀出從設(shè)備的64位ID碼.若總線上接有多個(gè)從設(shè)備,會(huì)產(chǎn)生數(shù)據(jù)沖突. 3. 匹配ROM 命令碼55h 適用于總線有多個(gè)從設(shè)備的場(chǎng)合,允許主設(shè)備對(duì)某個(gè)指定的從設(shè)備進(jìn)行尋址.該命令后隨64位ID碼,從設(shè)備把收到的ID碼與自身的ID碼進(jìn)行比較,匹配的從設(shè)備才會(huì)響應(yīng)主設(shè)備發(fā)出的功能命令,否則保持等待狀態(tài). 4. 跳躍ROM 命令碼CCh 適用于總線上只有一個(gè)從設(shè)備的場(chǎng)合,主設(shè)備103不需發(fā)64位ID碼,可直接訪問芯片進(jìn)行數(shù)據(jù)交換.如果存在多個(gè)從設(shè)備,也會(huì)發(fā)生數(shù)據(jù)沖突.5. 條件查找RO
56、M 命令碼ECh 適用于有少量單總線器件的場(chǎng)合,等同于搜索ROM 命令,允許主設(shè)備檢測(cè)哪些從設(shè)備發(fā)生了條件報(bào)警(如欠電壓、過溫、欠溫等). 6. 超速跳躍ROM 命令碼3Ch 適用于只有一個(gè)從設(shè)備的場(chǎng)合.單總線設(shè)置為超速模式執(zhí)行 跳躍ROM命令,直接訪問芯片進(jìn)行數(shù)據(jù)交換.1047. 超速匹配ROM 命令碼69h 適用于有多個(gè)從設(shè)備的場(chǎng)合.單總線設(shè)置為超速模式執(zhí)行 匹配ROM命令,對(duì)從設(shè)備尋址. 9.4.5 單總線的的功能命令 功能命令主要實(shí)現(xiàn)單總線器件RAM存儲(chǔ)器的讀寫操作和數(shù)據(jù)交換.主設(shè)備發(fā)出ROM命令后,可接著發(fā)某從設(shè)備的具體功能命令,如訪問溫度傳感器 DS18B20時(shí),發(fā)跳躍ROM命令,接著是溫度轉(zhuǎn)換命令44h.若ROM命令后隨讀暫存器命令BEh,只適于一個(gè)從設(shè)備,而多個(gè)從設(shè)備會(huì)數(shù)據(jù)沖突. 1059.4.6 51系列單片機(jī)與單總線器件的擴(kuò)展應(yīng)用 圖例是由單片機(jī)89C51與單總線iButton結(jié)構(gòu)的DS1990A(電子標(biāo)識(shí))組成主從通信電路. 106 單總線上只有一個(gè)從設(shè)備,單片機(jī)通過讀ROM命令33h直接讀取DS1990A的64位ID碼,演示初始化、寫“1”、寫“0”、讀“1”、讀“0”等基本信號(hào)時(shí)序的實(shí)現(xiàn)過程. 電路上電后指示燈
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人機(jī)測(cè)繪技術(shù)在建筑工程測(cè)量中的應(yīng)用
- 石河子大學(xué)《智能計(jì)算系統(tǒng)》2022-2023學(xué)年期末試卷
- 石河子大學(xué)《虛擬儀器》2021-2022學(xué)年第一學(xué)期期末試卷
- 婚外情檢討書(合集四篇)
- 石河子大學(xué)《外國刑法學(xué)原理》2022-2023學(xué)年期末試卷
- 石河子大學(xué)《入學(xué)教育與軍事技能》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《化工原理實(shí)驗(yàn)二》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《現(xiàn)代控制理論》2021-2022學(xué)年期末試卷
- 沈陽理工大學(xué)《汽車設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《計(jì)算機(jī)控制系統(tǒng)》2021-2022學(xué)年期末試卷
- 第五節(jié) 錯(cuò)覺課件
- 2024-2030年陜西省煤炭行業(yè)市場(chǎng)發(fā)展分析及發(fā)展前景預(yù)測(cè)研究報(bào)告
- 【課件】Unit+3+SectionB+1a-2b+課件人教版英語七年級(jí)上冊(cè)
- 干部人事檔案任前審核登記表范表
- 期中階段測(cè)試卷(六)-2024-2025學(xué)年語文三年級(jí)上冊(cè)統(tǒng)編版
- 北京市昌平區(qū)2023-2024學(xué)年高二上學(xué)期期末質(zhì)量抽測(cè)試題 政治 含答案
- 國開2024年《中國法律史》平時(shí)作業(yè)1-3答案
- 李燕璇植樹問題卡通版5
- 有砟軌道鋪設(shè)的施工講解
- 煙草專賣食堂燃?xì)庑孤都盎馂?zāi)事故現(xiàn)場(chǎng)應(yīng)急處置方案
- 國家電網(wǎng)公司十八項(xiàng)反措
評(píng)論
0/150
提交評(píng)論