网站导航: 首页 > 设计参考 > 正文 文章搜索
ARM系统中DMA方式在数据采集中的应用[图]
 
文章编号:
081211155533
文章分类: 单片机 ARM
点 击:
...
关 键 词: DMA,数据采集,s3c2410
文章来源:
网络,作者:龙再川 赵凯生
摘 要:
本文以三星公司的S3C2410为例,介绍了其内部DMA控制器的特点和使用方法.以S3C2410和FPGA为核心结合DMA技术设计了CCD相机采集系统,并且给出Linux操作系统下DMA设备驱动程序的设计方法...

1  引言
    ARM作为一种16/32位高性能、低成本、低功耗的嵌入式RISC微处理器。普遍应用于工业控制、消费类电子产品、通信系统、无线系统等产品。大多数ARM微控制器都集成了DMA控制器。且直接内存存取(DMA)作为一种独立于CPU的后台批量数据传输技术,以其快速、高效的特点在数据采集领域得到了广泛的应用。本文以三星公司的S3C2410为例,介绍了其内部DMA控制器的特点和使用方法.以S3C2410和FPGA为核心结合DMA技术设计了CCD相机采集系统,并且给出Linux操作系统下DMA设备驱动程序的设计方法。

2 DMA工作过程简介
    S3C2410是基于ARM920T内核的RISC微处理器.主频可达203 MHz,适用于信息家电、手持设备、移动终端等领域。S3C2410可提供4个DMA通道.用于系统总线内部或与外围总线之间的数据交换。现以外部DMA请求为例简要介绍DMA的工作过程。图1所示为DMA基本工作时序。
 
图1 DMA基本工作时序图
    当需要进行DMA操作时,外部DMA请求引脚XnXDREQ置为低电平。此时DMA控制器向CPU发出占用总线的请求,当总线请求成功后,XnXDACK引脚变为低电平,表示CPU已经将总线使用权交给DMA控制器,可以进行数据传输。当数据传输完成后应答信号XnXDACK置为高电平,通知CPU完成一次DMA操作。
    S3C2410提供了3种不同的DMA操作模式,分别是单服务命令模式、单服务握手模式和全服务握手模式。在利用DMA进行数据传输前必须对其相关寄存器进行设置。主要有:源地址寄存器、目的地址寄存器和各自的控制寄存器,以及配置DMA模式的控制寄存器等。

3 采集系统硬件设计
    根据DMA的特点,设计了基于ARM和FPGA的CCD相机采集系统。系统结构如图2所示。
 
    FPGA选用Altera公司的Cyclone系列器件EP1C6T144C8,可为CCD相机提供工作所需的驱动时序.同时接收经模数转换的CCD输出图像数据。S3C2410通过DMA方式从FPGA内部采集数据,通过数据线、DMA信号线、片选信号和输出时钟线与FPGA相连。
    这里主要介绍DMA方式的数据采集,FPGA内部的CCD驱动逻辑暂不介绍。FPGA与ARM的接口逻辑电路如图3所示。
 
    FPGA内部采用异步FIFO解决CCD输出数据频率和S3C2410采集频率不匹配的问题,写时钟由CCD输出位同步信号提供,读时钟由S3C2410的时钟输出引脚CLKOUT0提供。CLKOUT0根据ARM内部寄存器的设置可以输出不同的时钟频率。FIFO输出数据经过以nGCS4为选通信号的BUFFER后接到ARM的数据总线上。nGCS4是S3C2410存储空间中BNAK4的片选信号,当S3C2410对地址范围
0x20000000~0x28000000的存储空间进行读写操作时,BANK4为低电平,其余时间均为高电平.用它作为BUFFER的选通信号能有效地避免数据总线的污染。
    FIFO的写请求信号由S3C2410与FIFO的满状态共同控制。当ARM发出START信号并且FIFO未满时,写请求信号为高电平。FIFO在写时钟的控制下写入数据。当START信号撤销或者FIFO满时,写请求信号变为低电平,停止写操作。
    FIFO的读操作与ARM的DMA操作配合进行。系统采用单服务命令模式的DMA操作,每次传输一个字节数据位。当DREQ0信号变为低电平时DMA操作开始,每次传输一个字节后产生一个DACK0应答信号,而且只要DREQ0为低电平DMA操作就继续进行,直到DMA控制寄存器中的计数器为0.产生DMA中断。根据上述时序特点,将FIFO的空信号作为DMA的请求信号DREQ0.当CCD输出的数据写入FIFO中时,空信号跳变为低电平启动DMA操作,同时以DACK0信号作为FIFO的读请求。每一次DMA传输完成后应答信号使FIFO的读指针移动一位,以实现数据的快速准确采集。

 
相关文章:
s3c2410 Timer工作原理[图]
虚拟SPI时序在TC77与S3C2410通信中的应用[图]
s3c2410 MMU(存储器管理单元)讲解[图]
s3c2410 CACHES,WRITE BUFFER讲解[图]
S3C2410中的脉宽调制定时器(PWM)
S3C2410 中断程序的实现
s3c2410 watchdog详解
s3c2410 中断异常处理[图]
基于ARM9芯片S3C2410a的GPRS数据终端设计
AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现[图]
基于s3c2410的ARMer9开发平台的使用
ARM S3C2410硬件手册重点
基于ARM S3C2410与TMS320C6416的接口设计[图]
S3C2410上Jffs2的移植
ARM S3C2410驱动TFT-LCD的研究[图]
MINIGUI在S3C2410开发板的移植
mplayer在S3C2410上的移植
在S3C2410上移植yaffs2文件系统
S3C2410 bootloader(vivi)阅读笔记
s3c2410 LCD图片显示
S3C2410 LCD 驱动程序移植及GUI程序编写[图]
S3C2410X开发总结及心得
U-Boot在S3C2410开发板上的移植
S3C2410初始化
S3C2410通过IIS总线与音频芯片UDA1380进行通信
在S3C2410上移植bluetooth(蓝牙)
S3c2410软件调试总结
S3C2410上触摸屏的应用实例
S3c2410的触摸屏及模数转换
S3C2410的快速启动技术
基于嵌入式linux和s3c2410平台的视频采集
S3c2410 LCD驱动学习心得
s3c2410移植MPlayer到linux2.6

12 下一页
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4