资源描述
ARM7串口通讯实验
一、 实验目的
1、 掌握ARM 的串行口工作原理。
2、 掌握ARM 的串行口工作原理。
3、 学习编程实现ARM 的UART 通讯。
4、 掌握CPU 利用串口通讯的方法。
二、 实验内容
1、学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接口。
2、编程实现ARM 和计算机实现串行通讯功能,具体如下:
ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC 键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
三、 实验设备
1、 硬件
S3C44B0教学实验箱
PC机
JTAG仿真器
串口线
2、 软件
PC机操作系统
ARM Developer Suite v1.2
Multi-ICE V2.2.5
DNW(或者超级终端)
四、 预备知识
1、 了解ADT集成开发环境的基本功能。
2、 学习串口通讯的基本知识。
3、 熟悉S3C44B0串口有关的寄存器。
五、 基础知识
1、串行通信接口电路组成:可编程的串行接口芯片、波特率发生器、EIA与TTL电平转换器、地址译码电路。
2、异步串行I/O通信协议:异步协议、同步协议。
3、异步串行通信
3.1、异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
3.2、数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。
3.3、接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。
3.4、在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
1.
异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据
的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线
即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O 方式,
图1 异步串行通信中的字符传送格式
4、 异步串行通信中的字符传送格式
4.1、开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
4.2、每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。
4.3、最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。
4.4、至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。
4.5、每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为110,150,300,600,1200,2400,4800,9600 等。
5、 EIA RS-232C
美国电子工业协会推荐的一种标准(Electronic industries Association Recoil-mendedStandard),在25针接插件(DB-25)上定义了串行通信的有关信号。在实际异步串行通信中,并不要求用全部的RS-232C 信号,许多PC/XT兼容机仅用15针接插件(DB-15)来引出其异步串行I/O信号,而PC中更是大量采用9针接插件(DB-9)来担当此任。
图2 DB-25 DB-9引脚定义
图3 DB-25 DB-9引脚说明
图4 RS-232C接口通信的两种基本连接方式
6、 信号电平规定
EIA电平:双极性信号逻辑电平, 它是一套负逻辑定义:3V到-25V之间的电平表示逻辑“1” ,+3V到+25V之间的电平表示逻辑“0” 。
TTL电平:计算机内部(S3C44B0)使用TTL电平
电平转换电路:常用专门的RS-232接口芯片,如SP3232、SP3220等,在TTL电平和EIA电平之间实现相互转换。
7、 与UART有关的寄存器介绍
线路控制寄存器ULCONn
控制寄存器UCONn
FIFO控制寄存器UFCONn
控制寄存器UMCONn
状态寄存器UTRSTAT
错误状态寄存器UERSTAT
FIFO状态寄存器UFSTAT
发送寄存器UTXH和接收寄存器URXH
波特率因子寄存器UBRDIV
六、 实验说明
1、串口初始化
/* 设置串口的FIFO属性,并清除FIFO中的内容 */
rUFCON0=0xf7;
/* 关闭流控功能 */
rUMCON0=0x0;
/* 设置8位数据位、1位停止位、无奇偶校验串口模式 */
rULCON0=0x3;
/* 设置收发的中断模式为电平触发,关闭超时功能 */
rUCON0=0x345;
/* 设置波特率,mclk为CPU主频,baud为波特率 */
rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 );
2、发送数据和接收数据
/* 等待发送缓冲空.*/
while(!(rUTRSTAT0 & 0x2));
/* 将数据写到数据端口 */
rUTXH0 = data;
3、接收数据
/* 等待数据 */
while(rUTRSTAT0 & 0x1==0x0)
/* 读取数据 */
data = rURXH0;
七、 实验思考
1、 简述串行接口的工作原理以及串行接口的优缺点
2、 RS-232C的最基本数据传送引脚是哪几根?画出双机通讯的基本接线 图
3、 简述串行接口通讯程序设计的基本步骤
展开阅读全文