国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于I2C 總線(xiàn)實(shí)驗(yàn)設(shè)計(jì)

2020-10-09 08:30:20孫佳昊蔡艷婧胡傳志
關(guān)鍵詞:微控制器指針字節(jié)

宣 慧,孫佳昊,程 實(shí),蔡艷婧,胡傳志

(1. 通富微電子股份有限公司,江蘇 南通 226000;2. 江蘇大學(xué) 計(jì)算機(jī)科學(xué)與通信工程學(xué)院,江蘇鎮(zhèn)江 212013;3. 南通大學(xué) 江蘇省專(zhuān)用集成電路設(shè)計(jì)重點(diǎn)實(shí)驗(yàn)室,江蘇 南通 226000;4. 南通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,江蘇 南通 226000;5. 江蘇商貿(mào)職業(yè)技術(shù)學(xué)院 電子與信息學(xué)院,江蘇 南通 226000)

I2C(inter-integrated circuit)總線(xiàn),主要用于電路板內(nèi)集成電路之間的連接,是由PHILIPS 公司開(kāi)發(fā)的一種同步串行總線(xiàn)協(xié)議。I2C 總線(xiàn)因?yàn)閰f(xié)議成熟、引腳簡(jiǎn)單、傳輸速率高,已經(jīng)成為世界性的工業(yè)標(biāo)準(zhǔn),被大多數(shù)的芯片廠(chǎng)家采用。嵌入式系統(tǒng)中常用該總線(xiàn)來(lái)連接存儲(chǔ)器[1-3]、傳感器[4-5]和交互設(shè)備[6-7]等,因此I2C 總線(xiàn)實(shí)驗(yàn)就成了嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)中極重要的一個(gè)環(huán)節(jié)。I2C 總線(xiàn)編程要點(diǎn)在于掌握I2C 總線(xiàn)的數(shù)據(jù)幀格式,本文以TI 公司的TM4C123GH6PM 微控制器通過(guò) I2C 總線(xiàn)接口讀寫(xiě) LM75A 溫度傳感器為例,以TivaWare 函數(shù)庫(kù)中的I2C 總線(xiàn)API 函數(shù)為工具,研究I2C 總線(xiàn)的實(shí)驗(yàn)設(shè)計(jì)方法

1 I2C 總線(xiàn)概述

1.1 I2C 總線(xiàn)特征

為了使硬件效益最大和電路最簡(jiǎn)單,PHILIPS 公司開(kāi)發(fā)了一個(gè)簡(jiǎn)單的雙向兩線(xiàn)總線(xiàn),實(shí)現(xiàn)有效的 IC之間控制,該總線(xiàn)稱(chēng)為Inter IC 或I2C 總線(xiàn)[8],具有以下一些顯著特征。

(1)只要求兩條總線(xiàn)線(xiàn)路。一條串行數(shù)據(jù)線(xiàn)SDA,一條串行時(shí)鐘線(xiàn)SCL。

(2)對(duì)各器件的尋址是軟尋址方式,因此節(jié)點(diǎn)上沒(méi)有必需的片選線(xiàn)[9]。

(3)是一個(gè)真正的多主機(jī)總線(xiàn),帶有沖突檢測(cè)和仲裁,防止多個(gè)主機(jī)同時(shí)開(kāi)始數(shù)據(jù)傳輸時(shí)破壞數(shù)據(jù)。

(4)串行的8 位雙向數(shù)據(jù)傳輸,位速率在標(biāo)準(zhǔn)模式下可達(dá)100 kbit/s,快速模式下可達(dá)400 kbit/s,高速模式下可達(dá)3.4 Mbit/s。

1.2 I2C 總線(xiàn)上的設(shè)備

