第12章MC9S12系列SPI和I2C模塊及其應(yīng)用實例_第1頁
第12章MC9S12系列SPI和I2C模塊及其應(yīng)用實例_第2頁
第12章MC9S12系列SPI和I2C模塊及其應(yīng)用實例_第3頁
第12章MC9S12系列SPI和I2C模塊及其應(yīng)用實例_第4頁
第12章MC9S12系列SPI和I2C模塊及其應(yīng)用實例_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)MC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)合肥工業(yè)大學(xué)張 陽,吳 曄,滕 勤 Email:, TEL13505612773MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)第12章 MC9S12系列SPI和I2C模塊及其應(yīng)用實例l SPI模塊 l SPI模塊結(jié)構(gòu)組成和特點l SPI模塊寄存器及設(shè)置l SPI模塊應(yīng)用實例l I2C總線接口l I2C模塊結(jié)構(gòu)組成和特點l I2C模塊寄存器及設(shè)置l I2C模塊在智能車系統(tǒng)中的應(yīng)用MC9S12XSMC9S12X

2、S單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.1 SPI模塊模塊串行外設(shè)接口(Serial Peripheral Interface,SPI)總線系統(tǒng)是一種同步串行外設(shè)接口,可以用于MCU與各種外圍設(shè)備間以串行方式進行通信。外圍設(shè)備包括EEPROM、Flash、實時時鐘模塊、液晶顯示模塊、AD轉(zhuǎn)換器等。SPI總線接口由一個主設(shè)備和一個或多個從設(shè)備組成,主設(shè)備啟動與從設(shè)備的同步通信,從而完成數(shù)據(jù)傳輸。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.1 SPI模塊模塊SPI總線接口一般需要使用總線接口一般需要使用4根線連接,根線連接,如圖如圖

3、12.1所示。所示。 MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.1 SPI模塊模塊 串行時鐘(Serial Clock,SCK)線是主機和從機之間數(shù)據(jù)傳輸?shù)耐叫盘?。對于主機而言,SCK是時鐘輸出引腳;對于從機則SCK是時鐘輸入引腳。在主機模式下,SCK時鐘信號來源于主機(如微控制器)內(nèi)部總線時鐘。如果傳輸數(shù)據(jù)寬度為8位,則每當(dāng)主機發(fā)起一次傳送時,則SCK引腳上就會產(chǎn)生8個時鐘周期。在主機與從機之間,數(shù)據(jù)傳輸發(fā)生在SCK信號的跳變沿(如上升沿),等待數(shù)據(jù)穩(wěn)定后,在另一個SCK跳變沿(如下降沿)采集數(shù)據(jù)。 主機輸入、從機輸出(Master In/S

4、lave Out,MISO)數(shù)據(jù)線是SPI模塊的兩根串行數(shù)據(jù)線之一。在全雙工模式下,SPI主機的MISO連接到SPI從機的MISO,這樣,數(shù)據(jù)由從機傳送到主機。在SPI設(shè)備配置為主機工作模式時,主機通過其MISO引腳接收數(shù)據(jù)。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.1 SPI模塊模塊 主機輸出、從機輸入(Master Out /Slave In,MOSI)數(shù)據(jù)線是SPI模塊的另外一根串行數(shù)據(jù)線。在全雙工模式下,SPI主機的MOSI連接到SPI從機的MOSI。這樣,主機通過MOSI發(fā)送數(shù)據(jù)的同時,從機通過MOSI接收數(shù)據(jù)。在SPI設(shè)備配置為主機工

5、作模式時,主機通過其MOSI引腳發(fā)送數(shù)據(jù)。 從機選擇線SS(低電平有效)。 SS (Slave Select)在主機和從機模式中具有不同的功能。在從機模式下, 是一次數(shù)據(jù)傳輸開始前允許SPI工作的片選信號;在主機模式下, SS可以置位MODF標(biāo)志位,保證一個系統(tǒng)只有一個SPI接口作為主機。從圖12.1可以看出,SPI主從機接口的工作原理,如同一個移位寄存器,一半在主機內(nèi),一半在外設(shè)中。當(dāng)SPI工作時,通過串行時鐘線SCK的同步信號,循環(huán)移位,從而實現(xiàn)了主機與外設(shè)的數(shù)據(jù)交換。實際使用時,這種數(shù)據(jù)交換可能按照一個方向移位,具體的數(shù)據(jù)流動方向與工作方式有關(guān)。MC9S12XSMC9S12XS單片機原理

6、及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.1 SPI模塊模塊SPI的工作模式主要有以下三種。 主機模式。在主機模式下,串行時鐘(SCK)由主機內(nèi)部時鐘分頻得 到 , 用 來 同 步 主 / 從 機 雙 方 移 位 寄 存 器 的 數(shù) 據(jù) 傳 輸 。 當(dāng) 向 主 機MC9S12XS128的SPI數(shù)據(jù)寄存器SPIDR寫入數(shù)據(jù)后,數(shù)據(jù)傳送開始。如果此時主機SPI移位寄存器為空,則數(shù)據(jù)立即被傳送到移位寄存器,數(shù)據(jù)在SCK的控制下從主機MOSI引腳串行輸出,傳送給從機設(shè)備。從MOSI引腳輸出數(shù)據(jù),從MISO引腳輸入數(shù)據(jù)。 從機模式。在從機模式下,從機串行時鐘(SCK)由主機產(chǎn)生,從機SPI的SCK

