第07章 SPI和I2C模塊及其應(yīng)用實(shí)例
嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用1第7章SPI和I2C模塊及其應(yīng)用實(shí)例嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用2本章目錄7.1 SPI的基本工作原理7.2 SPI模塊的編程基礎(chǔ)7.3 SPI的進(jìn)一步討論7.4 IIC模塊7.5 IIC總線(xiàn)工作原理 7.6 IIC模塊的編程基礎(chǔ)7.7 IIC模塊的進(jìn)一步討論嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用37.1 SPI的基本工作原理7.1.1 功能描述 移位寄存器 移位寄存器 MISO MISO 主MCU MOSI MOSI 波特率發(fā)生器 從MCU SPSCK SPSCK SPISPI全雙工主全雙工主- -從連接從連接嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用47.1 SPI的基本工作原理7.1.2 SPI模塊的I/O引腳 從機(jī)選擇引腳 主出從入引腳MOSI 主入從出引腳MISO SPI串行時(shí)鐘引腳SPSCK嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用57.2 SPI模塊的編程基礎(chǔ)7.2.1 SPI模塊的寄存器 地址地址寄存器名稱(chēng)與縮寫(xiě)寄存器名稱(chēng)與縮寫(xiě)訪(fǎng)問(wèn)訪(fǎng)問(wèn)權(quán)限權(quán)限基本功能基本功能SPI0SPI1$00D8$00F0控制寄存器控制寄存器1(SPICR1)讀讀/寫(xiě)寫(xiě)設(shè)置傳輸格式、中斷使能設(shè)置傳輸格式、中斷使能$00D9$00F1控制寄存器控制寄存器2(SPICR2)只讀只讀中斷標(biāo)志、發(fā)送與接收狀態(tài)中斷標(biāo)志、發(fā)送與接收狀態(tài)$00DA$00F2波特率寄存器波特率寄存器(SPI0BR)讀讀/寫(xiě)寫(xiě)設(shè)置波特率設(shè)置波特率$00DB$00F3狀態(tài)寄存器狀態(tài)寄存器(SPISR)只讀只讀讀取各個(gè)狀態(tài)標(biāo)記位讀取各個(gè)狀態(tài)標(biāo)記位$00CD$00F5數(shù)據(jù)寄存器數(shù)據(jù)寄存器(SPIDR)讀讀/寫(xiě)寫(xiě)收發(fā)的數(shù)據(jù)收發(fā)的數(shù)據(jù)說(shuō)明:由于有兩個(gè)串行外設(shè)接口說(shuō)明:由于有兩個(gè)串行外設(shè)接口(SPI0/SPI1)(SPI0/SPI1),使用,使用SPIxSPIx時(shí),時(shí),寄存器名稱(chēng)中寄存器名稱(chēng)中SPISPI改為改為SPIxSPIx,x=0 x=0,1 1。嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用67.2 SPI模塊的編程基礎(chǔ)7.2.2 SPI7.2.2 SPI編程基本方法編程基本方法 SPISPI初始化初始化第第1 1步:寫(xiě)控制字到步:寫(xiě)控制字到SPICRSPICR,確定是否允許,確定是否允許SPISPI接接收中斷、收中斷、SPISPI的工作方式、時(shí)鐘極性、時(shí)鐘相的工作方式、時(shí)鐘極性、時(shí)鐘相位、是否允許位、是否允許SPISPI等。等。第第2 2步:寫(xiě)控制字到步:寫(xiě)控制字到SPISCRSPISCR,確定,確定SPISPI的波特率。的波特率。 發(fā)送與接收發(fā)送與接收1 1字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù) 通過(guò)通過(guò)SPISPI發(fā)送發(fā)送1 1字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù) void SPISend1(INT8U void SPISend1(INT8U SendDataSendData) ) 通過(guò)通過(guò)SPISPI接收接收1 1字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù) INT8U SPIRev1(void)INT8U SPIRev1(void)嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用77.3 SPI的進(jìn)一步討論 & SPISPI接口對(duì)一些擴(kuò)展芯片如接口對(duì)一些擴(kuò)展芯片如ADAD采集芯采集芯片片TLC2543TLC2543等應(yīng)用比較廣泛。等應(yīng)用比較廣泛。& TLC2543TLC2543與具有與具有SPISPI或相同接口能力的或相同接口能力的MCUMCU可以直接連接可以直接連接. .& 對(duì)于沒(méi)有對(duì)于沒(méi)有SPISPI接口的接口的MCUMCU可以通過(guò)軟件可以通過(guò)軟件編程合成編程合成SPISPI操作。操作。 嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用87.4 IIC模塊 7.4.1 IIC7.4.1 IIC總線(xiàn)特點(diǎn)總線(xiàn)特點(diǎn)二線(xiàn)制二線(xiàn)制 支持多主控支持多主控 位速率位速率100kbit/s 100kbit/s 3.4Mbit/s3.4Mbit/s。連接到相同總線(xiàn)的連接到相同總線(xiàn)的ICIC數(shù)量數(shù)量7.4.2 IIC7.4.2 IIC總線(xiàn)標(biāo)準(zhǔn)的發(fā)展歷史總線(xiàn)標(biāo)準(zhǔn)的發(fā)展歷史 19921992年年19981998年年20012001年年嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用97.4 IIC模塊 7.4.3 IIC7.4.3 IIC總線(xiàn)的相關(guān)術(shù)語(yǔ)總線(xiàn)的相關(guān)術(shù)語(yǔ) 主機(jī)主機(jī)( (主控器主控器) )從機(jī)從機(jī)( (被控器被控器) )地址地址發(fā)送器發(fā)送器接收器接收器SDA(SerialSDA(Serial DAtaDAta) )SCL(SerialSCL(Serial CLockCLock) )嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用107.5 IIC總線(xiàn)工作原理 3IICIIC總線(xiàn)的典型連接總線(xiàn)的典型連接嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用117.5 IIC總線(xiàn)工作原理 7.5.1 7.5.1 總線(xiàn)上數(shù)據(jù)的有效性總線(xiàn)上數(shù)據(jù)的有效性 數(shù)據(jù)線(xiàn)穩(wěn)定 數(shù)據(jù)有效 允許改變 數(shù)據(jù)期 IICIIC總線(xiàn)上數(shù)據(jù)的有效性總線(xiàn)上數(shù)據(jù)的有效性嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用127.5 IIC總線(xiàn)工作原理 7.5.2 7.5.2 總線(xiàn)上的信號(hào)總線(xiàn)上的信號(hào) 開(kāi) 始 信 號(hào) /重 新 開(kāi) 始 信 號(hào) 停 止 信 號(hào) 開(kāi)始、重新開(kāi)始和停止信號(hào)開(kāi)始、重新開(kāi)始和停止信號(hào)嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用137.5 IIC總線(xiàn)工作原理 7.5.2 7.5.2 總線(xiàn)上的信號(hào)總線(xiàn)上的信號(hào) 非應(yīng)答信號(hào) 應(yīng)答信號(hào) 應(yīng)答時(shí)鐘周期 主機(jī)產(chǎn)生的SCL信號(hào) 接收器 輸出信號(hào) 發(fā)送器 輸出信號(hào) 開(kāi)始信號(hào) IICIIC總線(xiàn)的應(yīng)答信號(hào)總線(xiàn)的應(yīng)答信號(hào)嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用147.5 IIC總線(xiàn)工作原理 7.5.3 7.5.3 總線(xiàn)上數(shù)據(jù)傳輸格式總線(xiàn)上數(shù)據(jù)傳輸格式 IICIIC總線(xiàn)的數(shù)據(jù)傳輸格式總線(xiàn)的數(shù)據(jù)傳輸格式 開(kāi)始或重新開(kāi)始信號(hào) 停止或重新開(kāi)始信號(hào) 在從機(jī)中斷時(shí),時(shí)鐘線(xiàn)保持低 字節(jié)傳送完成后, 從機(jī)產(chǎn)生中斷 D7 D6 D1 D0 D7 D6 A A A 嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用157.5 IIC總線(xiàn)工作原理 7.5.4 7.5.4 IICIIC總線(xiàn)尋址約定總線(xiàn)尋址約定 &起始信號(hào)后的第一個(gè)字節(jié)為尋址字節(jié) &尋址字節(jié)由被控器的七位地址位和一位方向位組成&任意兩個(gè)從機(jī)的地址都不相同 嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用167.5 IIC總線(xiàn)工作原理 7.5.5 7.5.5 主機(jī)向從機(jī)讀寫(xiě)主機(jī)向從機(jī)讀寫(xiě)1 1個(gè)字節(jié)數(shù)據(jù)的過(guò)程個(gè)字節(jié)數(shù)據(jù)的過(guò)程 主 機(jī) 寫(xiě) 數(shù) 據(jù) S T A R T 從 機(jī) 地 址 0 A 訪(fǎng) 問(wèn) 地 址 A 數(shù) 據(jù) A S T O P W 應(yīng) 答 信 號(hào) 應(yīng) 答 信 號(hào) 應(yīng) 答 信 號(hào) 主機(jī)向從機(jī)寫(xiě)數(shù)據(jù)主機(jī)向從機(jī)寫(xiě)數(shù)據(jù) STOP 應(yīng)答信號(hào) W START 從機(jī)地址 0 A 訪(fǎng)問(wèn)地址 A 重新開(kāi)始 從機(jī)地址 1 A 數(shù)據(jù) A 應(yīng)答信號(hào) 應(yīng)答信號(hào) R 主機(jī)讀數(shù)據(jù) 非應(yīng)答信號(hào) 主機(jī)從從機(jī)讀數(shù)據(jù)主機(jī)從從機(jī)讀數(shù)據(jù) 嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用177.6 IIC模塊的編程基礎(chǔ) 7.6.1 DG1287.6.1 DG128芯片芯片IICIIC的模塊的模塊允許多主機(jī)模式,符合允許多主機(jī)模式,符合IICIIC總線(xiàn)協(xié)議;總線(xiàn)協(xié)議;可軟件編程選擇可軟件編程選擇256256個(gè)串行時(shí)鐘頻率;個(gè)串行時(shí)鐘頻率;軟件編程實(shí)現(xiàn)軟件編程實(shí)現(xiàn)ACKACK信號(hào);信號(hào);位與位之間的中斷傳輸方式;位與位之間的中斷傳輸方式;仲裁丟失中斷的同時(shí),自動(dòng)從主機(jī)模式切換仲裁丟失中斷的同時(shí),自動(dòng)從主機(jī)模式切換到從機(jī)模式;到從機(jī)模式;具有從地址識(shí)別中斷;具有從地址識(shí)別中斷;起停信號(hào)的產(chǎn)生和檢測(cè),并可以重復(fù)產(chǎn)生開(kāi)起停信號(hào)的產(chǎn)生和檢測(cè),并可以重復(fù)產(chǎn)生開(kāi)始信號(hào);始信號(hào);信號(hào)的產(chǎn)生和檢測(cè);信號(hào)的產(chǎn)生和檢測(cè);總線(xiàn)繁忙檢測(cè)??偩€(xiàn)繁忙檢測(cè)。 嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用187.6 IIC模塊的編程基礎(chǔ) 7.6.2 IIC7.6.2 IIC模塊寄存器介紹模塊寄存器介紹寄存器名稱(chēng)寄存器名稱(chēng)縮寫(xiě)縮寫(xiě)地址地址訪(fǎng)問(wèn)權(quán)限訪(fǎng)問(wèn)權(quán)限基本功能基本功能地址寄存器地址寄存器IBADIBAD$00E0$00E0讀讀/ /寫(xiě)寫(xiě)設(shè)置從機(jī)地址設(shè)置從機(jī)地址分頻寄存器分頻寄存器IBFRIBFR$00E1$00E1讀讀/ /寫(xiě)寫(xiě)設(shè)置設(shè)置IICIIC模塊的工作模塊的工作頻率等頻率等控制寄存器控制寄存器IBCRIBCR$00E2$00E2讀讀/ /寫(xiě)寫(xiě)設(shè)置傳輸格式、中斷設(shè)置傳輸格式、中斷使能使能狀態(tài)寄存器狀態(tài)寄存器IBSRIBSR$00E3$00E3只讀只讀表明表明IICIIC模塊的工作模塊的工作狀態(tài)狀態(tài)數(shù)據(jù)寄存器數(shù)據(jù)寄存器IBDRIBDR$00E4$00E4讀讀/ /寫(xiě)寫(xiě)收發(fā)數(shù)據(jù)收發(fā)數(shù)據(jù)嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用197.6 IIC模塊的編程基礎(chǔ) 7.6.3 IIC7.6.3 IIC模塊編程模塊編程&IICIIC模塊初始化函數(shù)模塊初始化函數(shù)void void IICInit(voidIICInit(void) )&接收與發(fā)送接收與發(fā)送1 1字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù)接收接收1 1字節(jié)數(shù)據(jù)的函數(shù)字節(jié)數(shù)據(jù)的函數(shù)INT8U IICread1(INT8U INT8U IICread1(INT8U DeviceAddrDeviceAddr, INT8U , INT8U AccessAddrAccessAddr, INT8U , INT8U * *Data)Data)發(fā)送發(fā)送1 1字節(jié)數(shù)據(jù)的函數(shù)字節(jié)數(shù)據(jù)的函數(shù)INT8U IICwrite1(INT8U INT8U IICwrite1(INT8U DeviceAddrDeviceAddr, INT8U , INT8U AccessAddrAccessAddr, INT8U Data), INT8U Data)&接收與發(fā)送接收與發(fā)送N N字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù)接收接收N N字節(jié)數(shù)據(jù)的函數(shù)字節(jié)數(shù)據(jù)的函數(shù)INT8U IICreadN(INT8U INT8U IICreadN(INT8U DeviceAddrDeviceAddr, INT8U , INT8U AccessAddrAccessAddr, INT8U Data, INT8U N), INT8U Data, INT8U N)發(fā)送發(fā)送N N字節(jié)數(shù)據(jù)的函數(shù)字節(jié)數(shù)據(jù)的函數(shù)INT8U IICwriteN(INT8U INT8U IICwriteN(INT8U DeviceAddrDeviceAddr, INT8U , INT8U AccessAddrAccessAddr, INT8U Data, INT8U N), INT8U Data, INT8U N)嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用207.7 IIC模塊的編程基礎(chǔ) 7.7.1 7.7.1 仲裁程序仲裁程序 7.7.2 7.7.2 時(shí)鐘同步時(shí)鐘同步7.7.3 7.7.3 握手握手7.7.4 7.7.4 時(shí)鐘周期延長(zhǎng)時(shí)鐘周期延長(zhǎng)嵌入式系統(tǒng)-使用HCS12微控制器的設(shè)計(jì)與應(yīng)用21謝謝 謝謝Ver 1.0