首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM中基于DMA的高效UART通讯及其应用(3)

ARM中基于DMA的高效UART通讯及其应用(3)

5、试验及结论               
为了验证基于DMA的通讯的有效性,笔者做了对比试验。把负责轨迹插补的定时中断优先级设计成最高(中断时间间隔50毫秒,中断服务程序执行时间约需要30毫秒),然后一个机器人采用中断方式接收上位机连续发送的100组命令,另一个采用基于DMA的方式接收上位机连续发送的100组命令。然后在机器人主程序中通过读取UART的状态寄存器判断出现错误(主要是数据溢出错误,即缓冲区有接收数据而没有及时读取,被新的数据覆盖)的次数。软件采用C语言,用ADS1.2编译调试。试验结果如表2。实验证明了第二种方式的有效性。
表2:对比试验结果

本文作者的创新点在于:在UART通讯中,通过采取DMA方式,直接将UART接收的数据转移到设定好的RAM区,然后设置相应的全局标志,通知主程序数据可用就可以了。开发人员不需要到UART的缓冲区中读取数据,直接读RAM就可以了。与采用中断方式或者查询方式的串行口通讯方式相比较,不仅仅可以节省CPU通讯时用于接收数据的时间,同时可以防止UART接收的数据由于没有及时被读取而丢失,提高了通讯的可靠性。
参考文献:
(1)嵌入式系统开发与应用,田泽编著,北京航空航天大学出版社,2005年5月第一版;
(2)S3C44B0X RISC MICROPROCESSOR ,SAMSUNG ElECTRONICS
(3)ARM微控制器基础与实战,周立功等编著,北京航空航天大学出版社,2003年11月第1版.
(4) 魏永清 万宝年,具有软件模拟FIFO缓冲区的串口通信模块设计,微计算机信息 2006年第7-2期:64-66
继承事业,薪火相传
返回列表