• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于主控模式下的I2C通信從動(dòng)模式軟件設(shè)計(jì)

      2019-12-11 10:00:03周首杰
      物聯(lián)網(wǎng)技術(shù) 2019年11期
      關(guān)鍵詞:數(shù)據(jù)格式

      周首杰

      摘 要:以I2C通信主控方的要求為基礎(chǔ),討論I2C通信從動(dòng)方的程序編寫。內(nèi)容包括I2C通信的起始部分(握手部分)、數(shù)據(jù)傳送部分以及停止部分的程序編寫,以三部分通信波形要求為準(zhǔn),總結(jié)軟件編寫流程。I2C通信的數(shù)據(jù)格式靈活多樣,可以一次傳送8位二進(jìn)制數(shù)據(jù),也可以一次傳送8的倍數(shù)的二進(jìn)制數(shù)據(jù),從機(jī)在通信中必須按照主機(jī)的要求進(jìn)行數(shù)據(jù)傳送。總結(jié)從機(jī)的數(shù)據(jù)傳送程序流程,以期滿足主機(jī)的通信要求,從而得出I2C通信從動(dòng)模式的詳細(xì)總結(jié)。

      關(guān)鍵詞:I2C通信;主控模式;從動(dòng)模式;起始信號(hào);停止信號(hào);數(shù)據(jù)格式;數(shù)據(jù)傳送

      中圖分類號(hào):TP39文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2019)11-00-02

      0 引 言

      在嵌入式系統(tǒng)設(shè)計(jì)中存在著大量的IC間通信,目前使用較多的為I2C通信。當(dāng)前大部分單片機(jī)均可采用硬件方式的I2C模式進(jìn)行通信,但也有少部分單片機(jī)為降低成本,并未設(shè)計(jì)硬件方式的I2C通信,因此只能采用軟件方式來實(shí)現(xiàn)芯片間通信。目前已有大量文獻(xiàn)討論了I2C通信時(shí)主控方的軟件編寫,但作為通信的另一方,從控方的程序編寫很少有相關(guān)資料涉及,特別是從控方的程序相較于主控方的程序更為復(fù)雜。因此從主機(jī)通信要求出發(fā),總結(jié)了一套從機(jī)的通信軟件編寫流程[1-3]。

      通過主機(jī)發(fā)出的信號(hào)請求,要求從控機(jī)采取相應(yīng)應(yīng)答信號(hào)。為了實(shí)現(xiàn)從機(jī)的實(shí)時(shí)性,要求從機(jī)的SCL線輸入采用外部中斷方式進(jìn)行,可將中斷方式設(shè)置為上升沿觸發(fā)方式。

      1 起始信號(hào)

      圖1所示為主控機(jī)發(fā)送I2C起始信號(hào)的波形圖。I2C總線通過上拉電阻連接電源的正極,當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平都將使總線的信號(hào)變低,即各器件的SDA及SCL均為線“與”關(guān)系。進(jìn)行I2C通信時(shí),首先要確認(rèn)總線是否空閑。圖1中,主機(jī)先將數(shù)據(jù)線拉高,再將時(shí)鐘線拉高,但需注意在拉高時(shí)鐘線時(shí)從機(jī)的響應(yīng),其中時(shí)間t1為從機(jī)響應(yīng)時(shí)間。從機(jī)應(yīng)立即釋放時(shí)鐘線,轉(zhuǎn)為輸入狀態(tài)。主機(jī)只有檢測到從機(jī)釋放時(shí)鐘線控制權(quán)時(shí)才能進(jìn)行下一步操作。主機(jī)在拉高時(shí)鐘線后,檢測時(shí)鐘線的狀態(tài),只有從機(jī)為輸入,時(shí)鐘線變高后,主機(jī)才可以發(fā)出起始命令[4]。

      時(shí)鐘信號(hào)線為高電平時(shí),主機(jī)將數(shù)據(jù)線拉低以發(fā)送起始命令,此時(shí)從機(jī)檢測到數(shù)據(jù)信號(hào)線產(chǎn)生由高到低的信號(hào)變化后,從機(jī)立即檢測時(shí)鐘信號(hào)線是否產(chǎn)生由高到低的變化,如若產(chǎn)生,則說明通信起始信號(hào)已發(fā)出,主機(jī)準(zhǔn)備與從機(jī)通信[5]。從機(jī)控制流程如圖2所示。

      2 停止信號(hào)

      停止信號(hào)的產(chǎn)生比起始信號(hào)簡單,從機(jī)對停止信號(hào)的要求也比起始信號(hào)簡單。

      圖3所示為主機(jī)停止信號(hào)波形圖,對應(yīng)從機(jī)在主機(jī)時(shí)鐘信號(hào)進(jìn)入中斷服務(wù)程序后,通過檢測主機(jī)在數(shù)據(jù)線上發(fā)出的由低到高的電平變化來確認(rèn)通信結(jié)束。

      3 應(yīng)答信號(hào)

      主機(jī)發(fā)送1 B數(shù)據(jù)后,在第九個(gè)時(shí)鐘(CLOCK)脈沖時(shí)必須釋放數(shù)據(jù)線,由從機(jī)產(chǎn)生一個(gè)應(yīng)答信號(hào)。從機(jī)回復(fù)低電平為有效應(yīng)答(ACK),表示從機(jī)已成功接收到該字節(jié);從機(jī)回復(fù)高電平為非應(yīng)答信號(hào)(NACK),表示從機(jī)未成功接收該字節(jié)。如果是有效的應(yīng)答信號(hào)位,要求從機(jī)在第九個(gè)時(shí)鐘脈沖之前的低電平時(shí)間將數(shù)據(jù)線拉低,并確保在第九個(gè)時(shí)鐘的高電平期間為穩(wěn)定的低電平。如果主機(jī)從從機(jī)讀取信息,則在讀完1 B數(shù)據(jù)后,主機(jī)向從機(jī)發(fā)送一個(gè)應(yīng)答信號(hào)ACK,讀完最后一個(gè)數(shù)據(jù)后,主機(jī)向從機(jī)發(fā)送一個(gè)NACK信號(hào),通知從機(jī)結(jié)束數(shù)據(jù)發(fā)送,并在最后發(fā)送一個(gè)停止信號(hào)給從機(jī)。應(yīng)答信號(hào)波形如圖4所示。在每8位數(shù)據(jù)傳送完成后,第九個(gè)時(shí)鐘脈沖傳送一個(gè)應(yīng)答信號(hào)。向從機(jī)中寫信息即由從機(jī)發(fā)出應(yīng)答信號(hào);從從機(jī)中讀信息,即由主機(jī)發(fā)出應(yīng)答信號(hào)。應(yīng)答信號(hào)為低即為成功,為高則為失敗。

      從機(jī)必須配合主機(jī)工作,從機(jī)在第九個(gè)時(shí)鐘脈沖上升沿產(chǎn)生中斷時(shí),將根據(jù)自己的接收情況產(chǎn)生應(yīng)答信號(hào)。從機(jī)工作程序流程如圖5所示。

      4 數(shù)據(jù)傳送

      4.1 字節(jié)傳送與應(yīng)答格式

      數(shù)據(jù)傳送時(shí)先高位后低位,9位為一幀。如果從機(jī)未應(yīng)答主機(jī)信號(hào),如從機(jī)正在進(jìn)行其他工作而無法接收總線上的數(shù)據(jù),則此時(shí)從機(jī)在應(yīng)答時(shí)必須將數(shù)據(jù)線置于高電平,產(chǎn)生一個(gè)非應(yīng)答信號(hào),主機(jī)產(chǎn)生一個(gè)終止信號(hào)以結(jié)束總線的數(shù)據(jù)傳送。每傳送完一個(gè)8位數(shù)據(jù),主機(jī)都要與從機(jī)通過應(yīng)答與非應(yīng)答信號(hào)進(jìn)行溝通以確定是否繼續(xù)進(jìn)行數(shù)據(jù)傳送。

      在主機(jī)從從機(jī)中讀取數(shù)據(jù)時(shí),主機(jī)收到最后一個(gè)數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)出一個(gè)非應(yīng)答信號(hào)(此時(shí)的應(yīng)答信號(hào)由主機(jī)發(fā)出)作為線束標(biāo)志。從機(jī)釋放SDA線,允許主機(jī)產(chǎn)生終止信號(hào)。

      4.2 數(shù)據(jù)幀格式

      從機(jī)地址為7位,分別占據(jù)一個(gè)字節(jié)的D7~D1位。D0位為讀寫標(biāo)志位,D0=0為寫入從機(jī)操作;D0=1,為從從機(jī)讀取數(shù)據(jù)操作。從機(jī)地址格式與讀寫格式如圖6所示。

      (1)主機(jī)向從機(jī)寫數(shù)據(jù),以8位數(shù)據(jù)加一位應(yīng)答為一幀,從機(jī)負(fù)責(zé)應(yīng)答。主機(jī)先寫入從機(jī)地址,再寫入從機(jī)存儲(chǔ)器地址,后面為要寫入的數(shù)據(jù),以一個(gè)字節(jié)加一個(gè)應(yīng)答位(非應(yīng)答位)為一幀寫入。如果只寫一個(gè)字節(jié),寫完后主機(jī)可發(fā)停止信號(hào),如果繼續(xù)寫入數(shù)據(jù),則主機(jī)繼續(xù)寫入數(shù)據(jù)即可,不必再次輸入存儲(chǔ)器地址,從機(jī)會(huì)在上一地址上自動(dòng)加1進(jìn)行數(shù)據(jù)存儲(chǔ)。此時(shí)要特別注意的是:從機(jī)一定要有應(yīng)答信號(hào)(ACK),否則主機(jī)將終止數(shù)據(jù)的繼續(xù)傳送。從機(jī)無論是產(chǎn)生非應(yīng)答信號(hào)還是在規(guī)定時(shí)間內(nèi)未產(chǎn)生應(yīng)答信號(hào),主機(jī)都視為無應(yīng)答,將終止數(shù)據(jù)傳送。寫數(shù)據(jù)格式如圖7所示。

      從機(jī)接收數(shù)據(jù)時(shí)程序較簡單,只要在CLOCK時(shí)鐘線上升沿產(chǎn)生的中斷中依次接收數(shù)據(jù),并在接收完8位數(shù)據(jù)后產(chǎn)生應(yīng)答信號(hào)即可。然后對數(shù)據(jù)進(jìn)行判斷,如果為從機(jī)地址數(shù)據(jù),則判斷此數(shù)據(jù)是否與己方地址相同,相同則繼續(xù)接收,不同則放棄接收。然后接收存儲(chǔ)器地址,并接收數(shù)據(jù),在接收數(shù)據(jù)時(shí)將所接收的數(shù)據(jù)依次存儲(chǔ)。從機(jī)程序流程如圖8所示。

      (2)主機(jī)從從機(jī)讀數(shù)據(jù)

      讀取數(shù)據(jù)與寫入數(shù)據(jù)時(shí)的格式存在一定區(qū)別,從機(jī)地址信息需寫2次,且需發(fā)2次起始信息。數(shù)據(jù)框圖如圖9所示。

      由于接收數(shù)據(jù)時(shí)從機(jī)程序比較簡單,在此不再討論。

      5 結(jié) 語

      I2C通信是單片機(jī)與單片機(jī)之間,或單片機(jī)與存儲(chǔ)器之間的通信,對于經(jīng)濟(jì)型單片機(jī)而言,能有效節(jié)省單片機(jī)的I/O口,因此I2C通信也在通信領(lǐng)域得到廣泛應(yīng)用。本文是長期編程過程中的經(jīng)驗(yàn)總結(jié),希望能給讀者提供一定參考。

      參 考 文 獻(xiàn)

      [1]賴麒文. 8051單片機(jī)C語言徹底應(yīng)用[M].北京:科學(xué)技術(shù)出版社,2002:289-311.

      [2]張毅剛.單片機(jī)原理及接口技術(shù)(C51編程)[M].北京:人民郵電出版社,2011.

      [3]鄒益民.單片機(jī)C語言教程[M].北京:中國石化出版社,2010.

      [4]孫余凱,吳鳴山.I2C總線數(shù)控彩色電視機(jī)維修技能與數(shù)據(jù)大全[M].北京:電子工業(yè)出版社,2010.

      [5]張軍才,茹偉,趙臘才,等. I2C總線測試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2016(12):118-120.

      [6]桑任仲,蔡艷波,徐萌,等. I2C總線在強(qiáng)干擾環(huán)境下的應(yīng)用[C]// 2018中國汽車工程學(xué)會(huì)年會(huì),2018-11.

      [7]李蔭瓏,丘珊珊. I2C總線設(shè)計(jì)技術(shù)及其死鎖的探討[J].家電科技,2018(7):65-67.

      [8]黃淑蓉.通過I2C總線接口的MCU固件升級(jí)方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2018(7):20-24.

      [9]陳春行,林春生,翟國君.基于MSP430的模擬I2C串口通信的實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2018(5):1029-1032.

      [10]林倩. I2C協(xié)議解析及實(shí)測波形[J].數(shù)字技術(shù)與應(yīng)用,2016(11):57-58.

      猜你喜歡
      數(shù)據(jù)格式
      在智能交通系統(tǒng)中PLC數(shù)據(jù)格式轉(zhuǎn)換方法的研究
      電子測試(2018年1期)2018-04-18 11:52:49
      基于RFID的電能計(jì)量設(shè)備電子封印管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      軟件(2017年7期)2018-01-24 21:43:41
      基于水利標(biāo)準(zhǔn)數(shù)據(jù)格式的BIM數(shù)據(jù)管理和水利BIM生態(tài)探索
      氣象自觀系統(tǒng)(AWOS)燈光信息接入解決方案
      世界首個(gè)可記錄物體內(nèi)部結(jié)構(gòu)等復(fù)雜信息的3D打印數(shù)據(jù)格式問世
      出版與印刷(2016年3期)2016-08-15 00:45:53
      論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
      DWG與SHP數(shù)據(jù)格式互轉(zhuǎn)換方法研究——以龍巖規(guī)劃測繪數(shù)據(jù)為例
      基于特征庫的測井?dāng)?shù)據(jù)格式自動(dòng)識(shí)別與轉(zhuǎn)換方法
      秸稈沼氣制取管理系統(tǒng)的研究
      基于ArcGIS的規(guī)劃數(shù)據(jù)格式轉(zhuǎn)換研究
      手机| 莒南县| 雷州市| 苏尼特左旗| 山阳县| 乌鲁木齐市| 阆中市| 美姑县| 隆子县| 旺苍县| 油尖旺区| 芜湖市| 正阳县| 绥棱县| 西乌珠穆沁旗| 肇州县| 南宁市| 南漳县| 卢氏县| 汶川县| 广汉市| 平潭县| 虹口区| 长丰县| 涿州市| 西宁市| 宝兴县| 哈巴河县| 子洲县| 尼勒克县| 梁平县| 衢州市| 永清县| 上蔡县| 崇文区| 米林县| 高碑店市| 图木舒克市| 克拉玛依市| 余干县| 离岛区|