本文主要是介绍嵌入式操作教程:2-12 RS232串口通信实验(查询方式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、实验目的
了解UART 的功能和结构,学习RS232串口通信协议,并实现通过查询方式进行 RS232 串口通信收发。
二、实验原理
RS232
RS232接口是现在主流的串行通信接口之一,被广泛用于计算机串行接口外设连接。 RS232标准的接口,在电压处于-3V-15V时处于逻辑1状,当电压在+3V+15V时,处于逻辑0状态。另外在型号线这块RTS/CTS和DTR/DSR以及CD/RI这些信号线都是以前较老形式的,现在常用的信号线就是RXD/TXD和GND这3条,如果不连接GND地线的话可能会出现乱码。在接头上的2和3接口是接收和发送,5接口就是地线,使用这三条就可以完成接收和发送数据。
RS232通信的主要特点
(1)全双工数据传输
串行数据流可以同时进行双向传输。
(2)点对点通信
RS232只能实现点对点的通信方式。
RS232接口的局限性
(1)接口信号电平值较高,接口电路芯片容易损坏。
(2)传输速率低,最高波特率19200bps。
(3)抗干扰能力较差。
(4)传输距离有限,一般在15m以内。
(5)只能实现点对点的通讯方式。
RS232接口
UART1_RXD、UART1_TXD和RS232_UART2_TXD、RS232_UART2_RXD。RS232规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的。
实验板上的CON14和CON15是由UART1和UART2通过MAX3232串口电平转换芯片得到的RS232串口,使用的是9针DB9接口。在本实验中使用的是UART1串口。
UART
全称Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。 UART是一种通用串行数据总线,用于异步通信,异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,但在同一个字符中的两个相邻位间的时间间隔是固定的。该总线双向通信,可以实现全双工传输和接收。串行通信是指利用一条传输线将资料一位位地顺序传送,特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。在嵌入式设计中,UART用于主机与辅助设备通信,如PC机通信包括与监控调试器和其它器件。
UART特点
(1)通用异步
(2)串行低速总线
(3)全双工
(4)需要约定通信速率
(5)只能点对点通信
UART的功能框图
UART通信模式
(1)单工:数据传输仅能沿一个方向,不能实现反向传输。
(2)半双工:数据传输可以沿两个方向,但需要分时进行(RS485)
(3)全双工:数据可以同时进行双向传输。
UART通信协议
起始位 : 发出一个逻辑 0 信号,表示传输字符的开始。
数据位 : 数据位的个数可以是 5、6、7、8 等,构成一个字符。通常采用ASCII码(7位),从最低位开始传送。
校验位 : 数据位加上这一位后,使得 1 的位数应为偶数(偶校验)或奇数(奇校验),以此来校验传输的正确性。
停止位 : 数据的结束标志。可以是 1 位、1.5 位、2 位的高电平。
空闲位 : 处于逻辑 1 状态,表示当前线路上没有数据传送。
波特率
指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制。譬如每秒钟可以传输9600个二进制位,波特率就是9600。
串口通信的波特率不能随意设定,而应该在一些值中选择,一般常见的波特率是9600和115200(低端单片机如51常用9600,高端单片机和嵌入式SoC一般用115200)。
(1)通信双方必须事先设定相同的波特率这样才能成功通信,如果发送方和接受方按照不同的波特率通信则根本收不到,因此比特率最好是大家熟知的而不是随意指定的
(2)常用的波特率经过长久发展,就形成了共识,常用9600 和115200。
程序流程设计
程序流程设计中首先要进行外设使能配置,接着进行管脚复用配置和UART初始化,然后进行发送数据,串口不断查询有无需要接收的数据,最后返回数据。
查询方式
对I/O设备的程序轮流查询,它定时对设备轮流询问一遍有无处理需求。轮流询问之后,有需求的,则加以处理。在处理I/O设备的需求完之后,处理机返回继续工作。
CPU要不断地读取状态字和检测状态字,不管那个外围设备是否有服务请求,都必须一一查询,许多次的重复查询,可能都是无用的,而又占去了CPU的时间,效率较低。
源码说明
管脚复用源码
管脚复用配置。
GPIO复用配置操作直接封装成了函数,使用时,直接包含“TL6748.h”文件 即可。
StarterWare API 接口。
GPIOBank0Pin0PinMuxSetup();
数据发送源码
数据发送配置。
使用 StarterWare 的库来设置数据发送。
使用时,直接包含“uart.h”文件 即可。
StarterWare API 接口。
void UARTCharPut(unsigned int baseAdd, unsigned char byteTx)
数据接收源码
数据接收配置。
使用 StarterWare 的库来设置数据接收。
使用时,直接包含“uart.h”文件 即可。
StarterWare API 接口。
int UARTCharGet(unsigned int baseAdd)
三、操作现象
实验设备
本实验使用的硬件接口为UART1 RS232接口,所需硬件为实验板、仿真器、RS232 交叉串口母母线、USB转RS232串口线和电源。
硬件连接
(1)使用 RS232 交叉串口母母线和 USB 转 RS232 串口线连接实验板的UART1串口和电脑的 USB
口。
(2)连接仿真器和电脑的USB接口,
(3)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。
软件操作
串口端口查询
(1)先在设备管理器查看串口的端口号;
(2)再设置串口调试工具,波特率设置为115200。
CCS里相关操作
导入工程,选择Demo文件夹下的对应工程
编译工程
将CCS连接实验箱并加载程序
点击运行程序,串口终端会打印相关信息
通过电脑键盘输入任意字符,可在串口终端回显。
实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。
这篇关于嵌入式操作教程:2-12 RS232串口通信实验(查询方式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!