7、引腳為輸入口。 引腳為從機的片選輸入引腳,低電平有效,在數(shù)據(jù)傳送前需要置為低電平,并保持到數(shù)據(jù)傳送結(jié)束。從機通過SCK與主機同步,進行數(shù)據(jù)的讀/寫操作,從MOSI引腳輸入數(shù)據(jù),從MISO引腳輸出數(shù)據(jù)。 全雙工模式(即雙向工作模式)。在全雙工模式下,無論是主機模式還是從機模式,同時只用一個引腳傳輸數(shù)據(jù)。數(shù)據(jù)傳輸方向由主機MC9S12XS128的SPICR2寄存器中的BIDIROE位進行選擇,詳見后面的寄存器部分介紹。MC9S12XS128內(nèi)置有1個SPI接口模塊SPI0,使用端口PORTS4PORTS7。以下著重介紹SPI模塊的特性、寄存器功能及設(shè)置,并通過應(yīng)用實例,說明SPI模塊的編程實現(xiàn)。M

8、C9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.2 SPI模塊結(jié)構(gòu)組成和特點模塊結(jié)構(gòu)組成和特點MC9S12XS128內(nèi)置的SPI模塊如圖12.2所示。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.2 SPI模塊結(jié)構(gòu)組成和特點模塊結(jié)構(gòu)組成和特點SPI模塊具有以下基本特征:l 正常模式:主機模式和從機模式;l 全雙工模式;l 從機選擇輸出;l 具有CPU中斷能力的模式故障錯誤標(biāo)志;l 雙緩沖操作;l 極性和相位可編程的串行時鐘。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12

9、.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置 MC9S12XS128的SPI模塊共有5個寄存器,詳見表12-1。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.1 SPI控制寄存器控制寄存器1(SPICR1) SPI控制寄存器1(SPI Control Register 1,SPICR1)如圖12.3所示。讀:任何時刻;寫:任何時刻。SPIE:SPI中斷使能位,該位使能允許SPI狀態(tài)標(biāo)志位SPIF或者MODF產(chǎn)生中斷請求。0表示禁止SPI中斷請求;1表示允許SPI中斷請求。SPE:SPI模塊功能使能位

10、,該位使能允許使用SPI模塊功能并設(shè)置相應(yīng)的端口引腳為SPI模塊功能應(yīng)用。如果清零SPE位,SPI模塊禁用且被強制進入空閑狀態(tài),SPISR寄存器中的狀態(tài)位復(fù)位。0表示禁用SPI模塊功能(應(yīng)用于低功耗);1表示使用SPI模塊功能。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.1 SPI控制寄存器控制寄存器1(SPICR1) SPTIE:SPI發(fā)送中斷使能位,該位使能允許SPI狀態(tài)標(biāo)志位SPTEF產(chǎn)生中斷請求。0表示禁止SPTEF中斷請求;1表示允許SPTEF中斷請求。MSTR:SPI主/從模式選擇位,

11、該位確定SPI模塊工作在主機模式還是從機模式。將SPI模塊從主機模式切換到從機模式,或者反向切換,都會使SPI系統(tǒng)進入空閑狀態(tài)。0表示從機模式;1表示主機模式。CPOL:SPI時鐘極性選擇位,該位確定時鐘SCK極性為反向還是非反向。為了保證兩個SPI模塊之間傳輸數(shù)據(jù),SPI模塊必須設(shè)置相同的CPOL位值。主機模式下,該位變化將終止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。0表示時鐘SCK高電平有效,低電平空閑;1表示時鐘SCK低電平有效,高電平空閑。CPHA:SPI時鐘相位選擇位,該位確定SPI時鐘模式。主機模式下,該位變化將終止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。0

12、表示在時鐘SCK奇數(shù)邊沿(1、3、5、)采樣數(shù)據(jù);1表示在時鐘SCK偶數(shù)邊沿(2、4、6、)采樣數(shù)據(jù)。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.1 SPI控制寄存器控制寄存器1(SPICR1)SPI的時鐘模式如圖12.4和圖12.5所示。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.1 SPI控制寄存器控制寄存器1(SPICR1)SSOE:從機選擇輸出使能位。當(dāng)SPICR2寄存器中的MODFEN置位時

13、,主機模式下,通過設(shè)置SSOE位確定SS引腳輸入/輸出特性,詳見表12-2。主機模式下,該位變化將終止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。LSBFE:SPI最低位LSB先發(fā)送使能位,該位不影響數(shù)據(jù)寄存器中最高位MSB和最低位LSB的位置,讀取或?qū)懭霐?shù)據(jù)寄存器, MSB總是在第7位。主機模式下,該位變化將終止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。0表示SPI先傳送數(shù)據(jù)最高位MSB;1表示SPI先傳送數(shù)據(jù)最低位LSB。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.2 SPI

