




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CC2530和STM32嵌入式接口技術(shù)開發(fā)6.2 STM32 I2C通信技術(shù)應(yīng)用開發(fā)I2C總線STM32的I2C原理STM32 IIC庫函數(shù)的使用溫濕度傳感器項(xiàng)目實(shí)踐IIC總線協(xié)議介紹IIC(InterIntegrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線(通常稱I2C),用于連接微控制器及其外圍設(shè)備。它是由數(shù)據(jù)線SDA和時(shí)鐘SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。IIC物理層IIC支持多個(gè)設(shè)備連接總線電容需小于400pFIIC的控制線較少只有SDA和SCL兩根信號(hào)線IIC設(shè)備都有獨(dú)立地址總線通過設(shè)備地址識(shí)別設(shè)備IIC需設(shè)置上拉電阻確認(rèn)總線電平狀態(tài)IIC的數(shù)據(jù)
2、傳輸靈活速度從100到400kbit/sIIC協(xié)議層讀寫指令段IIC讀寫指令I(lǐng)IC啟停信號(hào)IIC數(shù)據(jù)有效性IIC從機(jī)地址IIC響應(yīng)與非響應(yīng)信號(hào)STM32的IIC原理1. 通訊引腳SDA數(shù)據(jù)總線和SCL時(shí)鐘總線。2. 時(shí)鐘控制邏輯通過時(shí)鐘可以控制IIC總線的通信速率。3. 數(shù)據(jù)控制邏輯對(duì)數(shù)據(jù)和地址進(jìn)行控制和識(shí)別4. 整體控制邏輯負(fù)責(zé)協(xié)調(diào)整個(gè)I2C外設(shè)STM32的IIC主發(fā)送器STM32的IIC主接收器STM32的IIC的使用typedefstructuint32_t I2C_ClockSpeed;/設(shè)置SCL時(shí)鐘頻率,此值要低于400000uint16_t I2C_Mode;/指定工作模式,可選
3、I2C模式及SMBUS模式uint16_t I2C_DutyCycle;/指定時(shí)鐘占空比,可選low/high=2:1及16:9模式uint16_t I2C_OwnAddress1;/指定自身的I2C設(shè)備地址uint16_t I2C_Ack;/使能或關(guān)閉響應(yīng)(一般都要使能)uint16_t I2C_AcknowledgedAddress;/指定地址的長(zhǎng)度,可為7位及10位I2C_InitTypeDef;STM32集成的IIC庫比較精簡(jiǎn),只需要配置相關(guān)參數(shù)即可使用。HTU21D溫濕度傳感器Humirel公司HTU21D溫濕度傳感器,傳感器輸出經(jīng)過標(biāo)定的數(shù)字信號(hào),標(biāo)準(zhǔn)I2C格式。HTU21D的分辨
4、率可以通過輸入命令進(jìn)行改變(8/12bit乃至12/14bit的RH/T),傳感器可以檢測(cè)到電池低電量狀態(tài),并且輸出校驗(yàn)和,有助于提高通信的可靠性。項(xiàng)目場(chǎng)景庫房?jī)?nèi)安裝一定數(shù)量的環(huán)境檢測(cè)傳感器來實(shí)現(xiàn)對(duì)內(nèi)部環(huán)境無死角的實(shí)時(shí)檢測(cè)。這些傳感器不光數(shù)量眾多而且種類也眾多。如何在盡量少使用嵌入式處理芯片的情況下而獲得更多的數(shù)據(jù),最有效的方法就是采用總線連接,通過使用IIC總線可以實(shí)現(xiàn)一條總線連接多個(gè)IIC設(shè)備,從而達(dá)到高效數(shù)據(jù)采集。任務(wù)目標(biāo)庫房環(huán)境監(jiān)控系統(tǒng)生產(chǎn)企業(yè)要設(shè)計(jì)一套集成了環(huán)境采集系統(tǒng)和庫房?jī)?nèi)部環(huán)境干預(yù)系統(tǒng)的綜合環(huán)境維持系統(tǒng),要求使用STM32處理器I2C接口采集溫濕度傳感器的數(shù)據(jù),數(shù)據(jù)可通過顯示屏
5、實(shí)時(shí)顯示。項(xiàng)目實(shí)踐本項(xiàng)目設(shè)計(jì)采用STM32F407的GPIO模擬IIC總線接口,將模擬總線與Plus節(jié)點(diǎn)板載的溫濕度傳感器相連接,使用IIC總線協(xié)議實(shí)現(xiàn)對(duì)溫濕度傳感器的數(shù)據(jù)獲取,通過串口將采集的溫濕度傳感器數(shù)據(jù)打印在PC上以顯示獲取的信息。項(xiàng)目硬件連接圖溫濕度傳感器原理圖項(xiàng)目程序邏輯框圖項(xiàng)目實(shí)現(xiàn)void iic_init(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(I2C_CLK, ENABLE);GPIO_InitStructure.GPIO_Pin = PIN_SCL | PIN_SDA;GPIO_Init
6、Structure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(I2C_GPIO, &GPIO_InitStructure); I2C初始化函數(shù)項(xiàng)目實(shí)現(xiàn)void sda_out(void)GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure
7、.GPIO_Pin = PIN_SDA;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(I2C_GPIO, &GPIO_InitStructure); 設(shè)置SDA為輸出項(xiàng)目實(shí)現(xiàn)void sda_in(void)GPIO_InitTypeDef GPIO_Init
8、Structure;GPIO_InitStructure.GPIO_Pin = PIN_SDA;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(I2C_GPIO, &GPIO_InitStructure); 設(shè)置SDA為輸入項(xiàng)目實(shí)現(xiàn)void iic_start(v
9、oid)sda_out();GPIO_SetBits(I2C_GPIO,PIN_SDA); /拉高數(shù)據(jù)線GPIO_SetBits(I2C_GPIO,PIN_SCL); /拉高時(shí)鐘線delay_us(5); /延時(shí)GPIO_ResetBits(I2C_GPIO,PIN_SDA); /產(chǎn)生下降沿delay_us(5); /延時(shí)GPIO_ResetBits(I2C_GPIO,PIN_SCL); /拉低時(shí)鐘線I2C初始信號(hào)項(xiàng)目實(shí)現(xiàn)void iic_stop(void)sda_out();GPIO_ResetBits(I2C_GPIO,PIN_SDA); /拉低數(shù)據(jù)線GPIO_SetBits(I2C_G
10、PIO,PIN_SCL); /拉高時(shí)鐘線delay_us(5); /延時(shí)5usGPIO_SetBits(I2C_GPIO,PIN_SDA); /產(chǎn)生上升沿delay_us(5); /延時(shí)5usI2C停止信號(hào)項(xiàng)目實(shí)現(xiàn)void iic_send_ack(int ack)sda_out();if(ack)GPIO_SetBits(I2C_GPIO,PIN_SDA); /寫應(yīng)答信號(hào)elseGPIO_ResetBits(I2C_GPIO,PIN_SCL); GPIO_SetBits(I2C_GPIO,PIN_SCL); /拉高時(shí)鐘線delay_us(5); /延時(shí)GPIO_ResetBits(I2C_G
11、PIO,PIN_SCL); /拉低時(shí)鐘線delay_us(5); /延時(shí)I2C應(yīng)答信號(hào)項(xiàng)目實(shí)現(xiàn)int iic_recv_ack(void)int CY = 0;sda_in();GPIO_SetBits(I2C_GPIO,PIN_SCL); /拉高時(shí)鐘線delay_us(5); /延時(shí)CY = SDA_R; /讀應(yīng)答信號(hào)GPIO_ResetBits(I2C_GPIO,PIN_SDA); /拉低時(shí)鐘線delay_us(5); /延時(shí)return CY;I2C接收應(yīng)答信號(hào)項(xiàng)目實(shí)現(xiàn)unsigned char iic_write_byte(unsigned char data)unsigned cha
12、r i;sda_out();GPIO_ResetBits(I2C_GPIO,PIN_SCL); /拉低時(shí)鐘線for(i = 0;i 8;i+) if(data & 0 x80) /判斷數(shù)據(jù)最高位是否為1GPIO_SetBits(I2C_GPIO,PIN_SDA); elseGPIO_ResetBits(I2C_GPIO,PIN_SDA); delay_us(5); /延時(shí)5usI2C寫一個(gè)字節(jié)數(shù)據(jù)項(xiàng)目實(shí)現(xiàn)GPIO_SetBits(I2C_GPIO,PIN_SCL); /輸出SDA穩(wěn)定后,拉高SCL給出上升沿,從機(jī)檢測(cè)到后進(jìn)行數(shù)據(jù)采樣delay_us(5); /延時(shí)5usGPIO_ResetBi
13、ts(I2C_GPIO,PIN_SCL); /拉低時(shí)鐘線delay_us(5); /延時(shí)5usdata = 1; /數(shù)組左移一位 delay_us(5); /延時(shí)2ussda_in();I2C寫一個(gè)字節(jié)數(shù)據(jù)項(xiàng)目實(shí)現(xiàn)GPIO_SetBits(I2C_GPIO,PIN_SDA); /拉高數(shù)據(jù)線GPIO_SetBits(I2C_GPIO,PIN_SCL); /拉高時(shí)鐘線delay_us(5); /延時(shí)2us,等待從機(jī)應(yīng)答if(SDA_R) /SDA為高,收到NACKreturn 1;else /SDA為低,收到ACKGPIO_ResetBits(I2C_GPIO,PIN_SCL); /釋放總線 de
14、lay_us(5); /延時(shí)2us,等待從機(jī)應(yīng)答return 0;I2C寫一個(gè)字節(jié)數(shù)據(jù)項(xiàng)目實(shí)現(xiàn)unsigned char iic_read_byte(unsigned char ack)unsigned char i,data = 0;sda_in();GPIO_ResetBits(I2C_GPIO,PIN_SCL); GPIO_SetBits(I2C_GPIO,PIN_SDA); /釋放總線for(i = 0;i 8;i+)GPIO_SetBits(I2C_GPIO,PIN_SCL); /給出上升沿delay_us(30); /延時(shí)等待信號(hào)穩(wěn)定data = 1;I2C讀一個(gè)字節(jié)數(shù)據(jù)項(xiàng)目實(shí)現(xiàn)if(SDA_R) /采樣獲取數(shù)據(jù)data |= 0 x01;elsedata &= 0 xfe;delay_us(10);GPIO_ResetBits(I2C_GPIO,PIN_SCL); /下降沿,從機(jī)給出下一位值delay_us(20);sda_out();if(ack)GPIO_SetBits(I2C_GPIO,PIN_SDA); /應(yīng)答狀態(tài)elseGPIO_Reset
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 印刷企業(yè)市場(chǎng)調(diào)研方法考核試卷
- 家庭裝飾畫框批發(fā)考核試卷
- 園藝陶瓷的公共空間裝飾效果考核試卷
- 印刷設(shè)備生產(chǎn)過程的智能化技術(shù)應(yīng)用案例考核試卷
- 圖書出租業(yè)務(wù)的服務(wù)標(biāo)準(zhǔn)化培訓(xùn)考核試卷
- 影視錄放設(shè)備的智能鏡頭切換考核試卷
- 暖氣施工合同范本
- 簽訂重大銷售合同范本
- 口腔消毒培訓(xùn)課件
- 電商行業(yè)產(chǎn)品描述免責(zé)協(xié)議承諾書
- EPC項(xiàng)目采購管理方案
- 旅游景區(qū)旅游安全風(fēng)險(xiǎn)評(píng)估報(bào)告
- 門窗安裝工程投標(biāo)書范本(二)
- 追覓科技在線測(cè)評(píng)題
- 智鼎在線測(cè)評(píng)107題
- 病歷書寫規(guī)范與住院病歷質(zhì)量監(jiān)控管理制度
- 12詩詞四首《漁家傲-秋思》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) 初中語文九年級(jí)下冊(cè)
- 金礦承包協(xié)議合同2024年
- 解讀國(guó)有企業(yè)管理人員處分條例(2024)課件(全文)
- 創(chuàng)新創(chuàng)業(yè)基礎(chǔ)-理論、案例與訓(xùn)練(大學(xué)生創(chuàng)新創(chuàng)業(yè)教育課程)全套教學(xué)課件
- TD/T 1072-2022 國(guó)土調(diào)查坡度分級(jí)圖制作技術(shù)規(guī)定(正式版)
評(píng)論
0/150
提交評(píng)論