STM32微控制器原理及應(yīng)用-內(nèi)部集成電路總線接口I2C_第1頁
STM32微控制器原理及應(yīng)用-內(nèi)部集成電路總線接口I2C_第2頁
STM32微控制器原理及應(yīng)用-內(nèi)部集成電路總線接口I2C_第3頁
STM32微控制器原理及應(yīng)用-內(nèi)部集成電路總線接口I2C_第4頁
STM32微控制器原理及應(yīng)用-內(nèi)部集成電路總線接口I2C_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1STM32原理及其應(yīng)用2內(nèi)部集成電路總線接口I2C

教學(xué)基本內(nèi)容:I2C概述、應(yīng)用實例。重點:I2C內(nèi)部結(jié)構(gòu)及相應(yīng)的功能,了解各類寄存器。難點:熟練應(yīng)用I2C庫函數(shù)。本章主要教學(xué)要求:I2C結(jié)構(gòu)及寄存器、庫函數(shù)說明。3第一節(jié)I2C概述(了解)第二節(jié)

I2C結(jié)構(gòu)及寄存器(理解)第三節(jié)庫函數(shù)說明(重點)第四節(jié)應(yīng)用實例(了解)4第一節(jié)I2C概述I2C總線是InterIntegratedCircuitBus的縮寫,通常譯為“內(nèi)部集成電路總線”或“集成電路間總線”,簡稱為總線,I2C總線是一種高效、實用且可靠的雙向二線串行數(shù)據(jù)傳輸結(jié)構(gòu)總線。5一、ADC1.概念:ADC,Analog-to-DigitalConverter的縮寫,指模/數(shù)轉(zhuǎn)換器或者模數(shù)轉(zhuǎn)換器,即A/D轉(zhuǎn)換器,是將連續(xù)變化的模擬信號轉(zhuǎn)換為離散的數(shù)字信號的器件。2.功能:通常的模數(shù)轉(zhuǎn)換器是將一個輸入電壓信號轉(zhuǎn)換為一個輸出的數(shù)字信號。6二、

I2C接口具有4種工作模式:

從發(fā)送器模式;

從接收器模式;

主發(fā)送器模式;

主接收器模式。

7I2C設(shè)計可以由I2CEEPROM庫函數(shù)程序設(shè)計實現(xiàn)可以通過以下6個步驟利用EEPROM庫函數(shù)設(shè)計實現(xiàn)實現(xiàn):新建工程添加C語言源文件修改C語言源文件添加庫文件生成目標(biāo)程序文件使用調(diào)試器運行目標(biāo)程序GPIO仿真I2C庫函數(shù)程序設(shè)計實現(xiàn)。1.添加C語言源文件2.修改C語言源文件3.添加庫文件4.生成目標(biāo)程序文件5.使用調(diào)試器運行目標(biāo)程序9第二節(jié)

結(jié)構(gòu)及寄存器

I2C由數(shù)據(jù)和時鐘兩部分組成,數(shù)據(jù)部分由數(shù)據(jù)寄存器、數(shù)據(jù)移位寄存器和數(shù)據(jù)控制等組成。時鐘部分由控制狀態(tài)器、控制邏輯電路、時鐘控制器寄存器和時鐘控制等組成??刂茽顟B(tài)寄存器通過控制邏輯電路等控制時鐘的行為。I2C方框圖如圖8-2。圖8-2I2C方框圖10I2C使用的GPIO引腳I2C使用的GPIO引腳見表8-1。I2C引腳GPIO引腳I2C1I2C2配置SDAPB7(PB9)(1)PB11復(fù)用開漏輸出SCLPB6(PB8)(1)PB10復(fù)用開漏輸出SMBALERTPB5PB12

表8-1I2C使用的GPIO引腳注:(1)括號中的引腳為復(fù)用功能引腳11寄存器偏移地址名稱類型復(fù)位值說明0x00CR1讀/寫0x0000控制寄存器10x04CR2讀/寫0x0000控制寄存器20x08OAR1讀/寫0x0000自身地址寄存器10x0COAR2讀/寫0x0000自身地址寄存器20x10DR讀/寫0x00數(shù)據(jù)寄存器0x14SR1讀/寫0清除0x0000狀態(tài)寄存器10x18SR2讀0x0000狀態(tài)寄存器20x1CCCR讀/寫0x0000時鐘控制寄存器

0x20

TRISE

讀/寫

0x0002上升時間寄存器(主模式)標(biāo)準(zhǔn)模式:TRISE=int(100ns*FREQ+1)快速模式:TRISE=int(300ns*FREQ+1)I2C需要通過9個寄存器進行操作,見表8-2(I2C1和I2C2的基地址分別為0x40005400和0x40005800)。表8-2I2C寄存器12第三節(jié)庫函數(shù)說明(**)