14、控制寄存器控制寄存器2(SPICR2) SPI控制寄存器2(SPI Control Register 2,SPICR2)如圖12.6所示。讀:任何時刻;寫:任何時刻,寫保留位無效。XFRW:傳送數(shù)據(jù)寬度位, 該位確定SPI傳送數(shù)據(jù)寬度。如果選擇8位數(shù)據(jù)傳送寬度,則使用SPIDRL作為數(shù)據(jù)寄存器而不使用SPIDRH。如果選擇16位數(shù)據(jù)傳送寬度,則使用SPIDRH和SPIDRL組成16位數(shù)據(jù)寄存器。請參考12.3.4節(jié)關(guān)于發(fā)送/接收數(shù)據(jù)掛起和中斷標(biāo)志位清除機制的信息。主機模式下,該位變化將中止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。0表示傳送8位數(shù)據(jù)寬度;1表示傳送16位數(shù)據(jù)寬度。MC

15、9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.2 SPI控制寄存器控制寄存器2(SPICR2) MODFEN:模式錯誤使能位,該位使能允許檢測SPISR 寄存器中的模式錯誤標(biāo)志位MODF。如果SPI為主機模式且MODFEN位為“0”時,則SS引腳不能應(yīng)用于SPI模塊功能,僅作為通用I/O口使用;如果SPI為從機模式,無論MODFEN為何值,SS引腳都作為SPI模塊輸入功能使用。MODFEN位設(shè)置對SS引腳的功能影響參見表12-2。主機模式下,該位變化將終止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模

16、式。0表示SS引腳不使用SPI模塊功能; 1表示SS引腳使用SPI模塊功能,具有MODF位特性。BIDIROE:雙向工作模式下輸出使能位。當(dāng)SPC0=1,SPI模塊處于雙向工作模式時,該位確定SPI模塊MOSI和MISO的輸出緩沖。主機模式下,該位確定MOSI端口的輸出緩沖;從機模式下,該位確定MISO端口的輸出緩沖。主機模式下,當(dāng)SPC0置位時,該位變化將終止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。0表示禁止輸出緩沖功能;1表示允許輸出緩沖功能。SPISWAI:等待模式下SPI模塊時鐘停止位,該位用于等待模式下的低功耗應(yīng)用。0表示等待模式下SPI模塊時鐘正常工作;1表示等待模式下

17、SPI模塊時鐘停止工作。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.2 SPI控制寄存器控制寄存器2(SPICR2) SPC0:串行引腳控制位0,該位確定雙向引腳的功能配置,詳見表12-3。主機模式下,該位變化將終止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.3 SPI波特率寄存器(波特率寄存器(SPIBR) SPI波特率寄存器(SPI Baud R

18、ate Register,SPIBR)如圖12.7所示。讀:任何時刻;寫:任何時刻,對保留位寫操作無效。SPPR2SPPR0:SPI波特率預(yù)分頻位。主機模式下,這些位的變化將中止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。SPR2SPR0:SPI波特率選擇位。主機模式下,這些位的變化將中止正在進行的數(shù)據(jù)傳送,且SPI系統(tǒng)被強制進入空閑模式。這些位的配置可以選擇不同的SPI波特率,波特率選擇配置詳見表12-4。波特率計算公式為波特率分頻系數(shù) = (SPPR+1)2(SPR+1)波特率=總線時鐘/波特率分頻系數(shù)MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)

