新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DSP虛擬I2C總線軟件包的設計及應用實例

        DSP虛擬I2C總線軟件包的設計及應用實例

        作者: 時間:2012-04-17 來源:網絡 收藏

        引言

        數字信號處理器()在各領域中的應用已日趨廣泛,其中TI(Texas Instrument)公司的TMS320系列芯片占據了主導地位。(簡稱F206)由于具有片內32K字的Flash,支持JTAG掃描端口的仿真調試,并支持程序的串行下載,便于開發設計及產品的軟件升級,因而在中高檔儀器開發中受到青睞。

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

        1 軟件包的設計

        根據文獻中所提到的最佳包容性設計、后歸一化設計、前歸一化設計原則,軟件包進行了如下定義。

        (1)適用范圍

        ① 適用主發送和主接收方式。I2C總線有4種工作方式:主發送、主接收、從發送、從接收。因實際DSP多工作于I2C總線的主方式,因而軟件包設計為主方式。

        ② 適用TMS320C2XX系列與I2C總線外圍器件的接口,支持對外圍器件N字節的讀寫,通信方式為對虛擬節點尋址后點對點的讀寫。

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

        (2)軟件包結構設計

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

        ① 軟件包組成。為模擬I2C總線的操作時序,軟件包中包括了2個宏定義和12個子函數。

        (a)時序模擬子程序

        Sendb--發送起始標志,啟動I2C總線;senda--發送確認標志;

        Sendna--發送非確認標志;Sende--發送結束標志。

        (b)操作模擬子程序

        geta--接收確認標志;sendd--發送8位數據;

        getd--接收1個字節數據。

        (c)數據讀寫子程序

        wrnbyte--寫入N字節;rdnbyte--讀取N字節。

        (d)其它宏及子函數

        subsendd--根據標志位C設置模擬數據口線的狀態;toggleclk--切換模擬時鐘口線狀態;

        Xdelay--延時子程序;Sdainm--將模擬數據口線A配置為輸入口線;

        sdaoutm--將模擬數據口線配置為輸出。

        因DSP的工作頻率一般遠高于I2C總線的操作頻率,因而這里需專用的延時子程序降低模擬時鐘口線頻率。本文所給出的源程序為F206采用40 MHz晶振時的情況,用戶使用時可隨實際情況調整延時時間。

        ② 軟件包符號定義。軟件包中包括如下符號定義:

        VSDA、VSCL--分別定義了模擬數據口線和模擬時鐘口線對應的屏蔽位,因DSP中對通用I/O口線的操作不能通過位操作來實現,因而僅能屏蔽位來定義,如采用IO3模擬數據線、IO2模擬時鐘線,則可定義IO3為08h、IO2為04h;

        RAM0--為數據暫存用的臨時存儲單元;

        RIO--為用于保存I/O口線當前狀態的存儲單元;

        SLA--用于保存總線上節點地址并確定傳輸方向的存儲單元;

        NUMBYTE--待發送或接收的字節數存儲單元;

        MTD--發送數據緩沖區;

        MRD--接收數據緩沖區。

        以上符號中RAM0、RIO、SLA、NUMBYTE為頁內地址,與當前的頁指針DP內容設置有關;MTD、MRD為絕對地址,與DP內容無關。

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

        ④ 應用接口。軟件包將wrnbyte、rdnbyte作為唯一的出口接口,用戶僅需正確設置對應儲存單元的內容,調用相應子函數即可:

        splk #SLAR/ SLAW,SLA;寫入傳輸節點地址及傳輸方向

        splk #N,NUMBYTE ;寫入待傳輸字節數

        ;若輸出,設置輸出緩沖區內容

        call wrnbyte/rdnbyte


        上一頁 1 2 3 下一頁

        關鍵詞: DSP 虛擬I2C TMS320F206

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 固安县| 满洲里市| 巩留县| 禹城市| 平湖市| 龙口市| 清水河县| 潮安县| 渝中区| 凤台县| 惠水县| 广水市| 太白县| 西青区| 定南县| 毕节市| 乌拉特前旗| 苍南县| 益阳市| 自治县| 瓮安县| 静海县| 长白| 绥江县| 旬邑县| 南木林县| 伊春市| 鄂温| 耒阳市| 龙南县| 尚义县| 中宁县| 淮阳县| 沁水县| 萨迦县| 额尔古纳市| 崇信县| 汝城县| 精河县| 阿尔山市| 铜梁县|