RS232串口通信
——串口USART0通讯实验
一.实验目的
利用串口调试软件能够正确接收到AT91SAM7S64发出的数据,AT91SAM7S64也能正确接收到调试软件发出的数据。
二.实验程序和参数设置
1>连接器选项设置和启动代码都与上个实验相同
2>C语言的代码
#i nclude "AT91SAM7S64.h"
#i nclude "Board.h"
unsigned char RBuff[256]; //定义接收缓冲区
unsigned char index;
int main(void)
{
unsigned int i, delay;
*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_US1_MR =0x8c0; //正常模式,时钟为MCK,8位长度,无校验,1位停止位,
*AT91C_US0_IDR = 0xf3fff; //禁止所有UART相关的中断
*AT91C_US0_BRGR = 30; //设置波特率为38400Hz,AT91C_US0_BRGR为CD值
//Baudrate=SelectedClock/(8(2-Over)CD) = MCK/16CD = 18432000/(16*30) = 38400
*AT91C_US0_CR = 0x15c; //复位接收器、发送器和状态位;使能接收与发送
index = 0;
while (1)
{
for (i = 0; i
{ //发送程序
if ((*AT91C_US0_CSR) & AT91C_US_TXEMPTY) //判断发送器是否为空
{
*AT91C_US0_THR = i; //空,则发送数据
}
for (delay = 0; delay
}
if ((*AT91C_US0_CSR) & AT91C_US_RXRDY)
{//接收程序,在调试该部分时,要将发送部分程序注示掉
RBuff[index++] = *AT91C_US0_RHR;
}
}
}
三.出现的问题与解决方法
1> 状态寄存器中的发送准备位(TXRDY)和发送空标志位(TXEMPTY)一直为0,表示发送器未准备好和缓冲区不空。
原因是发送器复位后还未使能。不能同时进行发送器(或接收器)复位与使能操作(*AT91C_US0_CR= 0x15c),这样使能操作会无效,必须将它们分开,即先进行复位(*AT91C_US0_CR= 0x10c),再进行使能(*AT91C_US0_CR = 0x50)。
2> 串口接收、发送的数据不对
原因是系统主时钟和分频后的时钟计算错误,引起波特率也计算错误。很有必要深入研究关于时钟的产生、分频及波特率计算等内容。
3> 每次从串口调试软件收到的数据中,低四位正确,高四位错误。
原因是将“*AT91C_US0_MR =0x8c0;”写成了“*AT91C_US1_MR =0x8c0;”,而引起通讯模式根本不对。可以说这是一个非常低级的错误,但它却花费了我很久的时间才找到症结所在。在找原因的过程中,使我对串口相关的(如各种时钟的产生、波特率的计算等)内容有了更深刻的理解。
四.总结
在本实验中串口为异步模式,波特率的计算如下式所示:
Baudrate = SelectedClock/(8(2-Over)CD)
其中在USART模式寄存器(AT91C_US0_MR)中设置SelectedClock为MCK;Over为1则上式变成如下所示:
Baudrate = SelectedClock/(8(2-Over)CD) = MCK/16CD
在Master Clock Register(AT91C_PMC_MCKR)中将MCK设置为Main Clock且不分频,即为外部振荡时钟(接在XIN和XOUT管脚间的晶振)的频率,因为外部晶振是18.432MHz,所以MCK就为 18432000,则上式变成如下所示:
Baudrate=SelectedClock/(8(2-Over)CD) = MCK/16CD = 18432000/(16*30) = 38400
关键字:ARM 入门笔记 RS232 串口通信
引用地址:
ARM入门笔记(6)
推荐阅读最新更新时间:2024-03-16 13:59
ARM Powered新花样:度过炎夏的freestyle你准备好了么?
夏天已经悄然而至,每天清晨迎接你的是窗外聒噪的知了?照得刺眼的太阳?还是只升不降的温度?热浪滚滚的夏天,你想用什么样的Style度过呢?ARM powered智能设备为你的酷热夏日支招。下面就随手机便携小编一起来了解一下相关内容吧。 【AWAIR空气监测器:酷夏中的小清新】 https://getawair.com/ 夏天在家里孵空调简直美事一桩,不过室内空气质量着实让人担忧。拥有一副小清新的外表,AWAIR很容易被误认为是音箱,但它实际上是一款能监测空气质量的智能设备。AWAIR能测量二氧化碳、细粉尘颗粒和挥发性有机化合物浓度,以及空气的温度和湿度。所有这些数据将被上传到AWAIR专用应用进行分析,并从而根据用户特定的健
[手机便携]
基于ARM的ADUC7026系统简析
0引言 随着人们生活水平的不断提高,人们对于自身健康的关注也提升到一个前所未有的高度。在今天,越来越多的高科技手段开始运用到医疗仪器的设计当中。心电图、脑电图等生理参数检测设备,各类型的监护仪器,超声波、X射线成影设备,核磁共振仪器,以及各式各样的物理治疗仪都开始在各地医院广泛使用,并且医学仪器正在向着组合式、多功能、智能化和微型化方向发展。现代的医学仪器一般都广泛采用了嵌入式微处理器来增强仪器的智能化程度,提高其稳定性和数据处理的精确性,使医学信号的采集、处理、通信一体化,并具有自诊断、自校验等一系列优点。其中ARM(Advanced RISC Machines)嵌入式微型主板作为中央处理模块,凭借自身体积小巧、功能强大、功耗低
[单片机]
ARM嵌入式平台的VGA接口设计
大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口。三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产品中得到广泛的应用。笔者在开发基于ARM嵌入式平台的血液流变测试仪的过程中,成功地利用高性能视频D/A转换芯片ADV7120,将S3C2410自带的LCD扫描式接口转换为VGA接口,使之能够驱动VGA接口的显示器。 1 VGA接口介绍 近年来,业界制定出了众多数字化的显示接口协议,较为典型的是DVI(Digital Visual Interface)。由于数字接口的标
[嵌入式]
ARM领跑嵌入式处理器 英特尔前景不佳
北京时间2月19日晚间消息,在移动芯片市场,ARM一直领先于英特尔。如今,在另一个新兴领域,ARM再次给英特尔带来威胁:从汽车到餐具等使用半导体的设备。 所谓的嵌入式处理是ARM发展速度最快的市场,去年增长了25%。去年第三季度,ARM来自其它产品的销售额首次超越手机处理器业务。ARM CEO沃伦·伊斯特(Warren East)上个月曾表示,来自其他产品的营收比例还会继续提升。 IDC数据显示,当前企业纷纷购买能够让各种设备变得更加智能的芯片,2016年全球嵌入式处理器营收将达到473亿美元,与2012年相比增长23%。这将继续提升市场对ARM技术的需求,从而进一步帮助ARM在该市场保持着对英特尔的领先优势。 IDC分析师
[手机便携]
基于ARM Linux QT的掌上多媒体系统的设计和实现
0 引言 随着人们生活水平的提高,消费结构发生了巨大变化,消费者用于娱乐方面的支出在总支出中所占的比例正在不断扩大。掌上多媒体系统可以满足人们对于试听以及便携的需求,另外还可以实现一些其他功能,如图片浏览、网络下载、以及影音录制等。目前市场上的掌上多媒体系统多是Windows CE、Symbian、Palm OS等商用操作系统,其开放的程序不够高,而且价格偏高,不适于第三方应用软件的移植。ARM体系作为专用嵌入式系统设计的通用处理器内核,具备高性能、低功耗、易扩展的特点。本系统基于ARM9、嵌入式Linux操作系统设计并实现了一个更为开放的嵌入式平台,来实现掌上多媒体系统的诸多功能。 1 多功能掌上媒体播放器系统的硬件设计
[单片机]
基于ARM控制器LPC2294的CAN/PCI智能通信卡设计
引言 LPC2294是 PHILIPS 公司推出的一款功能强大、超低功耗且具有 ARM7TDMI 内核的32位微控制器。它具有丰富的片上资源,完全可以满足一般的工业控制需要,同时还可以减少系统硬件设计的复杂度,提高系统的稳定性。 CAN(“Controller Area Network”)总线控制器局域网是一种能有效支持分布式控制或实时控制的串行通信网络。CAN总线以其高性能、高可靠性、廉价等特性,越来越受到人们的重视和青睐。为了有效的管理工业现场的CAN节点,充分发挥CAN总线的性能,通信卡的设计与研究十分必要。但目前市场上类似产品存在着两点不足。 首先是一般工业现场中可能拥有不止1条CAN总线,而目前设计的通信卡上的C
[单片机]
将模拟组件与Arm微控制器内核进行集成解决嵌入式系统问题
嵌入式系统的设计带来了复杂的挑战,因为在性能,成本,功耗,尺寸,新功能和效率方面都有进步的积极目标。然而,有一种新兴的设计方案可以解决这些复杂问题 - 模拟组件与ARM ®微控制器内核智能集成。这种与传统模拟集成的区别在于现在提供的高性能以及为解决特定系统级问题而进行的优化。虽然每个市场都会对这些领域的订单排名进行改进,但同时满足多个因素是非常需要的,并且可以来自众多分立组件的集成。从逻辑上讲,组合部件可以解决许多嵌入式系统目标,但只需将几个分立元件和一个处理器放在一个封装中就不是答案;解决方案要复杂得多,需要智能集成。 模拟和数字智能集成 高性能模拟组件(放大器,ADC,DAC,电压基准,温度传感器)的智能集成,无线收发器等
[单片机]
基于AMR语音编解码算法的VoIP系统
本文提出了一种基于AMR语音编解码算法的新VoIP系统,该系统可以根据网络信道质量的好坏来自适应地选择一种最佳的传输速率,从而使得合成后的语音质量有了更加良好的QoS保障。通过NS-2平台下的仿真,实验结果表明:新VoIP系统在网络延时和数据包丢失率方面均要明显优于采用G.729算法的传统VoIP系统。 1 NS-2和AMR相关技术 1.1 NS-2网络模拟器 NS-2(Network Simulator,version 2)是由加州大学伯克利分校开发的面向对象的、离散事件驱动的网络模拟器,主要用于解决网络研究方面的问题,目前NS-2可以用于模拟各种不同的通信网络。它功能强大,模块丰富,已经实现的主要模块有:网络传输
[单片机]