用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

便携式、低功耗体电信号采集存储系统研究

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-11 00:03:57
8个扇区,理论上可以寻址136GB的容量。下面给出物理寻址方式与逻辑寻址方式的对应关系。设NS为每磁道扇区数,NH为磁头数,C、H、S分别表示磁盘的柱面、磁头和扇区编号,LBA表示逻辑扇区号,div为整除计算,mod为求余计算,则:LBA=NH×NS×C+NC×H+S-1;C=(LBA div NS)div NH;H=(LBA div NS)mod NH;S=(LBA mod NS)+1。

CF卡为50针接口。其中重要的信号线16根数据线、11根地址线(在TureIDE模式下仅用3根地址线)、2根寄存器组选择信号线(CS0、CS1)、数据的读写线(IORD、IOWR)、1根中断信号请求线(INTRQ和1根复位线(RESET)。

3 CF卡的软件接口和命令

CF内部控制器有多个寄存器,通过这些寄存器可以对CF卡内部的存储空间进行控制和访问。下面就实IDE模式下的寄存器组为例进行说明。

在实IDE模式下,寄存器组通过寄存器组选择信号线(CS0、CS1)和低三位地址线(A0、A1、A2)进行访问,具体功能和地址分配如表2所列。

表2 CF卡实IDE模式下寄存器组具体功能和地址分配表

CS1CS0A2A1A0IORD=0IOWR=0位数/位
10000数据寄存器数据寄存器16
10001错误寄存器特征寄存器8
10010扇区数寄存器扇区数寄存器8
10011扇区号寄存器扇区号寄存器8
10100柱面号寄存器(低字节)柱面号寄存器(低字节)8
10101柱面号寄存器(高字节)柱面号寄存器(高字节)8
10110驱动器选择/磁头寄存器驱动器选择/磁头寄存器8
10111状态寄存器命令寄存器8
01110可选状态寄存器设备控制寄存器8
01111驱动器地址寄存器保留8

CF-ATA的基本命令有30余条,主要有数据的传输命令,包括扇区、缓冲区的读写等命令;CF卡的定义命令,包括磁道格式化、设置特征参数等命令;电源管理命令,包括检查电源管理模式、进入睡眠省电模式等命令;安全及权限的设置命令,包括CF卡安全密码的设置、安全权限的锁定与解锁等命令。每执行一条命令都要向CF-ATA的寄存器组写入参数和命令。下面以CF卡读取一扇区数据为例,说明CF-ATA命令的执行过程。

①读取CF卡状态寄存器,检测并等待当前CF卡是否空闲,若空闲,向下执行。

②填写地址寄存器块。地址寄存器块包括扇区数寄存器、扇区号寄存器、柱面号寄存器(低和高字节)、驱动器选择/磁头寄存器,选择访问的扇区地址。

③写命令寄存器,将读扇区命令写入命令寄存器(20h或21h)。

④读取CF卡状态寄存器,检测并等待CF卡的数据请求。有数据请求表示命令已被接收并处理,若长时间没有数据请求,需要进行超时处理。

⑤读数据寄存器。由于数据寄存器端口为16位,因此,读一个扇区512字节的数据仅需要连续执行256次访问数据寄存器的操作。要注意的是,在CF卡中存储的数据是低字节在前,高字节在后。在数据寄存器中,会产生高低字节颠倒的问题。

⑥检测执行结果。在执行命令后,需要查看状态寄存器的D0位。若D0位为0,则表示命令执行成功,否则表示出错。其相应的错误信息在错误寄存器中可以查出。

4 TMS320LF2407与CF卡的电路连接

TMS320LF2407是TI公司C24X系列中功能最完整、资源最丰富的控制芯片DSP,提供了多种接口的最优数字控制,有最高的代码效率。C24X是其C2000系列新代16位定点处理器产生,内核CPU为低功耗、高性能TMS320TM构架的增强设计;最优化控制多个外设;有2个事件管理模块,用于数据控制、电源转换,产生多种波形PWM;同步16通道高性能10位ADC,转换时间为500ns;支持串行异步通信接口(SCI)、串行同步外设接口(SPI)、CAN总线2.0标准接口。TMS320LF2407总寻址范围192K字,其中包括64K字程序空间,64K字数据空间,64K字I/O空间,片内程序空间集成32K字Flash,数据空间集成2.5K字RAM,包括544字DARAM(其中256字与程序空间共享),2K字SARAM。图1给出了TMS320LF2401与CF卡的一种电路连接方框图。CF卡占用TMS320LF2407的I/O空间地址,不需要任何中间接口转换芯片。

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 IN

上一页  [1] [2] [3]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:30,437.50000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号