DSP虛擬I2C總線軟件包的設(shè)計(jì)
3.2 X1203的讀寫操作
這里僅給出F206對(duì)X1203進(jìn)行讀寫的基本流程,如圖3、圖4所示,分別為對(duì)時(shí)鐘芯片的讀、寫過(guò)程。其中進(jìn)行寄存器寫時(shí),須注意SR寄存器中WEL和RWEL的設(shè)置是否正確,即首先設(shè)置WEL有效,而后將WEL、RWEL都置1,否則數(shù)據(jù)將不能正確寫入。在寫結(jié)束后,應(yīng)將WEL、RWEL置為無(wú)效,以免產(chǎn)生誤操作。
此外還須指出,在系統(tǒng)首次上電后(VBack和VCC都失效后),至少有一字節(jié)寫入RTC寄存器時(shí),系統(tǒng)才開(kāi)始工作。在實(shí)際使用中,應(yīng)首先判斷SR中的RTCF位是否為1,若是,表明系統(tǒng)為首次使用或VBack和VCC都已失效,須對(duì)X1203至少進(jìn)行一次寫入操作,使其正常計(jì)數(shù)。
時(shí)鐘芯片讀寫子程序清單如下:
.copy init.h
.copy vector.h
;以下為I2C軟件包中的符號(hào)定義
VSDA .set 0008h
VSCL .set 0004h
RAM0 .set 60h
SLA .set 61h
RIO .set 62h
NUMBYTE .set 63h
MTD .set 0100h
MRD .set 0120h
setc intm ;關(guān)中斷
clrc cnf ;映射塊 B0 到數(shù)據(jù)存儲(chǔ)區(qū)
ldp #0h ;頁(yè)指針設(shè)置為0
clrc sxm
;數(shù)據(jù)寫入使能程序段
splk #0deh,SLA
splk #3,NUMBYTE
lar ar0,#MTD
mar *,ar0
splk #0,*+
splk #03fh,*+
splk #02h,*+
call wrnbyte
splk #0deh,SLA
splk #3,NUMBYTE
lar ar0,#MTD
mar *,ar0
splk #0,*+
splk #03fh,*+
splk #06h,*+
call wrnbyte
;寫入數(shù)據(jù)程序段
splk #0deh,SLA
splk #9,NUMBYTE
lar ar0,#MTD
mar *,ar0
splk #0,*+
splk #030h,*+
splk #01h,*+
splk #02h,*+
splk #03h,*+
splk #03h,*+
splk #02h,*+
splk #01h,*+
splk #21h,*+
call wrnbyte
;禁止數(shù)據(jù)寫入程序段
splk #0deh,SLA
splk #3,NUMBYTE
lar ar0,#MTD
mar *,ar0
splk #0,*+
splk #03fh,*+
splk #0h,*+
call wrnbyte
;數(shù)據(jù)讀取程序段
splk #0deh,SLA
splk #2,NUMBYTE
lar ar0,#MTD
mar *,ar0
splk #0,*+
splk #030h,*+
call wrnbyte
splk #0dfh,SLA
splk #7,NUMBYTE
call rdnbyte
wait: b wait
結(jié)束語(yǔ)
I2C總線應(yīng)用已日益廣泛,而其協(xié)議的復(fù)雜性和操作的特殊性又限制了推廣速度。本文介紹的一種基于DSP的虛擬I2C總線軟件包,簡(jiǎn)化了TMS320C2XX與I2C器件間接口程序設(shè)計(jì),用戶無(wú)需了解I2C總線協(xié)議的細(xì)節(jié),僅需通過(guò)唯一的接口界面wrnbyte/ rdnbyte即可實(shí)現(xiàn)相應(yīng)的接口。本文還給出了一個(gè)TMS320F206與時(shí)鐘芯片X1203間的接口實(shí)例,介紹了軟件包的使用方法,希望能供讀者參考。
評(píng)論