19、開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.3 SPI波特率寄存器(波特率寄存器(SPIBR)MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.3 SPI波特率寄存器(波特率寄存器(SPIBR)MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.4 SPI狀態(tài)寄存器(狀態(tài)寄存器(SPISR) SPI狀態(tài)寄存器(SPI Status Register,SPISR)如圖12.8所示。讀:任何時刻;寫:

20、無效。SPIF:SPIF中斷標(biāo)志位。接收到的數(shù)據(jù)被傳送至SPI數(shù)據(jù)寄存器SPIDR后,該位置位。關(guān)于清除SPIF位的詳細(xì)說明,參見表12-5。0表示數(shù)據(jù)傳送沒有完成;1表示數(shù)據(jù)已傳送到SPI數(shù)據(jù)寄存器。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.4 SPI狀態(tài)寄存器(狀態(tài)寄存器(SPISR)注1:這種情況下,SPIDRH寄存器中的數(shù)據(jù)丟失。注2:SPIDRH可以被重復(fù)讀取數(shù)據(jù),對SPIF位沒有任何影響。只有在SPIF=1時,讀取SPISR寄存器,之后再讀取SPIDRL寄存器,則SPIF位才能清除。

21、MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.4 SPI狀態(tài)寄存器(狀態(tài)寄存器(SPISR) SPTEF:SPI發(fā)送空中斷標(biāo)志位。當(dāng)發(fā)送數(shù)據(jù)寄存器為空SPIDR時,該位置位。關(guān)于清除該標(biāo)志位以及發(fā)送SPIDR寄存器中的數(shù)據(jù)的詳細(xì)說明,參見表12-6。0表示SPI數(shù)據(jù)寄存器SPIDR非空;1表示SPI數(shù)據(jù)寄存器SPIDR已空。注1:SPTEF=0時,任何對SPIDRH或SPIDRL寄存器寫操作會被忽略。注2:這種情況下,SPIDRH中的數(shù)據(jù)無效。注3:SPIDRH可以被重復(fù)寫入數(shù)據(jù),對SPIF位沒有任

22、何影響。只有在SPTEF=1時,讀取SPISR寄存器,之后再寫SPIDRL寄存器,則SPTEF位才能清除。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.4 SPI狀態(tài)寄存器(狀態(tài)寄存器(SPISR) MODF:模式錯誤標(biāo)志位。當(dāng)SPI配置為主機時,且SPICR2寄存器中的MODFEN=1時,如果主機檢測到SS引腳輸入變低,該位置位。當(dāng)MODF置位后,通過讀取SPI狀態(tài)寄存器SPISR,然后寫數(shù)據(jù)到SPI控制寄存器SPICR1清除該位。0表示模式錯誤未發(fā)生;1表示模式錯誤已發(fā)生。MC9S12XSMC9

23、S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.5 SPI數(shù)據(jù)寄存器(數(shù)據(jù)寄存器(SPIDR:SPIDRH,SPIDRL)SPI數(shù)據(jù)寄存器(SPI Data Register,SPIDR)如圖12.9和12.10所示。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.3 SPI模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.3.5 SPI數(shù)據(jù)寄存器(數(shù)據(jù)寄存器(SPIDR:SPIDRH,SPIDRL)讀:任何時刻,只在SPIF置位后讀取數(shù)據(jù)有效;寫:任何時刻。SPI數(shù)據(jù)寄存器SPIDR是SPI

24、數(shù)據(jù)傳送的輸入/輸出寄存器。寫入數(shù)據(jù)到SPIDR寄存器,則允許該數(shù)據(jù)進入發(fā)送隊列并發(fā)送。對于SPI主機,當(dāng)移位寄存器中的數(shù)據(jù)發(fā)送完成后,隊列數(shù)據(jù)就會被立即發(fā)送。SPI狀態(tài)寄存器SPISR中的發(fā)送空標(biāo)志位SPTEF表明SPI數(shù)據(jù)寄存器是否準(zhǔn)備好接收新數(shù)據(jù)。當(dāng)SPIF置位時,SPIDR寄存器中的接收數(shù)據(jù)有效。如果SPIF位被清零且已經(jīng)接收到數(shù)據(jù),則接收到的數(shù)據(jù)會從移位寄存器傳送到SPIDR寄存器,然后置位SPIF。如果SPIF=1,但沒有對接收到的SPIDR寄存器中的第一個數(shù)據(jù)進行及時操作,這時又接收到了第二個數(shù)據(jù),第二個數(shù)據(jù)在移位寄存器中將一直保持有效直到接收到第三個數(shù)據(jù),而SPIDR寄存器中的

25、第一個數(shù)據(jù)保持不變。如果SPIF=1,且有效數(shù)據(jù)在移位寄存器中,SPIF位在第三個數(shù)據(jù)開始接收前被清零了,則移位寄存器中的第二個數(shù)據(jù)會傳送到SPIDR寄存器,而SPIF位重新為1。如果SPIF=1,且有效數(shù)據(jù)在移位寄存器中,SPIF在第三個數(shù)據(jù)開始接收后才被清零,則移位寄存器中的第二個數(shù)據(jù)將變?yōu)闊o效,也不會被傳送到SPIDR寄存器,這時第三個數(shù)據(jù)將會接收到移位寄存器中。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.4 SPI模塊應(yīng)用實例模塊應(yīng)用實例 本實例使用SPI發(fā)送數(shù)據(jù),實例電路原理圖如圖12.11所示,圖中74LS164是8位串行輸入/并行輸出

26、移位寄存器,通過該芯片將MC9S12XS128中SPI模塊的MOSI輸出的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),輸出的并行數(shù)據(jù)連接到4位8段數(shù)碼管的段引腳,4位共陽極數(shù)碼管的公共端由PORTA0PORTA3控制。編程實現(xiàn)4位數(shù)碼管從左到右分別顯示數(shù)字3210。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.4 SPI模塊應(yīng)用實例模塊應(yīng)用實例 程序清單:MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.4 SPI模塊應(yīng)用實例模塊應(yīng)用實例 程序清單:MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開

27、發(fā)12.4 SPI模塊應(yīng)用實例模塊應(yīng)用實例 程序清單:MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.4 SPI模塊應(yīng)用實例模塊應(yīng)用實例 程序清單:MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.1 I2C總線概述總線概述 NXP 半導(dǎo)體(原Philips 半導(dǎo)體)公司于20世紀(jì)80年代初推出了一種簡單的雙向二線制串行通信總線,這種總線被稱為Inter-IC(I2C或IIC或I2C)總線。目前I2C 總線已經(jīng)成為業(yè)界嵌入式應(yīng)用的標(biāo)準(zhǔn)解決方案,同SPI總線一樣,被廣泛地應(yīng)用在

28、基于微控制器與各種外圍設(shè)備之間的串行通信,可以作為控制、診斷與電源管理等方面的數(shù)據(jù)通信總線,主要應(yīng)用領(lǐng)域包括消費類電子、電信產(chǎn)品等。多個符合I2C 總線標(biāo)準(zhǔn)的器件都可以通過同一條I2C 總線進行通信,而不需要額外的地址譯碼器。I2C 是一種兩線制串行總線,因此操作非常簡單。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.1 I2C總線概述總線概述 I2C總線有很多特點,如下所述:l總線僅由2 根信號線組成,分別是數(shù)據(jù)線(SDA)和時鐘線(SCL)。l總線協(xié)議簡單。l協(xié)議容易實現(xiàn),即使微控制器內(nèi)部沒有集成I2C 總線

29、接口,也能夠方便地利用開漏或集電極開路的I/O或準(zhǔn)雙向I/O端口模擬實現(xiàn)。l支持的器件多,NXP 半導(dǎo)體最早提出I2C總線協(xié)議,目前恩智浦半導(dǎo)體(NXP)、飛思卡爾半導(dǎo)體(Freescale)、德州儀器(TI)、美國國家半導(dǎo)體(National Semiconductor)、意法半導(dǎo)體(ST)、美信半導(dǎo)體(Maxim)等公司都有大量帶有I2C總線接口的產(chǎn)品,這為用戶設(shè)計產(chǎn)品時選擇合適的I2C 器件提供了廣闊的空間。l總線上可同時掛接多個器件,同一條I2C 總線上可以掛接很多個器件,一般可達數(shù)十個以上,甚至更多。器件之間是靠不同的編址來區(qū)分的,而不需要附加的I/O 線或地址譯碼部件。l總線可裁減

30、性好,在原有總線連接的基礎(chǔ)上可以隨時新增或者刪除器件,用軟件可以很容易實現(xiàn)I2C 總線的自檢功能,能夠及時發(fā)現(xiàn)總線上器件的變動。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.1 I2C總線概述總線概述 l總線電氣兼容性好,I2C總線規(guī)定器件之間以開漏I/O互連,這樣只要選取適當(dāng)?shù)纳侠娮杈湍茌p易實現(xiàn)3 V/5 V邏輯電平的兼容,而不需要額外的電平轉(zhuǎn)換。l支持多種通信方式,一主多從是最常見的通信方式,此外還支持雙主機通信、多主機通信以及廣播通信模式等。l通信速率高,I2C總線標(biāo)準(zhǔn)傳輸速率為100 kb/s,在快速模

31、式下為400 kb/s。按照以后修訂的版本,位傳輸速率可高達3.4 Mb/s。l兼顧低速通信,I2C總線的通信速率也可以低至幾kb/s以下,用于支持低速器件(比如通過軟件模擬的實現(xiàn)方法)或者用來延長通信距離。l通信距離較遠(yuǎn),一般情況下,I2C 總線通信距離可達幾米到十幾米,通過降低傳輸速率等辦法,通信距離可延長到數(shù)十米乃至數(shù)百米。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.2 I2C總線工作原理總線工作原理I2C總線只需要兩根信號線,一根是串行數(shù)據(jù)線SDA,另一根是串行時鐘線SCL。在系統(tǒng)中,I2C總線的典型結(jié)

32、構(gòu)如圖12.12所示。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.2 I2C總線工作原理總線工作原理在介紹I2C總線工作原理之前,首先必須明確幾個基本概念:l發(fā)送器(Transmitter):發(fā)送數(shù)據(jù)到總線的器件;l接收器(Receiver):從總線接收數(shù)據(jù)的器件;l主機(Master):初始化發(fā)送、產(chǎn)生時鐘信號和終止信號發(fā)送的器件;l從機(Slave):被主機尋址的器件。I2C總線是雙向傳輸?shù)目偩€,因此主機和從機都可能成為發(fā)送器和接收器。如果主機向從機發(fā)送數(shù)據(jù),則主機是發(fā)送器,從機是接收器;如果主機讀取從機數(shù)

33、據(jù),則主機是接收器,從機是發(fā)送器。不論主機是發(fā)送器還是接收器,時鐘信號SCL 都要由主機產(chǎn)生。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.2 I2C總線工作原理總線工作原理以下簡要介紹I2C總線的標(biāo)準(zhǔn)規(guī)范。1I2C總線上數(shù)據(jù)的有效性I2C總線中數(shù)據(jù)線SDA的電平狀態(tài)必須在時鐘線SCL處于高電平期間保持穩(wěn)定不變;SDA的電平狀態(tài)只有在SCL處于低電平期間才允許改變,但是在I2C總線的起始條件和停止條件例外。I2C總線上數(shù)據(jù)有效性如圖12.13所示。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原

34、理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.2 I2C總線工作原理總線工作原理2I2C 總線起始條件和停止條件起始條件(起始信號):當(dāng)SCL 處于高電平期間時,SDA 從高電平向低電平跳變時產(chǎn)生起始條件??偩€在起始條件產(chǎn)生后便處于忙的狀態(tài)。起始條件常常簡記為S。停止條件(停止信號):當(dāng)SCL 處于高電平期間時,SDA從低電平向高電平跳變時產(chǎn)生停止條件??偩€在停止條件產(chǎn)生后處于空閑狀態(tài)。停止條件簡記為P,如圖12.14所示。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.2 I2C總線工作原理總線工

35、作原理3I2C 總線的應(yīng)答信號在I2C總線傳輸數(shù)據(jù)過程中,每傳輸1字節(jié)數(shù)據(jù),都要有一個應(yīng)答狀態(tài)位。接收器數(shù)據(jù)接收情況通過產(chǎn)生應(yīng)答位來告知發(fā)送器。應(yīng)答位的時鐘脈沖仍由主機產(chǎn)生,而應(yīng)答位的數(shù)據(jù)接收狀態(tài)則遵循“誰接收誰產(chǎn)生”的原則,即總是由接收器來產(chǎn)生應(yīng)答位,主機向從機發(fā)送數(shù)據(jù)時,應(yīng)答位由從機產(chǎn)生;主機接收從機數(shù)據(jù)時,應(yīng)答位由主機產(chǎn)生。I2C 總線標(biāo)準(zhǔn)規(guī)定:應(yīng)答位為0 表示接收器應(yīng)答(ACK),常常簡記為A;為1則表示非應(yīng)答(NACK),常常簡記為A。發(fā)送器發(fā)送完數(shù)據(jù)之后,應(yīng)當(dāng)釋放SDA 線(需要拉高SDA,輸出端口截止),以等待接收器產(chǎn)生應(yīng)答位。如果接收器在接收完最后一個字節(jié)的數(shù)據(jù),或者不能再接收

36、更多的數(shù)據(jù)時,應(yīng)當(dāng)產(chǎn)生非應(yīng)答來通知發(fā)送器。發(fā)送器如果發(fā)現(xiàn)接收器產(chǎn)生了非應(yīng)答狀態(tài),則應(yīng)當(dāng)終止發(fā)送。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.5 I2C總線接口總線接口 12.5.2 I2C總線工作原理總線工作原理4I2C 總線的數(shù)據(jù)傳送I2C 總線總是以字節(jié)(Byte)為單位收發(fā)數(shù)據(jù)的,每次傳送的數(shù)據(jù)是8位。每次傳輸從起始信號開始,之后傳送的字節(jié)數(shù)量沒有嚴(yán)格限制。首先傳輸?shù)氖菙?shù)據(jù)的最高位(MSB,第7 位),最后傳輸?shù)氖亲畹臀唬↙SB,第0位)。另外,每個字節(jié)之后還要跟一個應(yīng)答位,應(yīng)答位總是由接收器產(chǎn)生。所有數(shù)據(jù)傳送結(jié)束后,主控制器發(fā)出終止信號。5