I2C 總線(xiàn)上的設(shè)備分為主機(jī)(也稱(chēng)為主控器)和從機(jī)(也成為被控器),主機(jī)和從機(jī)都既可以是數(shù)據(jù)的發(fā)送方,也可以是數(shù)據(jù)的接收方。主機(jī)提供時(shí)鐘信號(hào),對(duì)總線(xiàn)時(shí)序進(jìn)行控制,一般由微控制器擔(dān)任主機(jī);總線(xiàn)上除主機(jī)外的其他設(shè)備都是從機(jī),一般來(lái)說(shuō)是外圍器件。主機(jī)通過(guò)從機(jī)地址訪(fǎng)問(wèn)從機(jī),從機(jī)之間無(wú)法通信,任何數(shù)據(jù)傳輸都必須通過(guò)主機(jī)進(jìn)行。在標(biāo)準(zhǔn)的I2C總線(xiàn)中,從機(jī)地址被定義為7 位,擴(kuò)展I2C 總線(xiàn)允許10 位從機(jī)地址。

1.3 I2C 總線(xiàn)系統(tǒng)結(jié)構(gòu)

某一I2C 總線(xiàn)的系統(tǒng)結(jié)構(gòu)如圖1 所示,通過(guò)沖突檢測(cè),主機(jī)1 在查看總線(xiàn)空閑的情況下(即主機(jī)2 不在使用總線(xiàn)),發(fā)送一個(gè)開(kāi)始信號(hào),啟動(dòng)一次數(shù)據(jù)傳輸,先對(duì)從機(jī)尋址,再在總線(xiàn)上傳輸數(shù)據(jù)。數(shù)據(jù)以字節(jié)為單位,每傳送一個(gè)字節(jié)后都必須跟一個(gè)應(yīng)答位,由接收方回答,所以I2C 總線(xiàn)上的數(shù)據(jù)幀為8 加1 的格式。

圖1 某一I2C 總線(xiàn)系統(tǒng)結(jié)構(gòu)圖

1.4 I2C 總線(xiàn)上的信號(hào)類(lèi)型

I2C 總線(xiàn)上的信號(hào)類(lèi)型有以下5 個(gè):

(1)開(kāi)始信號(hào)(START),由主機(jī)產(chǎn)生,用來(lái)建立通信,從此總線(xiàn)將處于忙狀態(tài),直至結(jié)束通信;

(2)停止信號(hào)(STOP),由主機(jī)產(chǎn)生,用來(lái)結(jié)束通信,此后總線(xiàn)將處于空閑狀態(tài);

(3)重新開(kāi)始信號(hào)(RESTART),由主機(jī)產(chǎn)生,用于改變上次開(kāi)始時(shí)所建立的數(shù)據(jù)傳輸方向或目的從機(jī);

(4)應(yīng)答信號(hào)(ACK),由接收方產(chǎn)生,表示收到數(shù)據(jù);

(5)非應(yīng)答信號(hào)(NO ACK),由接收方產(chǎn)生,如果是從機(jī)作為接收方發(fā)送非應(yīng)答信號(hào),那么主機(jī)認(rèn)為此次數(shù)據(jù)傳輸失??;如果是主機(jī)作為接收方發(fā)送非應(yīng)答信號(hào),那么從機(jī)認(rèn)為數(shù)據(jù)傳輸結(jié)束,不再往總線(xiàn)上放數(shù)據(jù)。

1.5 I2C 總線(xiàn)數(shù)據(jù)幀格式

I2C 總線(xiàn)上的數(shù)據(jù)幀格式如圖 2 所示,一個(gè)標(biāo)準(zhǔn)的I2C 通信由4 部分組成:開(kāi)始信號(hào)、從機(jī)地址傳輸、數(shù)據(jù)傳輸和停止信號(hào)。開(kāi)始信號(hào)后的第一個(gè)字節(jié)為尋址字節(jié),由7 位的從機(jī)地址加1 位方向位構(gòu)成,方向位為0 表示主機(jī)寫(xiě),方向位為1 表示主機(jī)讀。每傳送一個(gè)字節(jié)后都必須跟隨一個(gè)應(yīng)答位,每次通信的數(shù)據(jù)字節(jié)數(shù)沒(méi)有限制,在全部數(shù)據(jù)傳送結(jié)束后,由主機(jī)發(fā)送停止信號(hào),結(jié)束通信。

