1、 ARM7 串口通讯实验 一、 实验目的 1、 掌握 ARM 的串行口工作原理。2、 掌握 ARM 的串行口工作原理。3、 学习编程实现 ARM 的 UART 通讯。4、 掌握 CPU 利用串口通讯的方法。 二、 实验内容 1、学习串行通讯原理,了解串行通讯控制器,阅读 ARM 芯片文档,掌握ARM 的 UART 相关寄存器的功能,熟悉 ARM 系统硬件的 UART 相关接口。2、编程实现 ARM 和计算机实现串行通讯功能,具体如下: ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按 PC 键盘通过超级终端发送数据,开发板将接收到的数据再返送给 PC,
2、在超级终端上显示。 三、 实验设备1、 硬件S3C44B0 教学实验箱PC 机JTAG 仿真器串口线2、 软件 PC 机操作系统ARM Developer Suite v1.2Multi-ICE V2.2.5DNW(或者超级终端)四、 预备知识 1、 了解 ADT 集成开发环境的基本功能。2、 学习串口通讯的基本知识。3、 熟悉 S3C44B0 串口有关的寄存器。五、 基础知识1、串行通信接口电路组成:可编程的串行接口芯片、波特率发生器、EIA与 TTL 电平转换器、地址译码电路。2、异步串行 IO 通信协议:异步协议、同步协议。3、异步串行通信3.1、异步串行方式是将传输数据的每个字符一位接
3、一位(例如先低位、后高位)地传送。3.2、数据的各不同位可以分时使用同一传输通道,因此串行 I/O 可以减少信号连线,最少用一对线即可进行。3.3、接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。3.4、在微型计算机中大量使用异步串行 I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步) ,字符和字符间还可能有长度不定的空闲时间,因此效率较低。1异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位 )地传送。数据 的各不同位可以分
4、时使用同一传输通道,因此串行 IO 可以减少信号连线,最少用一对线 即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。 为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行 IO 方式, 图 1 异步串行通信中的字符传送格式4、 异步串行通信中的字符传送格式4.1、开始前,线路处于空闲状态,送出连续“1” 。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。4.2、每个字符的数据位长可以约定为 5 位、6 位、7 位或 8 位,一般采用 ASCII 编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的
5、位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。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-mende
6、dStandard),在 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 电平
7、:计算机内部(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 中的内容 */
8、rUFCON0=0xf7; /* 关闭流控功能 */rUMCON0=0x0;/* 设置 8 位数据位、1 位停止位、无奇偶校验串口模式 */rULCON0=0x3; /* 设置收发的中断模式为电平触发,关闭超时功能 */rUCON0=0x345;/* 设置波特率,mclk 为 CPU 主频,baud 为波特率 */rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 );2、发送数据和接收数据 /* 等待发送缓冲空.*/while(!(rUTRSTAT0 /* 将数据写到数据端口 */rUTXH0 = data;3、接收数据 /* 等待数据 */while(rUTRSTAT0 七、 实验思考1、 简述串行接口的工作原理以及串行接口的优缺点2、 RS-232C 的最基本数据传送引脚是哪几根?画出双机通讯的基本接线 图3、 简述串行接口通讯程序设计的基本步骤