ARM入门笔记(7)

发布时间:2010-8-26 17:28    发布者:绝对好文
关键词: ARM入门笔记
串口DMA控制实验

一.背景

DMA是Direct Memory Access的缩写,即“存储器直接访问”。它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,即不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行的。CPU除了在数据传输开始和结束时作一点处理外,在传输过程中CPU可以进行其它的工作。这样,在大部分时间里,CPU和输入输出都处在并行操作。因此,使整个计算机系统的效率大大提高。

AT91SAM7S64串口外围DAM控制器的工作过程:将要发送的数据缓冲区的起始地址赋给串口DMA控制器的发送指针寄存器,再将要发送的字节个数赋给PDC的发送计数寄存器,然后无须 CPU的干预,DMA自动起动串口发送操作,发送完这些数据后又自动停止;同理,只要将接收数据缓冲区的起始地址赋给串口DMA控制器的接收指针寄存器,再将要接收的字节个数赋给PCD的接收计数值,DMA将自动启动串口接收数据,接收完这些数据后,再通知CPU。

二.实验目的

验证上述所描述的串口DMA控制器的工作过程,可用串口调试软件进行验证。

三.实验程序和参数设置

1>连接器选项设置和启动代码都与上个实验相同
2>C语言的代码

#i nclude "AT91SAM7S64.h"
#i nclude "Board.h"
unsigned char RxBuff[256],TxBuff[256];
int main(void)
{
unsigned int i;
*AT91C_CKGR_MOR = 0x701; //使能主振荡器和设置起振时间
*AT91C_PMC_MCKR = 0x01;//选择Mster Clock is main clock, divided by 0  
*AT91C_PMC_SCER = AT91C_CKGR_MOSCEN;//使能系统时钟寄存器的处理器时钟
*AT91C_PMC_PCER = AT91C_ID_US0; //使能USART0时钟
*AT91C_PIOA_PDR = US_RXD_PIN | US_TXD_PIN;//禁止该两个管脚的I/O口功能
*AT91C_PIOA_ASR= US_RXD_PIN | US_TXD_PIN;//将该两个I/O口分配给外围A  
*AT91C_US0_CR = 0x1ac;  //复位接收器和发送器,使能接收与发送,复位状态位
*AT91C_US1_MR =0x8c0;  //正常模式,时钟为MCK,8位长度,无校验,1位停止位,
*AT91C_US0_IDR  = 0xf3fff; //禁止所有UART相关的中断
*AT91C_US0_BRGR = 30;  //设置波特率为38400Hz,AT91C_US0_BRGR为CD值
*AT91C_US0_CR   = 0x50; //使能发送与接收
*AT91C_US0_PTCR = AT91C_PDC_TXTEN | AT91C_PDC_RXTEN;//使能US0的PDC 发送与接收
for (i = 0; i    //给发送缓冲区覆值
TxBuff = i;   
} //下面可用单步执行,来观察现象
*AT91C_US0_TPR = (unsigned int)TxBuff;//覆发送缓冲区起始地址
*AT91C_US0_TCR = 256;    //起动PDC发送256个字节
*AT91C_US0_RPR = (unsigned int)RxBuff;//覆接收缓冲区起始地址
*AT91C_US0_RCR = 256;    //开始PDC接收
while (1);
}

四.总结

我们在用51等单片机的串口进行收发数据时,因为发送与接收共用一个Buffer,所以在发送一字节数据后,通常都要加“while(!TI);”语句,来等待数据发送完毕;在接收数据时都要使用中断来处理,每当接收到一个字节数据后都要中断一次CPU。有了DMA这个功能,就不用这样浪费CPU的时间,可大大的提高CPU的实时性能。
本文地址:https://www.eechina.com/thread-23777-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
长话短说 发表于 2010-9-4 11:31:55
谢了
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表