圖2 I2C 總線(xiàn)數(shù)據(jù)幀格式

2 硬件電路設(shè)計(jì)

實(shí)驗(yàn)中,以TI 公司的TM4C123GH6PM 微控制器作為主機(jī),以L(fǎng)M75A 溫度傳感器作為從機(jī),建立I2C總線(xiàn)連接,TM4C123GH6PM通過(guò)I2C 總線(xiàn)讀取LM75A檢測(cè)到的溫度值。硬件電路見(jiàn)圖3。

圖3 硬件電路

2.1 TM4C123GH6PM 介紹

TM4C123GH6PM 是 TI 公司的 TM4C123x 系列的微控制器,工作主頻可達(dá) 80 MHz,采用 ARM Cortex-M4 浮點(diǎn)內(nèi)核。配備有4 個(gè)I2C 模塊,每個(gè)模塊既可以作為主機(jī),也可以作為從機(jī),本實(shí)驗(yàn)中將I2C1模塊用作主機(jī),其中SDA 和SCL 為引腳PA7 和PA6的復(fù)用功能[10]。

2.2 LM75A

LM75A 是一個(gè)帶有I2C 總線(xiàn)接口的溫度傳感器,只能用作從機(jī)。微控制器可以通過(guò) I2C 總線(xiàn)直接讀寫(xiě)其內(nèi)部寄存器:即溫度寄存器、配置寄存器、THYST寄存器和TOS 寄存器[11]。

除了以上 4 個(gè)寄存器以外,LM75A 還有一個(gè) 8位的指針寄存器,高 6 位等于0,低2 位是其他4 個(gè)寄存器的指針值。指針寄存器對(duì)用戶(hù)來(lái)說(shuō)是不可訪(fǎng)問(wèn)的,但通過(guò)將指針數(shù)據(jù)放置到總線(xiàn)命令中可以用來(lái)選擇需要讀寫(xiě)的寄存器,其中00 是溫度寄存器的指針,01 是配置寄存器的指針,10 是THYST 寄存器的指針,11 是TOS 寄存器的指針。

溫度寄存器是16 位的只讀寄存器,其中D0—D6為全零,D7—D15 保存當(dāng)前溫度值,這9 位以二進(jìn)制補(bǔ)碼數(shù)據(jù)的形式存放分辨率為0.5 ℃的溫度值。其中D8—D15 為整數(shù)部分,D7 為小數(shù)部分。

LM75A 在總線(xiàn)上的7 位從機(jī)地址由兩部分構(gòu)成,其中低3 位由外部引腳A2、A1 和A0 的邏輯值定義,高4 位由內(nèi)部硬連線(xiàn)預(yù)先設(shè)置為“1001”,因此地址范圍是0X48—0X4F。實(shí)驗(yàn)中將 A2、A1 和A0 全部接地,因此地址為0X48。

通過(guò) I2C 總線(xiàn)讀取 LM75A 溫度寄存器的過(guò)程:第1 步,MCU 發(fā)送開(kāi)始信號(hào),并尋址LM75A,寫(xiě)方式;第2 步,MCU 寫(xiě)指針寄存器(00,指向溫度寄存器);第3 步,MCU 發(fā)送重新開(kāi)始信號(hào)以改變數(shù)據(jù)傳輸方向,尋址LM75A,讀方式;第4 步,MCU 讀溫度寄存器的高8 位;第5 步,MCU 讀溫度寄存器的低8 位;第6 步,MCU 發(fā)送停止信號(hào),釋放總線(xiàn)。讀取溫度寄存器見(jiàn)圖4。

圖4 讀取溫度寄存器

3 基于TivaWare 的程序設(shè)計(jì)

TivaWare 是一套廣泛用于控制各種TM4C 系列器件外設(shè)功能的驅(qū)動(dòng)包,即驅(qū)動(dòng)函數(shù)庫(kù),其中的 I2C 庫(kù)提供了一些用于I2C 操作的API 函數(shù)[12]。程序設(shè)計(jì)中將用到以下函數(shù):