37、從機地址I2C總線不需要額外的地址譯碼器和片選信號。多個具有I2C總線接口的器件都可以連接到同一條I2C總線上,它們之間通過器件地址來區(qū)分。主機是主控器件,不需要器件地址,其他器件都屬于從機,需要配置有器件地址。必須保證同一條I2C總線上所有從機的地址都是唯一確定的,不能有重復(fù),否則I2C 總線將不能正常工作。一般從機地址由7 位地址位和一位讀/寫位標(biāo)志R/ 組成,7位地址占據(jù)高7位,讀/寫位在最后。讀/寫位是0,表示主機將要向從機寫入數(shù)據(jù);讀/寫位是1,則表示主機將要讀取從機數(shù)據(jù)。I2C總線主機向從機發(fā)送數(shù)據(jù)的基本格式如圖12.15所示,I2C總線主機讀取從機數(shù)據(jù)的基本格式如圖12.16所示

38、。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.6 I2C模塊結(jié)構(gòu)組成和特點模塊結(jié)構(gòu)組成和特點 MC9S12DG128就內(nèi)置了I2C模塊,使用PortJ6和PortJ7兩個引腳作為SDA和SCL。本章以下內(nèi)容都是針對MC9S12DG128介紹I2C模塊的特性、寄存器功能及設(shè)置,并通過應(yīng)用實例和I2C模塊在自主尋跡智能車上的應(yīng)用,讓讀者掌握I2C模塊的應(yīng)用及編程方法。MC9S12DG128內(nèi)置的I2C模塊如圖12.17所示。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.6 I2C模塊結(jié)構(gòu)組成和特點模塊結(jié)構(gòu)組成

