5 TI公司DSP汇编程序实例
考虑到TI公司的DSP各系列芯片汇编指令的兼容性例于跨平台移植和汇编语言代码的高效性,下面给出基于连接框图将CF卡中一扇区数据(512字节)读到TMS320LF2407片内RAM中汇编程序。READ_A_SECT:
W_CF_RDY: ;检测CF卡是否空闲
LDP #0h
IN CF_IN,CFCOM_STAT
;读状态寄存器
LALC CF_IN
AND #00FFh
XOR #0050h
BZ END_WAIT_RDY
B W_CF_RDY
END_WAIT_RDY:
SPLK #0000h,CF_OUT
OUT CF_OUT,CFERR_FEA
;写特片寄存器
SPLK #0001h,CF_OUT
OUT CF_OUT,CFSET_COU
;写扇区数寄存器
SAR AR3,CF_OUT
OUT CF_OUT,CFSEC_NO
;写扇区号寄存器
SAR AR4,CF_OUT
OUT CF_OUT,CFCYL_LOW
;写柱面号寄存器(低字节)
SAR AR5,CF_OUT
OUT CF_OUT,CFCYL_HIG
;写柱面号寄存器(高字节)
SAR AR6,CF_OUT
OUT CF_OUT,CF_CDH
;写驱动器选择/磁头寄存器
SPLK #0020h,CF_OUT
OUT CF_OUT,CFCOM_STAT
;写命令寄存器
W_CF_DRQ:;检测CF卡是否有数据请求
IN CF_IN,CFCOM_STAT
LACL CF_IN
AND #00FFh
XOR #0058h
BZ END_WAIT_DRQ
B W_CF_DRQ
END_WAIT_DRQ:
LAR AR2,#0FFh
;作256次循环读取一扇区数据(512字节)
MAR *,AR1
INLOOP:IN *+,CFDATA,AR2
;循环读取数据寄存器
BANZ INLOOP,*-,AR1
RET
程序说明:CFDATA为数据寄存器端口地址;CFCOM_STAT为状态/命令寄存器端口地址;CFERR_FEA为特征寄存器端口地址;CFSEC_COU为扇区数寄存器端口地址;CFSEC_NO为扇区号寄存器端口地址;CFCYL_LOW为柱面号寄存器(低字节)端口地址;CFCYL_HIG为柱面号寄存器(高字节)端口地址;AR1、AR3~AR6辅助寄存器为程序入口参数,其中AR1为RAM数据缓冲区的起始地址;AR3~AR6为CF卡各寄存器待赋的值;CF_IN和CF_OUT为变量。程序中没超时处理,在循环读取数据的过程中,最好禁用时间较长的中断。这是因为CF卡在15ms内没有接收到命令就会进入休眠(sleep),因此不论是读还是写扇区,在命令出后15ms内应将数据取出或填充上,否则会出错。
结语
采用TI公司的C24X、C28X系列DSP与CF卡搭建体电信号采集的硬件平台,仅使用很少的外部逻辑。整个系统可以采用低电压3.3V单一电压供电,供电电路非常简单。C24X、C28X系列DSP芯片对片内的各个模块独立供电,工作时可以屏蔽掉没有用到的模块,比如SCI、SPI、CAN总线接口等模块,减少系统的功耗。在系统软件实现上,可以采用交替式双缓存机制,将采集到的数据先存入数据缓冲区中(1扇区占512字节为易)。当数据缓冲区写满时发出溢出中断,对CF卡进行突发写操作。写操作完毕可以发送命令,使CF卡立即进入休眠状态,将功耗降至最低。这样在数据采集系统工作的大部分时间,CF卡处于休眠状态,工作电流仅为600μA。
笔者TMS320LF2407与CF卡搭建建硬平台,进行16路体电信号采集,采集频率为150Hz,CF卡容量为256MB。经实际测试,系统的功耗小于0.3W,使用3~4节干电池或1~2手机锂电池供电,可以连续工作10~20小时以上。该系统适于脑电、心电等体电信号的采集与存储工作,具有低功耗、携带方便、长时间监护、性能价格比高等特点。
本文关键字:电信号 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术
上一篇:运用UML分析设计占先式实时内核