技术
`
2009/11/30 13:06
振动信号采集系统中高速缓存的实现
0
0

(三)DMA控制器和接口电路的初始化程序[2,4]

为了使DMA过程能正确进行,必须使用程序对DMA控制器和接口电路进行初始化,初始化包括下列设置:

1.设置DMAC的字节计数器初值,以决定数据块的长度。

2.设置DMAC的地址寄存器初值,以确定数据传输所用的存储区首地址。

3.设置DMAC的控制寄存器,指出数据传送方向、是否进行块传输,并启动DMA操作。

4.设置接口电路的控制寄存器,指出数据传输方向,并启动I/O操作。

设:(INT-interface接口,CON-control register控制寄存器,“输入”指I/O存储器,“输出”指存储器I/O)

接口状态寄存器地址INTSTAT, bit2=1---I/O设备忙

接口控制寄存器地址INTCON, bit0=1为输入,bit0=0为输出

bit2=1---启动I/O操作

DMAC控制寄存器地址DMACON

bit0=1为输入,bit0=0为输出

bit3=1,可接收DMA请求

bit6=0为字节传输模式,bit6=1为块传输模式

DMAC字节计数器地址BYTE-REG

DMAC地址寄存器地址ADD-REG

I/O的数据块传输初始化程序如下:

IDLE:  IN     AL , INTSTAT ;读接口状态

TEST  AL , 04H;   是否忙(bit 2)

JNZ   IDLE;  bit2=1,忙

MOV   AX, COUNT;  块传输字节数

OUT    BYTE_REG, AX

MOV    AL, DMAC;  DMAC原控制字

OR     AL,  49H;   块传输允许接收DMA请求,输入

OUT    DMACOM,  AL

MOV   AL,  INTC;  接口电路的原控制字

OR     AL,  05H;   输入,启动操作

OUT    INTCOM,   AL

程序对接口电路和DMAC初始化后,当接口准备就绪,向DMAC请求传输,DMAC再向CPU请求总线。当DMAC获得总线控制权后,按初始化程序规定的方式执行传输。传输过程本身不需CPU干预。在DMAC传输完成后,发出结束信号EOP,CPU可以查询EOP信号,以便进行后续数据处理。或者把EOP信号作为中断请求信号,CPU在中断处理程序中进行后续数据处理。

(四)DMA控制器的工作特点[1]

1.DMAC是一个接口电路,CPU可以通过其端口地址对DMAC进行读/写操作,以便对DMAC进行初始化或查询其状态。但它与一般的接口电路有显著的不同,DMAC可以获得系统总线控制权,当其获得系统总线控制权后,能提供一系列控制信号,像CPU一样操纵外设和内存之间的数据传输。即,DMAC有两种工作状态:

从模块状态(或称被动态):作为接口电路,受CPU控制

主模块状态(或称主动态):控制系统总线

2.DMAC控制内存和外设的数据传输方式,与CPU的方式完全不同。

CPU:

①.通过执行指令传输数据。

②.被传输的数据必须通过CPU累加器(AL/AX)中转。

DMAC:

①.通过硬件逻辑电路,用固定的顺序地址信号和读/写信号进行数据传输。

②.被传输的数据不送入DMAC内部中转,从“源”读得的数据保存在数据总线上,然后立即开始写操作,将数据写入“目的”。

正是由于DMAC的上述数据传输特点,使DMA传输可以达到很高的速度,这也是DMA(Direct Memory Access直接内存访问)的含义。

四、结论

实验证明,用DMA方式进行数据传输,可以把有限的单片机资源从烦琐的数据传输中解放出来,使之在系统的其他方面发挥更大的功能。 而用INTEL 8237设计的DMA控制器和外设的连接电路简单,成本低廉,具有很高的实用价值。本文所提出的DMA模块及其接口只要稍作修改,就可以在数据采集场合应用。

 

免责声明:本文仅代表作者个人观点,与C114通信网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

给作者点赞
0 VS 0
写得不太好

C114简介     联系我们     网站地图

Copyright©1999-2025 c114 All Rights Reserved 沪ICP备12002291号-4

C114通信网版权所有 举报电话:021-54451141 用户注销