找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

自学AVR单片机十七(RS-232异步串行通信USART实验)

  [复制链接]
慧龙 发表于 2010-5-6 17:09:58 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
CEPARK-AVR学习板功能丰富,可以学习的实验很多,我们现根据学习板上的各个功能模块来学习,等所有模块学习完了之后,我们再根据AVR单片机的数据手册进行实验板上没有涉及到的知识的学习,至于定时器、外部中断等AVR单片机的功能模块,我们也放在后面学习。
      AVR系列单片机都带有异步串行接口,而我们现在学习的ATmega64更是有两个串口。我们知道单片机的电平一般都是TTL电平(关于TTL电平与CMOS电平等其他电平的区别,我们以后单独详解),而计算机的串口是RS-232电平,这两种电平不能互相匹配,所以如果将这两种电平互联,需要一个电平转换电路,本实例中使用常用的MAX232芯片,它实现RS-232电平和TTL电平的互换。
      在MAX232的数据手册中,有这个芯片的典型连接电路,我们直接采用这种电路即可。关于MAX232的连接电路,其实非常简单,我们只要记住4电容(或5电容)就可以了。这里的4电容指的是电路中只需要连接4个电容就可以;至于5电容,多出来的那个电容是连接VCC和GND之间的电容,这个电容可以不接,但是从考虑电源的稳定性上来说,建议接上。
      至于电路中电容大小的选择可以参考数据手册,需要注意的是这里要用无极性电容(不区分正负极)。电容值一般有三种选择0.1uF、1uF、10uF.电容值的大小会影响到端口的驱动能力,电容大,驱动能力强,电容小,驱动能力弱。通常使用1uF的电容就足够了(多数电路中都采用0.1uF,也能满足驱动需要)。

RS-232串行通信电路图如下所示

MAX-232芯片有两路电平转换通道,正好满足我们需要。ATmega64的两个串口分别连接端口PE0(接收端)、PE1(发送端)和PD2(接收端)、PD3(发送端)。

       单片机的数据通信主要有两种方式:并行通信、串行通信;我们前面学习的流水灯实验采用的是并行通信方式,而使用74HC595控制数码管显示试验中,74HC595的控制方式则是串行通信。从这两个实验中我们可以看出:并行通信的数据传送方式是以字节为单位传送的,一次传送一个字节(8位)的数据,而串行通信是以位为单位传送的,一次传送一位(这里的位值得就是二进制的位)。
       单片机的串行通信有多种,最常用的是异步串行通信和同步串行通信,此外像我们经常接触的I2C总线、USB总线等都属于串行通信的范畴,关于这些串行通信的区别,可以到网上搜索相关资料进行了解。
       这里我们先简单了解一下同步串行通信和异步串行通信:
       举例说明:
        同步通信:你在现场看篮球比赛的时候,必须时刻不停的注意场上的情况,如果你走神了,那你就会错过一些精彩的镜头;这说明在同步通信的时候必须停下手中的一切活动,专心致志的干这一件事,否则就会出现走神(数据错误);
       异步通信:你没有时间到现场看篮球赛,但是别人送你一张现场比赛的录像带,那么你就可以在想看的时候观看,看了一半也可以停下来,等以后再继续看,这说明异步通信可以随时发生,也可以随时停止。

       单片机的串行通信相比端口的输入输出控制要复杂很多,主要原因是需要设置相应的功能寄存器。异步串行通信接口(USART)分为三个部分:时钟发生器、数据接收器、数据发送器。
       时钟发生器用来产生通信过程中需要的时钟信号,我们通常所说的通讯波特率 就是由时钟发生器产生的。
       数据接收器:存放将要发送的数据
       数据发送器:存放接收到的数据

      单片机的异步串行通信有两个重要概念:波特率、数据帧格式;波特率是指数据发送的速度,很明显,波特率越高数据传送速度越快;数据帧格式是指一次传送数据的位数,数据位数可以是5.6.7.8等
      既然异步串行通信可以随时发生,那就存在一个问题,接收方不知道数据什么时候会发送过来,什么时候数据发送完毕,这就需要一个约定:当接收方看到这个约定后,知道数据发送的开始和结束。这就用到了起始符和结束符的概念。起始符和结束符就是告诉接收方数据开始发送和结束发送的“约定”。

    单片机异步串行通信程序设计步骤:
    1、初始化:初始化过程主要包括波特率的设定,数据帧格式的设定,根据需要使能接收器和发送器,对于采用中断操作的处理,还要进行相应中断标志的操作。以下是采用查询方式(非中断方式)的USART初始化实例(引自ATmega64数据手册

2、数据发送和接收:
  •     数据发送:设置串口状态和控制寄存器UCSRB允许接收数据,使能后出口数据接收引脚的通用I/O口供能被串行异步通信功能取代,将要发送的数据放入发送寄存器,等待串行通信模块允许数据发送后将数据发出。
  • 数据接收:数据接收的步骤与数据发送步骤相似,


以下是数据手册里面关于发送和接收的实例:
    数据发送例程

数据接收例程
8160_1243221483lyyO.jpg
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 13:24 , Processed in 0.059227 second(s), 13 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表