姬占濤,毛惠豐
(西安工程大學(xué) 電子信息學(xué)院,西安710048)
?
TMS320F28335的I2C總線與ADS1115的通信設(shè)計(jì)※
姬占濤,毛惠豐
(西安工程大學(xué) 電子信息學(xué)院,西安710048)
摘要:簡(jiǎn)單介紹了TMS320F28335的外設(shè)I2C總線的通信協(xié)議,詳細(xì)描述了ADS1115芯片的工作原理及TMS320F28335外設(shè)I2C總線與ADS1115通信的驅(qū)動(dòng)程序,并利用芯片ADS1115實(shí)現(xiàn)了循環(huán)采集4路模擬量,且最終獲得的實(shí)驗(yàn)結(jié)果在允許的范圍內(nèi),驗(yàn)證了數(shù)據(jù)傳輸?shù)母袷礁鶬2C的協(xié)議是一致的。
關(guān)鍵詞:TMS320F28335;ADS1115;I2C總線
引言
在A/D轉(zhuǎn)換的應(yīng)用中,一般利用兩種方式:一種是MCU與被采樣信號(hào)之間存在隔離;另一種是MCU與被采集信號(hào)之間不存在隔離。在應(yīng)用中,為了防止干擾,引入隔離電路。而隔離電路又分為兩種:一種是模擬信號(hào)先被隔離以后,然后再進(jìn)行A/D轉(zhuǎn)換;另一種為模擬信號(hào)先進(jìn)行A/D轉(zhuǎn)換,然后再把數(shù)字信號(hào)進(jìn)行隔離。為了節(jié)約成本,此文用的是數(shù)字隔離,引用了芯片ADUM1250來實(shí)現(xiàn)隔離。
考慮到DSP集成的I2C總線模塊與要被隔離的采樣信號(hào),本文以TMS320F28335的外設(shè)I2C總線與ADS1115通信為例,詳細(xì)分析了I2C總線的通信協(xié)議,并利用實(shí)驗(yàn)驗(yàn)證了I2C通信協(xié)議,同時(shí)利用ADS1115實(shí)現(xiàn)了A/D轉(zhuǎn)換。
1TMS320F28335浮點(diǎn)控制器
TI公司的TMS320F28335是一款浮點(diǎn)控制器,本文以TMS320F28335為例,利用開發(fā)軟件CCS3.3來編寫ADS1115的驅(qū)動(dòng)程序。ADS1115與TMS320F28335的連接如圖1所示。
圖1 ADS1115與TMS320F28335的連接
2I2C總線
I2C模塊是進(jìn)行通信的串行接口,可以驅(qū)動(dòng)EEPROM和A/D轉(zhuǎn)換器。
2.1I2C總線總體特征
SDA和SCL是I2C總線的數(shù)據(jù)線和時(shí)鐘線,I2C總線在驅(qū)動(dòng)ADS1115的過程中,SCL時(shí)鐘線是由主機(jī)控制的,而SDA數(shù)據(jù)的高低電平可以由主機(jī)控制,也可以由從機(jī)控制。
2.2I2C時(shí)鐘
I2C時(shí)鐘線的高低電平持續(xù)時(shí)間是由模塊時(shí)鐘、I2CCLKH高電平分頻寄存器和I2CCLKL低電平分頻寄存器、分頻延時(shí)值決定的。而模塊時(shí)鐘是由系統(tǒng)時(shí)鐘SYSCLKOUT、I2C分頻寄存器(I2CPSC)來決定的。模塊時(shí)鐘的工作范圍為7~12 MHz,模塊時(shí)鐘的計(jì)算公式如下:
SCL的低電平對(duì)應(yīng)的時(shí)間和高電平對(duì)應(yīng)的時(shí)間如圖2所示。ICCH表示SCL的高電平對(duì)應(yīng)時(shí)間,ICCL表示SCL的低電平對(duì)應(yīng)時(shí)間。
圖2 SCL時(shí)鐘的高低電平時(shí)間
其中,I2CCLKH為高電平分頻寄存器,I2CPSC為I2C分頻寄存器,I2CCLKL為低電平分頻寄存器,d為分頻延時(shí)值,判定如表1所列。
表1 I2C分頻延時(shí)值判定表
IPSC為預(yù)分步寄存器此處配置的模塊時(shí)鐘為10 MHz, SCL的低和高電平維持時(shí)間分別為1 μs、1.5 μs。
2.3I2C總線數(shù)據(jù)格式
一次典型的總線傳輸依次包含:開始條件、地址、數(shù)據(jù)流、停止條件,而具體的操作要針對(duì)寄存器。
開始條件與停止條件的表示是在SCL的高電平范圍內(nèi),而何時(shí)產(chǎn)生開始條件與停止條件要根據(jù)參考手冊(cè)自己設(shè)置。開始條件和停止條件的產(chǎn)生與模式寄存器I2CMOD的配置相關(guān),此處配置成起始條件、從地址、n個(gè)數(shù)據(jù)字節(jié)、停止條件的格式。
地址則包括7位的地址格式與10位的地址格式,此處選擇7位地址格式,地址的某一位變化是在SCL的低電平范圍內(nèi)進(jìn)行的;數(shù)據(jù)傳輸格式中SDA的數(shù)據(jù)改變是在SCL的低電平范圍內(nèi)變化的;數(shù)據(jù)流其中的某一幀配置的是傳輸8位數(shù)據(jù)字節(jié),傳輸完8位數(shù)據(jù)字節(jié)后,會(huì)自動(dòng)產(chǎn)生一個(gè)應(yīng)答位ACK。ACK應(yīng)答信號(hào)是在一個(gè)字節(jié)傳送完畢之后,從機(jī)發(fā)送一個(gè)應(yīng)答信號(hào),表示從機(jī)已經(jīng)接收了一個(gè)字節(jié),主機(jī)可以繼續(xù)發(fā)送。
此外,還有一個(gè)非應(yīng)答信號(hào)NACK,一個(gè)作用是主機(jī)作為接收端,接收完一定字節(jié)后主機(jī)發(fā)送一個(gè)NACK信號(hào),表示已經(jīng)接收完畢;另一個(gè)作用就是主機(jī)作為發(fā)送端,利用NACK產(chǎn)生中斷。
圖3簡(jiǎn)單地畫出了SCL在高低電平范圍內(nèi)SDA數(shù)據(jù)變化的示意圖。數(shù)據(jù)開始傳輸?shù)臈l件對(duì)應(yīng)的是SCL在高電平的范圍內(nèi)SDA由高電平變成低電平,數(shù)據(jù)結(jié)束傳輸?shù)臈l件對(duì)應(yīng)的是SCL在高電平的范圍內(nèi)SDA由低電平變成高電平,而地址和數(shù)據(jù)流某一個(gè)位的電平的變化是在SCL的低電平范圍內(nèi)進(jìn)行的。
圖3 I2C總線的數(shù)據(jù)傳輸
2.4中斷方式
此處用的中斷方式為檢測(cè)到停止條件中斷、接收FIFO中斷、定時(shí)中斷。
檢測(cè)到停止條件中斷,意思是指主機(jī)每次發(fā)完一定字節(jié)后,產(chǎn)生一個(gè)停止條件中斷,這個(gè)中斷判斷規(guī)定個(gè)數(shù)的數(shù)據(jù)是否發(fā)送完,因此用到分段發(fā)送的分時(shí)數(shù)據(jù)比較好。
接收FIFO中斷,表示接收到規(guī)定個(gè)數(shù)的數(shù)據(jù)時(shí)產(chǎn)生一個(gè)FIFO中斷,這個(gè)中斷用到判斷接收數(shù)據(jù)是否接收完。
定時(shí)中斷是指定時(shí)時(shí)間一到便進(jìn)行讀取轉(zhuǎn)換的數(shù)據(jù),因?yàn)檗D(zhuǎn)換寄存器的數(shù)據(jù)轉(zhuǎn)換需要轉(zhuǎn)換時(shí)間,因此要設(shè)定一定的時(shí)間讀取轉(zhuǎn)換數(shù)據(jù)。
3ADS1115的工作原理
ADS1115是一種超小型、低功耗、內(nèi)部參考的16位數(shù)字轉(zhuǎn)換器,數(shù)據(jù)傳輸是通過I2C總線兼容的串行接口實(shí)現(xiàn);可以被配置成4個(gè)I2C從地址,也就是I2C總線可以操作4片ADS1115;其工作電源可以是2.0~5.5 V;芯片的轉(zhuǎn)換操作的最高采樣速率是860 sps;可以辨別的最小模擬量為256 mV;可以實(shí)現(xiàn)兩路差分輸入和4路單端輸入,可以工作在連續(xù)方式或單觸發(fā)方式。ADS1115外圍接口如圖4所示。
圖4 ADS1115外圍接口
通過配置寄存器來使AIN0~AIN3實(shí)現(xiàn)兩路差分輸入與4路單端輸入,通過ADDR PIN來選擇芯片,可以配置芯片的地址來控制4片ADS1115。其中,ADDR PIN引腳接地,表示此時(shí)ADS1115的從地址為0x48。
通過寄存器的地址可以選中被訪問的寄存器,然后根據(jù)需要對(duì)寄存器進(jìn)行讀寫。
3ADUM1250
為了更好地消除干擾,用ADUM1250芯片來實(shí)現(xiàn)數(shù)字信號(hào)隔離。
圖5的上拉電阻的大小與傳輸速率有關(guān),電阻阻值在一定范圍內(nèi),傳輸速率越大,上拉電阻越小,傳輸速率越低,上拉電阻越大。為了能比較清楚地表示SCL與SDA的高低電平,選擇上拉電阻為1.1 kΩ。
圖5 ADUM1250外圍電路
4DSP主程序設(shè)計(jì)
要發(fā)送的數(shù)據(jù)1為0x01(指向配置寄存器);控制字0x40、0xe3表示單端輸入、轉(zhuǎn)換模式為連續(xù)模式;要發(fā)送的數(shù)據(jù)2為0x00(指向轉(zhuǎn)換寄存器);檢測(cè)到停止條件指的是每次通過DSP對(duì)ADS1115寫完發(fā)送的數(shù)據(jù)之后產(chǎn)生的中斷條件;發(fā)送完標(biāo)志的設(shè)定狀態(tài)指的是把規(guī)定的要發(fā)送的數(shù)據(jù)發(fā)送完后會(huì)產(chǎn)生一個(gè)設(shè)定的狀態(tài)。這個(gè)狀態(tài)一到,開始往下執(zhí)行即開始定時(shí)。
圖6 流程圖
圖6(a)為讀取一路ADS1115的流程圖。FOR循環(huán)為整個(gè)大的循環(huán),寫控制字、讀轉(zhuǎn)換寄存器的操作都在FOR循環(huán)中,并可設(shè)置中間變量來實(shí)現(xiàn)軟硬件結(jié)合。
圖6(b)為具體寫操作,要想實(shí)現(xiàn)TMS320F28335的外設(shè)I2C總線與ADS1115通信,首先要做的就是發(fā)送數(shù)據(jù)1(根據(jù)手冊(cè)寫控制字,即先寫ADS1115的地址,地址匹配好以后,寫配置寄存器的地址,接著寫配置寄存器的高低字節(jié),此處要根據(jù)手冊(cè)看想要達(dá)到的目的,來提煉要寫的控制字);然后發(fā)送數(shù)據(jù)2(寫ADS1115的地址,接著寫轉(zhuǎn)換寄存器的地址);在定時(shí)到以后,寫轉(zhuǎn)換寄存器的地址,讀轉(zhuǎn)換寄存器的結(jié)果。
在完成讀第1路的模擬電壓的前提下,循環(huán)讀取4路模擬電壓,這4路模擬電壓的讀取要順序執(zhí)行,讀取完一路后再讀下一路,不能一起讀4路。
I2C初始化程序如下:
void I2CA_Init(void){
I2caRegs.I2CSAR = 0x0048;//ADS1115地址
I2caRegs.I2CPSC.all = 14;//模塊時(shí)鐘設(shè)置為150M/15=10M
I2caRegs.I2CCLKL = 10;// I2CCLKL低電平分頻寄存器
I2caRegs.I2CCLKH = 5;// I2CCLKH高電平分頻寄存器
I2caRegs.I2CIER.all = 0x28;
//使能停止條件中斷和接收數(shù)據(jù)準(zhǔn)備好中斷
I2caRegs.I2CMDR.all = 0x0020;
//8位數(shù)據(jù)字節(jié),7位地址,計(jì)數(shù)器決定發(fā)送接收字節(jié)數(shù);
//I2C為主,開始條件和停止條件的輸出方式
I2caRegs.I2CFFTX.all = 0x6000;
//使能I2C FIFO,使能發(fā)送FIFO
I2caRegs.I2CFFRX.all = 0x2260;
//使能I2C FIFO,使能接收FIFO,接收FIFO包含2個(gè)字節(jié),
//接收完2個(gè)字節(jié)后產(chǎn)生接收FIFO中斷
}
Uint16 I2CA_WriteData(struct I2CMSG *msg){
Uint16 i;
I2caRegs.I2CSAR = 0x0048;//從地址
I2caRegs.I2CCNT = msg->NumOfBytes;
//發(fā)送字節(jié)的數(shù)量
for (i=0; i
I2caRegs.I2CDXR = *(msg->MsgBuffer+i);
//要發(fā)送的字節(jié)
}
I2caRegs.I2CMDR.all = 0x6E20;
//I2C為主設(shè)備,I2C發(fā)數(shù)據(jù),7位地址格式,8位數(shù)據(jù)字節(jié),
//規(guī)定數(shù)量的字節(jié)數(shù)發(fā)送完產(chǎn)生停止條件
}
Uint16 I2CA_ReadData(struct I2CMSG *msg){
I2caRegs.I2CSAR =0x0048;//從地址
I2caRegs.I2CCNT = msg->NumOfBytes;
//接收字節(jié)的數(shù)量
I2caRegs.I2CMDR.all = 0x2C20;
// I2C為主設(shè)備,I2C接收數(shù)據(jù),7位地址格式,8位數(shù)據(jù)字節(jié),
//規(guī)定數(shù)量的字節(jié)數(shù)接收完產(chǎn)生停止條件
}
5實(shí)驗(yàn)結(jié)果
圖7為要發(fā)送的數(shù)據(jù)1。第1個(gè)字節(jié)代表0x48的地址(前7位表示地址,第8位表示讀寫位,低電平表示寫操作),后邊為配置寄存器的地址0x01,配置寄存器的控制字為0x40、0xe3(表示單端輸入,轉(zhuǎn)換模式為連續(xù)模式)。
圖7 數(shù)據(jù)1寫控制字
圖8為發(fā)送的數(shù)據(jù)2。第1個(gè)字節(jié)代表0x48的地址(前7位表示地址,第8位表示讀寫位,低電平表示寫操作),后面為轉(zhuǎn)換寄存器的地址0x00。
圖8 數(shù)據(jù)2寫控制字
從圖7、圖8中可以看出,SLC在高電平的時(shí)候,SDA發(fā)生了一個(gè)電平變化,即高電平變換成低電平,此為開始條件。同時(shí),SLC在高電平的時(shí)候,SDA從低電平變換成高電平,此為停止條件。在開始條件和停止條件數(shù)據(jù)傳輸?shù)倪^程中,SDA在SCL的低電平范圍內(nèi)變化。同時(shí),可以發(fā)現(xiàn),主機(jī)在傳輸完1個(gè)字節(jié)后,從機(jī)會(huì)發(fā)出一個(gè)應(yīng)答信號(hào)ACK,將SDA信號(hào)拉低,變成低電平,其實(shí)這表示從機(jī)做了應(yīng)答,可以繼續(xù)發(fā)送數(shù)據(jù)。最后可以看到傳輸完規(guī)定的字節(jié)后,會(huì)產(chǎn)生一個(gè)停止條件。 轉(zhuǎn)換寄存器的數(shù)字量略——編者注。
結(jié)語
本文利用TMS320F28335的外設(shè)I2C模塊與ADS1115通信實(shí)現(xiàn)了單路模擬信號(hào)的采集,并延伸到4路模擬信號(hào)的循環(huán)采集,且最終獲得的實(shí)驗(yàn)結(jié)果在允許的范圍內(nèi)。同時(shí),根據(jù)實(shí)驗(yàn)結(jié)果驗(yàn)證了數(shù)據(jù)傳輸?shù)母袷脚cI2C總線的協(xié)議是一致的。
參考文獻(xiàn)
[1] TI.TMS320F28335,TMS320F28334,TMS320 F28332,TMS320F28235,TMS320F28234,TMS 320F28232數(shù)字信號(hào)控制器 (DSC) [EB/OL].[2015-08].http://www.ti.com.cn/cn/lit/ds/symlink/tms320f28332.pdf?keyMatch=tms 320f28335 &tisearch=Search-CN-TechDocs.
[2] TI.TMS320x2833x, 2823x Inter-Integrated Circuit(I2C) Module [EB/OL].[2015-08].http://www.ti.com.cn/cn/lit/ug/sprug03b/sprug03b.pdf.
[3] TI.具有內(nèi)部基準(zhǔn)的超小型、低功耗、16位A/D轉(zhuǎn)換器ADS1115 [EB/OL].[2015-08].http://www.ti.com.cn/cn/lit/ds/symlink/ads 1115.pdf?keyMatch=ADS1115&tisearch=Search-CN-TechDocs.
[4] 劉陵順,高艷麗,張樹團(tuán),等.TMS320F28335 DSP 原理及開發(fā)編程[M] .北京:北京航空航天大學(xué)出版社,2011:408-419.
姬占濤(研究生),研究方向?yàn)閿?shù)字PWM控制的DC/DC變換器;毛惠豐(講師),研究方向?yàn)楝F(xiàn)代電力電子變換與電力傳動(dòng)技術(shù)、伺服系統(tǒng)。
ST加快物聯(lián)網(wǎng)產(chǎn)品創(chuàng)新速度
意法半導(dǎo)體(STMicroelectronics,簡(jiǎn)稱ST)宣布,旗下STM32系列ARM Cortex-M微控制器及市場(chǎng)領(lǐng)先的傳感器、通信接口和電源管理產(chǎn)品支持ARM mbed IoT產(chǎn)品平臺(tái)及最新版ARM mbed操作系統(tǒng)。STM32微控制器的開放式開發(fā)環(huán)境已十分強(qiáng)大,現(xiàn)在mbed平臺(tái)又為該環(huán)境帶來一個(gè)標(biāo)準(zhǔn)的操作系統(tǒng)、云端服務(wù)及協(xié)助創(chuàng)新企業(yè)研發(fā)新物聯(lián)網(wǎng)應(yīng)用的開發(fā)工具。
作為有能力提供物聯(lián)網(wǎng)應(yīng)用全部關(guān)鍵產(chǎn)品技術(shù)的半導(dǎo)體公司,意法半導(dǎo)體的產(chǎn)品技術(shù)包括:STM32系列微控制器擁有靈活廣泛的運(yùn)算能力,從超低功耗性能到超高運(yùn)算性能一應(yīng)俱全;提供運(yùn)動(dòng)、聲音、近距離或環(huán)境檢測(cè)等各類傳感器;可安全連接其他智能裝置,包括Bluetooth Smart、低于1 GHz的低功耗SPIRIT1及其他射頻(RF)技術(shù);各類電源管理芯片不但可最大限度延長(zhǎng)電池續(xù)航時(shí)間,還可利用新能源再生技術(shù);縮短模擬電路與數(shù)字電路之間的信號(hào)處理技術(shù)落差。
Communication of I2C Bus and ADS1115 Based on TMS320F28335※
Ji Zhantao,Mao Huifeng
(School of Electronic Information,Xi’an Polytechnic University,Xi’an 710048,China)
Abstract:This paper briefly introduces the communication protocol of TMS320F28335 peripheral I2C bus.The principle of the ADS1115 chip and the TMS320F28335 peripheral I2C bus with ADS1115 communication driver are described in detail.The design uses ADS1115 to achieve a cycle collection of 4 analog quantity.The experiment results show that the data transmission format is consistent with the agreement within the range allowed.
Key words:TMS320F28335;ADS1115;I2C bus
收稿日期:(責(zé)任編輯:楊迪娜2015-08-20)
中圖分類號(hào):TP29
文獻(xiàn)標(biāo)識(shí)碼:A