39、和特點 I2C模塊具有以下基本特征:l 符合I2C總線標(biāo)準(zhǔn);l 支持多主機操作;l 軟件可編程設(shè)置256種串行時鐘頻率;l 軟件可編程選擇應(yīng)答位;l 字節(jié)數(shù)據(jù)中斷傳輸;l 仲裁丟失中斷,自動將主機模式切換到從機模式;l 尋址識別中斷;l 起始信號和停止信號的產(chǎn)生/檢測功能;l 重復(fù)產(chǎn)生起始信號;l 應(yīng)答位的產(chǎn)生/檢測功能;l 總線忙檢測。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置 MC9S12DG128的I2C模塊共有5個寄存器,詳見表12-7。以下詳細(xì)介紹各寄存器的功能及每一位的作用。MC9S12XSM

40、C9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.1 I2C總線地址寄存器(總線地址寄存器(IBAD)I2C總線地址寄存器(I2C Bus Address Register,IBAD)如圖12.18所示。讀:任何時刻;寫:任何時刻。該寄存器針對被尋址從機,由I2C總線產(chǎn)生響應(yīng)地址,但這個地址不是由主機通過總線進行傳送的。ADR7ADR1:從機地址,包括I2C模塊使用的特殊從機地址,I2C總線的默認(rèn)模式是總線上的地址匹配從機地址。Bit0:保留位,為了將來產(chǎn)品的兼容性而設(shè)置,讀取該位總為0。MC9S12XSMC9S12XS

41、單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.2 I2C總線分頻寄存器(總線分頻寄存器(IBFD)I2C總線分頻寄存器(I2C Bus Frequency Divider Register,IBFD)如圖12.19所示。讀:任何時刻;寫:任何時刻。IBC7IBC0:I2C總線時鐘分頻系數(shù),該寄存器用于確定I2C總線的時鐘頻率,其中IBC7IBC6定義預(yù)分頻增益系數(shù);IBC5IBC3定義預(yù)分頻因子;IBC2IBC0選擇保持時間長度。寄存器中各位的含義詳見表12-8和表12-9。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開

42、發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.2 I2C總線分頻寄存器(總線分頻寄存器(IBFD)MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.2 I2C總線分頻寄存器(總線分頻寄存器(IBFD)MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.2 I2C總線分頻寄存器(總線分頻寄存器(IBFD)I2C總線部分分頻對照表12-10所示,如需要查閱其他數(shù)值,可以參閱數(shù)據(jù)手

43、冊S12IICV2.pdf。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.3 I2C總線控制寄存器(總線控制寄存器(IBCR)I2C總線控制寄存器(I2C Bus Control Register,IBCR)如圖12.20所示。讀:任何時刻;寫:任何時刻。IBEN:I2C模塊使能位,該位控制I2C模塊的軟件復(fù)位。0表示I2C模塊禁止且軟件復(fù)位,這時處于上電復(fù)位狀態(tài)。當(dāng)該位為0時,I2C模塊功能禁止且處于軟件復(fù)位功能,但是其他寄存器仍然可以訪問;1表示I2C模塊使能,該位必須在IBCR寄存器的其他位起

44、作用前置位。如果I2C模塊在一個字節(jié)數(shù)據(jù)傳輸過程中使能,則從機模式會忽略當(dāng)前總線上的傳輸數(shù)據(jù),一旦檢測到后面的起始信號就開始進行數(shù)據(jù)傳輸;而主機模式不檢測總線忙狀態(tài),因此如果一個起始信號產(chǎn)生,當(dāng)前總線周期可能會破壞,最終將導(dǎo)致當(dāng)前總線的主機或者I2C模塊丟失仲裁,隨后總線操作將返回正常模式。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.3 I2C總線控制寄存器(總線控制寄存器(IBCR)IBIE:I2C總線中斷使能位。0表示I2C總線中斷禁止,此時I2C模塊不處理已產(chǎn)生的中斷;1表示I2C總線中斷使

45、能,I2C總線中斷發(fā)生時,則IBSR狀態(tài)寄存器中的IBIF位置位。MS/SL:主機/從機模式選擇位。微控制器復(fù)位后,該位清零。當(dāng)該位從0變?yōu)?時,總線上會產(chǎn)生一個起始信號,為主機工作模式。當(dāng)該位從1變?yōu)?時,總線上會產(chǎn)生一個停止信號,工作模式變?yōu)閺臋C模式。停止信號只有在IBIF標(biāo)志置位時才能夠產(chǎn)生。當(dāng)主機丟失仲裁時,該位被清零但是不產(chǎn)生停止信號。0表示從機模式;1表示主機模式。Tx/RX:發(fā)送/接收模式選擇位,該位選擇主機和從機數(shù)據(jù)傳輸?shù)姆较?。在從機模式和主機模式下,該位需要軟件置位,根據(jù)IBSR狀態(tài)寄存器中的SRW位來確定數(shù)據(jù)傳輸方向。在尋址周期,該位總為高電平。0表示接收模式;1表示發(fā)送模

46、式。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.3 I2C總線控制寄存器(總線控制寄存器(IBCR)TXAK:發(fā)送應(yīng)答使能位。對于主機接收器和從機接收器,該位確定總線應(yīng)答周期的SDA值。如果I2C模塊使能,無需設(shè)置TXAK,I2C模塊總是響應(yīng)地址匹配器件。注意只有當(dāng)I2C模塊作為接收器時,操作該位才有效。0表示接收到1字節(jié)的數(shù)據(jù)后,在總線的第9個周期產(chǎn)生一個應(yīng)答位且發(fā)送到總線上;1表示不發(fā)送應(yīng)答信號。RSTA:重復(fù)起始信號位。主機模式時,該位置1就會在總線上產(chǎn)生一個重復(fù)起始信號。讀取該位總是返回0

47、。如果總線被另一個主機占用,試圖產(chǎn)生一個重復(fù)起始信號將導(dǎo)致仲裁丟失。0表示禁止產(chǎn)生重復(fù)起始信號;1表示產(chǎn)生一個重復(fù)起始信號。Bit1:保留位,為了將來產(chǎn)品的兼容性而設(shè)置,讀取該位總為0。IBSWAI:等待模式下I2C總線模塊的時鐘停止位。0表示在等待模式下,I2C總線模塊時鐘正常工作;1表示在等待模式下,I2C總線模塊時鐘停止工作。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.4 I2C總線狀態(tài)寄存器(總線狀態(tài)寄存器(IBSR)I2C總線狀態(tài)寄存器(I2C Bus Status Register,I

48、BSR)如圖12.21所示。該寄存器除了第1位(IBIF)和第4位(IBAL)外,其余位都是只讀的。TCF:數(shù)據(jù)傳輸位。當(dāng)數(shù)據(jù)的一個字節(jié)正在傳輸時,該位被清除。TCF在字節(jié)傳輸?shù)牡?個時鐘的下降沿置位。注意該位只在一個字節(jié)數(shù)據(jù)傳送到一個I2C模塊或者接收到一個I2C模塊的數(shù)據(jù)或數(shù)據(jù)傳輸完成時有效。0表示數(shù)據(jù)傳輸正在進行;1表示數(shù)據(jù)傳輸完成。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.4 I2C總線狀態(tài)寄存器(總線狀態(tài)寄存器(IBSR)該寄存器除了第1位(IBIF)和第4位(IBAL)外,其余位都是

49、只讀的。TCF:數(shù)據(jù)傳輸位。當(dāng)數(shù)據(jù)的一個字節(jié)正在傳輸時,該位被清除。TCF在字節(jié)傳輸?shù)牡?個時鐘的下降沿置位。注意該位只在一個字節(jié)數(shù)據(jù)傳送到一個I2C模塊或者接收到一個I2C模塊的數(shù)據(jù)或數(shù)據(jù)傳輸完成時有效。0表示數(shù)據(jù)傳輸正在進行;1表示數(shù)據(jù)傳輸完成。IAAS:從機被尋址位。當(dāng)I2C模塊自身模塊地址(由I2C總線地址寄存器IBAD確定)與主機發(fā)送地址匹配時,該位被置位。如果IBIE置位,MCU產(chǎn)生中斷。之后MCU需要檢測SRW位并設(shè)置相應(yīng)的Tx/ RX 模式。寫I2C總線控制寄存器IBCR清除該位。0表示從機未被尋址;1表示從機被尋址。IBB:總線忙標(biāo)志位。該位表示總線狀態(tài)。0表示當(dāng)檢測到一個起

50、始信號時,IBB置位,如果檢測到一個停止信號,IBB被清除且總線進入空閑狀態(tài);1表示總線忙。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.4 I2C總線狀態(tài)寄存器(總線狀態(tài)寄存器(IBSR)IBAL:仲裁丟失。當(dāng)仲裁丟失時該位由硬件置位。在下列情況中,仲裁可能丟失:在地址或數(shù)據(jù)傳輸周期中,如果主機產(chǎn)生的SDA為高電平,但是檢測SDA為低電平;在一個數(shù)據(jù)應(yīng)答位接收過程中,如果主機產(chǎn)生的SDA為高電平,但是檢測SDA為低電平;當(dāng)總線忙時試圖產(chǎn)生一個起始信號;在從機模式下一個重復(fù)起始信號被請求;當(dāng)主機沒有

51、請求時,但檢測到一個停止信號。IBAL位必須通過軟件置1清除,向該位寫0無效。SRW:從機讀/寫位。當(dāng)IAAS被置位,該位表示主機發(fā)送從機尋址時的讀/寫控制位SRW值。SRW位僅當(dāng)I2C模塊處于從機模式時有效,通過檢測該位,MCU可以根據(jù)主機的命令選擇從機的發(fā)送/接收模式。1表示從機接收,主機寫數(shù)據(jù)到從機;0表示從機發(fā)送,主機讀入從機數(shù)據(jù)。IBIF:I2C總線中斷位。當(dāng)以下一種情況發(fā)生時,該位置位:仲裁丟失(IBAL = 1);字節(jié)傳輸完成(TCF = 1);從機被尋址(IAAS = 1)。如果IBIE=1,IBIF置位將會產(chǎn)生一個中斷請求,該位必須通過軟件置1清除,向該位寫0無效。RXAK:

52、接收應(yīng)答使能位,為總線應(yīng)答周期的SDA值。如果接收到應(yīng)答位(RXAK)為0,表示在總線8位數(shù)據(jù)傳輸完成后已接收到應(yīng)答信號。如果RXAK為1,意味著在第9個時鐘周期仍然沒有檢測到應(yīng)答信號。0表示已接收到應(yīng)答;1表示未接收到應(yīng)答。MC9S12XSMC9S12XS單片機原理及嵌入式系統(tǒng)開發(fā)單片機原理及嵌入式系統(tǒng)開發(fā)12.7 I2C模塊寄存器及設(shè)置模塊寄存器及設(shè)置12.7.5 I2C總線數(shù)據(jù)輸入總線數(shù)據(jù)輸入/輸出寄存器(輸出寄存器(IBDR)I2C總線數(shù)據(jù)輸入/輸出寄存器(I2C Bus Data I/O Register,IBDR)如圖12.22所示。在主機發(fā)送模式,當(dāng)一個數(shù)據(jù)被寫入該寄存器,數(shù)據(jù)傳輸開始,先傳送最高位。在主機接收模式,讀取該寄存器啟動下一個字節(jié)數(shù)據(jù)的接收。在從機模式下,當(dāng)?shù)刂菲ヅ浜螅椭鳈C模式下的功能是相同的。注意IBCR寄存器中的Tx/RX 位必須與主機模式和從機模式中需要的數(shù)據(jù)傳輸方向一致。例如,如果希期望主機接收,但是I2C總線IBCR寄存器

溫馨提示

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

評論

0/150

提交評論