常用I2C庫函數(shù)在stm32f10_i2c.h中聲明如下:voidI2C_Init(I2C_TypeDef*I2Cx,I2C_IninTypeDef*I2C_InitStruct);voidI2C_Cmd(I2C_TypeDef*I2Cx,FunctionalstateNewstate);voidI2C_GenerateSTART(I2C_TypeDef*I2Cx,FunctionalstateNewstate)voidI2C_GeneratesTOP(I2C_TypeDef*I2Cx,FunctionalstateNewState)voidI2CAcknowledgeConfig(I2C_TypeDef*I2Cx,FunctionalStateNewState);voidI2C_SendData(12C_TypeDef*I2Cx,u8Data)u8I2C_ReceiveData(I2C_TypeDef*I2Cx);voidI2C_Send7bitAddress(I2C_TypeDef*I2Cx,u8Address,u8I2C_Direction);u16I2C_ReadRegister(I2CTypeDef*I2Cx,u8I2CRegister);voidI2C_SoftwareResetCmd(I2C_TypeDef*I2Cx,FunctionalstateNewstate);u32I2C_GetLastEvent(I2C_TypeDef*I2Cx);ErrorStatusI2C_CheckEvent(I2C_TypeDef*I2Cx,u32I2C_EVENT);FlagStatusI2C_GetFlagStatus(I2C_TypeDef*I2Cx,u32I2CFLAG);voidI2C_ClearFlag(I2C_TypeDef*I2Cx,u3212C_FLAG);(1)初始化I2CvoidI2C_Init(I2C_TypeDef*I2Cx,I2C_InitTypeDef*I2C_Initstruct);參數(shù)說明:12Cx:I2C名稱,取值是12C1或者12C2等

(2)使能I2CvoidI2C_Cmd(I2C_TypeDef*I2Cx,FunctionalStateNewState);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等NewState:I2C新狀態(tài),ENABL為允許,DISABLE為禁止I2Cx:I2C名稱,取值為I2C1或I2C2等NewState:I2C新狀態(tài),ENABL(1)為允許,DISABLE(0)為禁止(3)產(chǎn)生起始條件voidI2C_GenerateSTART(12C_TypeDef*12Cx,F(xiàn)unctionalstateNewstate)參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等NewState:I2C新狀態(tài),ENABL(1)為允許,DISABLE(0)為禁止(4)產(chǎn)生停止條件voidI2C_GeneratesTOP(I2C_TypeDef*I2Cx,F(xiàn)unctionalStateNewstate);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等NewState:I2C新狀態(tài),ENABL(1)為允許,DISABLE(0)為禁止

(5)配置應(yīng)答voidI2C_AcknowledgeConfig(I2C_TypeDef*I2Cx,FunctionalStateNewstate);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等NewState:I2C新狀態(tài),ENABL(1)為允許,DISABLE(0)為禁止

(6)配置自身地址2voidI2C_OwnAddress2Config(I2C_TypeDef*I2Cx,u8Adress);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等Adress:7位自身地址(7)發(fā)送數(shù)據(jù)voidI2C_ReceiveData(I2C_TypeDef*I2Cx,u8Date);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等Data:8位發(fā)送數(shù)據(jù)

(8)接收數(shù)據(jù)u8I2C_ReceiveData(I2C_TypeDef*,I2Cx);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等

返回值:8位接收數(shù)據(jù)

(9)發(fā)送7位地址voidI2C_Send7bitAddress(I2c_TypeDef*I2Cx,u8Address,u8I2C_Direction);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等I2C_Direction:方向,在stm32f10x_i2c.h中定義如下:#defineI2C_Direction_Transmitter((u8)0x00)#defineI2C_Direction_Receiver((u8)0x00)(10)讀寄存器u16I2C_ReadRegister(I2C_TypeDef*I2Cx,u8I2C_Register);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等I2C_Register:I2C寄存器返回值:寄存器值

(11)使能軟件復(fù)位voidI2C_SoftwareResetCmd(I2C_Typedef*I2Cx,FunctionalStateNewState);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等NewState:軟件復(fù)位新狀態(tài),ENABL(1)為允許,DISABLE(0)為禁止

(12)獲取最后事件u32I2C_GetLastEvent(I2C_TypeDef*I2Cx,FunctionalStateNewState);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等

返回值:I2C事件

(13)檢查事件ErrorStatus_I2C_CheckEvent(I2C_TypeDef*I2Cx,u32I2C_EVENT):參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等I2C_EVENT:I2C事件返回值:事件狀態(tài),SUCCESS代表最后事件是檢查事件,ERROR代表最后事件不是檢查事件。

(14)獲取I2C標(biāo)志狀態(tài)FlagStatusI2C_GetFlagStatus(I2C_TypeDef*I2Cx,u32I2C_FLAG);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等I2C_FLAG:I2C標(biāo)志返回值:I2C標(biāo)志狀態(tài)。SET(1)代表置位,RESET(0)代表復(fù)位

(15)清除I2C標(biāo)志voidI2C_ClearFlag(I2C2_TypeDef*I2Cx,u32I2C_FLAG);參數(shù)說明:I2Cx:I2C名稱,取值為I2C1或I2C2等12C_FLAG:I2C標(biāo)志

19第四節(jié)應(yīng)用實例引腳功能方向說明引腳功能方向說明1A0輸入器件地址05SDA雙向串行數(shù)據(jù)2A1輸入器件地址16SCL輸入串行時鐘3A2輸入器件地址27WP輸入寫保護4GND-地8VCC輸入電源(2.7~5.5V)以2線串行EEPROM24C02為例,講述通過I

溫馨提示

  • 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

提交評論