(1)I2CMasterSlaveAddrSet 用來(lái)發(fā)送開(kāi)始信號(hào)、尋址字節(jié);

(2)I2CMasterDataPut 將數(shù)據(jù)寫(xiě)入 I2C 主機(jī)數(shù)據(jù)寄存器;

(3)I2CMasterDataGet 從 I2C 主機(jī)數(shù)據(jù)寄存器讀取數(shù)據(jù);

(4)I2CMasterControl 控制主機(jī)模塊的發(fā)送或接收;

(5)I2CMasterBusy 查看主機(jī)是否在忙于發(fā)送或接收數(shù)據(jù);

參照?qǐng)D4 中讀取溫度寄存器的數(shù)據(jù)幀格式,設(shè)計(jì)函數(shù)Read_LM75A 如下:

4 實(shí)驗(yàn)結(jié)果

實(shí)驗(yàn)中,每秒鐘讀一次LM75A,并將溫度值(包括高位字節(jié)和低位字節(jié))以十進(jìn)制格式通過(guò)串行口發(fā)送到 PC 的超級(jí)終端。為了體現(xiàn)溫度的變化,實(shí)驗(yàn)中用電吹風(fēng)加熱 LM75A 的周邊環(huán)境,通過(guò)超級(jí)終端看到了緩慢遞增的溫度值,結(jié)果如圖5 所示。

圖5 超級(jí)終端輸出的溫度值

為了更清楚地表示溫度,可以將溫度寄存器的值轉(zhuǎn)換為攝氏度,高位字節(jié)(MSB)為整數(shù)部分;低位字節(jié)的 D7 位為小數(shù)部分,所以低位字節(jié)(LSB)為128 即 0.5 ℃,為0 即 0.0 ℃,將整數(shù)部分加上小數(shù)部分即得到溫度的攝氏度值。將圖5 的輸出結(jié)果轉(zhuǎn)換為攝氏度值的結(jié)果見(jiàn)表1。

表1 超級(jí)終端輸出的溫度攝氏度值

5 結(jié)論

實(shí)驗(yàn)結(jié)果表明,該實(shí)驗(yàn)實(shí)現(xiàn)了對(duì)I2C 總線(xiàn)的讀寫(xiě)功能,該實(shí)驗(yàn)的設(shè)計(jì)方法對(duì)實(shí)踐中I2C 總線(xiàn)的程序設(shè)計(jì)有一定借鑒意義。文中為了清楚闡明I2C 總線(xiàn)的讀寫(xiě)時(shí)序,采用了查詢(xún)等待的模式,實(shí)際應(yīng)用中為了提高系統(tǒng)的實(shí)時(shí)性,應(yīng)該采用中斷模式。

猜你喜歡
微控制器指針字節(jié)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
偷指針的人
物聯(lián)網(wǎng)技術(shù)在微控制器實(shí)驗(yàn)教學(xué)中的應(yīng)用
電子制作(2017年14期)2017-12-18 07:07:58
為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
簡(jiǎn)談MC7字節(jié)碼
基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
Atmel針對(duì)新一代物聯(lián)網(wǎng)應(yīng)用發(fā)布全新32位微控制器
最新STM32設(shè)計(jì)工具增加對(duì)混合信號(hào)微控制器的支持
ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法
鄢陵县| 开阳县| 贵阳市| 贡觉县| 寿阳县| 博野县| 丽水市| 铁岭市| 砀山县| 和政县| 鄂托克旗| 淮北市| 秦安县| 南部县| 高阳县| 乳源| 颍上县| 沈丘县| 马龙县| 建阳市| 通榆县| 高清| 北辰区| 泾川县| 十堰市| 云梦县| 周宁县| 白山市| 纳雍县| 华安县| 睢宁县| 永登县| 贵州省| 绥化市| 凤山市| 封开县| 克山县| 什邡市| 怀柔区| 通渭县| 遵化市|