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