<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP虛擬I2C總線(xiàn)軟件包的設(shè)計(jì)及應(yīng)用實(shí)例

          基于DSP虛擬I2C總線(xiàn)軟件包的設(shè)計(jì)及應(yīng)用實(shí)例

          作者: 時(shí)間:2012-04-11 來(lái)源:網(wǎng)絡(luò) 收藏


          數(shù)字信號(hào)處理器()在各領(lǐng)域中的應(yīng)用已日趨廣泛,其中TI(Texas Instrument)公司的TMS320系列芯片占據(jù)了主導(dǎo)地位。(簡(jiǎn)稱(chēng)F206)由于具有片內(nèi)32K字的Flash,支持JTAG掃描端口的仿真調(diào)試,并支持程序的串行下載,便于開(kāi)發(fā)設(shè)計(jì)及產(chǎn)品的軟件升級(jí),因而在中高檔儀器開(kāi)發(fā)中受到青睞。

          本文引用地址:http://www.ex-cimer.com/article/257585.htm

          的處理速度雖然較高,但直接支持的I/O口線(xiàn)較少,控制能力相對(duì)較弱,因而與外部器件接口采用串行方式較為適合。常用的串行接口和串行總線(xiàn)有UART、總線(xiàn),由于總線(xiàn)提供了較完善的總線(xiàn)協(xié)議,且接口電路簡(jiǎn)單,因而得到廣泛的應(yīng)用。目前,已有很多外圍器件支持接口,但多數(shù)MCU并不直接支持I2C總線(xiàn),因而采用I/O口線(xiàn)模擬I2C的方式成為一種通用解決方案。但由于I2C總線(xiàn)協(xié)議的復(fù)雜性及操作管理的特殊性,仍給此類(lèi)方式的開(kāi)發(fā)造成了較大不便。好在文獻(xiàn)中提出了一種按平臺(tái)模式設(shè)計(jì)的、適用于80C51的虛擬I2C總線(xiàn)軟件包,大大簡(jiǎn)化了80C51的I2C接口程序設(shè)計(jì),使用戶(hù)無(wú)需了解I2C總線(xiàn)協(xié)議的細(xì)節(jié),即可實(shí)現(xiàn)相應(yīng)的接口。文獻(xiàn)中也給出了一種用于MSP430單片機(jī)的軟件包。由于尚無(wú)此類(lèi)軟件包,為簡(jiǎn)化DSP的此類(lèi)I2C接口程序設(shè)計(jì),本文參照文獻(xiàn)中的設(shè)計(jì)原則,設(shè)計(jì)了一種適用于TMS320C2XX系列DSP開(kāi)發(fā)的軟件包。

          1 虛擬I2C軟件包的設(shè)計(jì)

          根據(jù)文獻(xiàn)中所提到的最佳包容性設(shè)計(jì)、后歸一化設(shè)計(jì)、前歸一化設(shè)計(jì)原則,軟件包進(jìn)行了如下定義。

          (1)適用范圍

          ① 適用主發(fā)送和主接收方式。I2C總線(xiàn)有4種工作方式:主發(fā)送、主接收、從發(fā)送、從接收。因?qū)嶋HDSP多工作于I2C總線(xiàn)的主方式,因而軟件包設(shè)計(jì)為主方式。

          ② 適用TMS320C2XX系列與I2C總線(xiàn)外圍器件的接口,支持對(duì)外圍器件N字節(jié)的讀寫(xiě),通信方式為對(duì)虛擬節(jié)點(diǎn)尋址后點(diǎn)對(duì)點(diǎn)的讀寫(xiě)。

          ③ 模擬I/O口線(xiàn)可選擇4根通用I/O口線(xiàn)(I/O0~ I/O4)中的任意兩根。

          (2)軟件包結(jié)構(gòu)設(shè)計(jì)

          TMS320C2XX系列產(chǎn)品,基本包括4根通用I/O口線(xiàn)I/O0~I/O4(由于XF僅能作為輸入口線(xiàn),BIO僅能作為輸出口線(xiàn),因而暫不考慮)。它們的輸入輸出方向由ASPCR的低4位來(lái)設(shè)定,相應(yīng)口線(xiàn)狀態(tài)的設(shè)定或讀取由IOSR寄存器控制。但此處DSP與80C51有所不同,口線(xiàn)的輸入輸出狀態(tài)不是自動(dòng)切換的,且ASPCR、IOSR寄存器都不支持位尋址方式,因而在進(jìn)行I2C總線(xiàn)工作方式模擬時(shí)較為繁瑣。為避免所用寄存器其它狀態(tài)位的改變,需通過(guò)較多的與、或操作來(lái)改變指定I/O口線(xiàn)的狀態(tài),因而本軟件包與80C51的虛擬I2C軟件包結(jié)構(gòu)稍有不同。當(dāng)然,這些均在軟件包內(nèi)部完成,使用者不必了解具體細(xì)節(jié),用戶(hù)接口同樣簡(jiǎn)單易用。

          ① 軟件包組成。為模擬I2C總線(xiàn)的操作時(shí)序,軟件包中包括了2個(gè)宏定義和12個(gè)子函數(shù)。

          (a)時(shí)序模擬子程序

          Sendb--發(fā)送起始標(biāo)志,啟動(dòng)I2C總線(xiàn);senda--發(fā)送確認(rèn)標(biāo)志;

          Sendna--發(fā)送非確認(rèn)標(biāo)志;Sende--發(fā)送結(jié)束標(biāo)志。

          (b)操作模擬子程序

          geta--接收確認(rèn)標(biāo)志;sendd--發(fā)送8位數(shù)據(jù);

          getd--接收1個(gè)字節(jié)數(shù)據(jù)。

          (c)數(shù)據(jù)讀寫(xiě)子程序

          wrnbyte--寫(xiě)入N字節(jié);rdnbyte--讀取N字節(jié)。

          (d)其它宏及子函數(shù)

          subsendd--根據(jù)標(biāo)志位C設(shè)置模擬數(shù)據(jù)口線(xiàn)的狀態(tài);toggleclk--切換模擬時(shí)鐘口線(xiàn)狀態(tài);

          Xdelay--延時(shí)子程序;Sdainm--將模擬數(shù)據(jù)口線(xiàn)A配置為輸入口線(xiàn);

          sdaoutm--將模擬數(shù)據(jù)口線(xiàn)配置為輸出。

          因DSP的工作頻率一般遠(yuǎn)高于I2C總線(xiàn)的操作頻率,因而這里需專(zhuān)用的延時(shí)子程序降低模擬時(shí)鐘口線(xiàn)頻率。本文所給出的源程序?yàn)镕206采用40 MHz晶振時(shí)的情況,用戶(hù)使用時(shí)可隨實(shí)際情況調(diào)整延時(shí)時(shí)間。

          ② 軟件包符號(hào)定義。軟件包中包括如下符號(hào)定義:

          VSDA、VSCL--分別定義了模擬數(shù)據(jù)口線(xiàn)和模擬時(shí)鐘口線(xiàn)對(duì)應(yīng)的屏蔽位,因DSP中對(duì)通用I/O口線(xiàn)的操作不能通過(guò)位操作來(lái)實(shí)現(xiàn),因而僅能屏蔽位來(lái)定義,如采用IO3模擬數(shù)據(jù)線(xiàn)、IO2模擬時(shí)鐘線(xiàn),則可定義IO3為08h、IO2為04h;

          RAM0--為數(shù)據(jù)暫存用的臨時(shí)存儲(chǔ)單元;

          RIO--為用于保存I/O口線(xiàn)當(dāng)前狀態(tài)的存儲(chǔ)單元;

          SLA--用于保存總線(xiàn)上節(jié)點(diǎn)地址并確定傳輸方向的存儲(chǔ)單元;

          NUMBYTE--待發(fā)送或接收的字節(jié)數(shù)存儲(chǔ)單元;

          MTD--發(fā)送數(shù)據(jù)緩沖區(qū);

          MRD--接收數(shù)據(jù)緩沖區(qū)。

          以上符號(hào)中RAM0、RIO、SLA、NUMBYTE為頁(yè)內(nèi)地址,與當(dāng)前的頁(yè)指針DP內(nèi)容設(shè)置有關(guān);MTD、MRD為絕對(duì)地址,與DP內(nèi)容無(wú)關(guān)。

          ③ 資源占用。使用了輔助寄存器AR0、AR1、AR2、AR6、ACC、ASPCR、IOSR等資源。

          ④ 應(yīng)用接口。軟件包將wrnbyte、rdnbyte作為唯一的出口接口,用戶(hù)僅需正確設(shè)置對(duì)應(yīng)儲(chǔ)存單元的內(nèi)容,調(diào)用相應(yīng)子函數(shù)即可:

          splk #SLAR/ SLAW,SLA;寫(xiě)入傳輸節(jié)點(diǎn)地址及傳輸方向

          splk #N,NUMBYTE ;寫(xiě)入待傳輸字節(jié)數(shù)

          ;若輸出,設(shè)置輸出緩沖區(qū)內(nèi)容

          call wrnbyte/rdnbyte

          3 應(yīng)用實(shí)例

          3.1 器件相關(guān)功能簡(jiǎn)介

          X1203是帶時(shí)鐘/日歷電路和兩個(gè)鬧鐘(報(bào)警)的低功耗CMOS實(shí)時(shí)時(shí)鐘芯片。提供了雙埠時(shí)鐘和報(bào)警寄存器,在讀寫(xiě)操作期間也能精確工作。其工作電壓從2.5~6 V均可,工作電流小于1uA。時(shí)鐘使用低成本的32.768 kHz晶體輸入,以秒、分、時(shí)、日、星期、月和年為單位記錄時(shí)間,具有閏年自動(dòng)矯正功能,并對(duì)少于31天的月份自動(dòng)調(diào)整;可通過(guò)設(shè)置中斷標(biāo)志按指定時(shí)間激活中斷引腳,滿(mǎn)足大多數(shù)用戶(hù)對(duì)定時(shí)器編程的需要。該芯片引腳結(jié)構(gòu)如圖1所示(SOIC封裝)。

          其中SCL為時(shí)鐘輸入端,數(shù)據(jù)隨該時(shí)鐘信號(hào)同步輸入器件或從器件輸出。此引腳上的輸入緩沖器始終激活。SDA端為雙向引腳,用于串行數(shù)據(jù)的輸入輸出;具有漏極開(kāi)路,可與其它漏極開(kāi)路或集電極開(kāi)路輸出進(jìn)行線(xiàn)或;需上拉電阻,與SCL引腳配合,可實(shí)現(xiàn)400 kHz的2線(xiàn)I2C接口。VBack為備用電源輸入端,用于VCC出現(xiàn)故障時(shí)向器件供電。是中斷信號(hào)輸出端,可通過(guò)設(shè)置報(bào)警寄存器按指定時(shí)間在該端產(chǎn)生報(bào)警信號(hào);漏極開(kāi)路,低電平有效。X1、X2分別為反相放大器的輸入、輸出端;可在X1端接入32.768 kHz的方波基準(zhǔn),或在X1、X2端接入32.768 kHz的石英晶振,配置成片內(nèi)振蕩器,在初始上電后至少有一個(gè)字節(jié)寫(xiě)入RTC寄存器時(shí),時(shí)鐘才開(kāi)始計(jì)數(shù)。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: DSP I2C TMS320F206

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();