嵌入式操作教程:2-12 RS232串口通信实验(查询方式)

2024-02-07 16:12

本文主要是介绍嵌入式操作教程: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接口就是地线,使用这三条就可以完成接收和发送数据。

image.png

RS232通信的主要特点

(1)全双工数据传输

串行数据流可以同时进行双向传输。

(2)点对点通信

RS232只能实现点对点的通信方式。

RS232接口的局限性

(1)接口信号电平值较高,接口电路芯片容易损坏。

(2)传输速率低,最高波特率19200bps。

(3)抗干扰能力较差。

(4)传输距离有限,一般在15m以内。

(5)只能实现点对点的通讯方式。

RS232接口

UART1_RXD、UART1_TXD和RS232_UART2_TXD、RS232_UART2_RXD。RS232规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的。

image.png

实验板上的CON14和CON15是由UART1和UART2通过MAX3232串口电平转换芯片得到的RS232串口,使用的是9针DB9接口。在本实验中使用的是UART1串口。

image.png

UART

全称Universal Asynchronous Receiver/Transmitter,通用异步收发传输器。 UART是一种通用串行数据总线,用于异步通信,异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,但在同一个字符中的两个相邻位间的时间间隔是固定的。该总线双向通信,可以实现全双工传输和接收。串行通信是指利用一条传输线将资料一位位地顺序传送,特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。在嵌入式设计中,UART用于主机与辅助设备通信,如PC机通信包括与监控调试器和其它器件。

UART特点

(1)通用异步

(2)串行低速总线

(3)全双工

(4)需要约定通信速率

(5)只能点对点通信

image.png

UART的功能框图

image.png

UART通信模式

(1)单工:数据传输仅能沿一个方向,不能实现反向传输。

(2)半双工:数据传输可以沿两个方向,但需要分时进行(RS485)

(3)全双工:数据可以同时进行双向传输。

image.png

UART通信协议

起始位 : 发出一个逻辑 0 信号,表示传输字符的开始。

数据位 : 数据位的个数可以是 5、6、7、8 等,构成一个字符。通常采用ASCII码(7位),从最低位开始传送。

校验位 : 数据位加上这一位后,使得 1 的位数应为偶数(偶校验)或奇数(奇校验),以此来校验传输的正确性。

停止位 : 数据的结束标志。可以是 1 位、1.5 位、2 位的高电平。

空闲位 : 处于逻辑 1 状态,表示当前线路上没有数据传送。

image.png

波特率

指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制。譬如每秒钟可以传输9600个二进制位,波特率就是9600。

串口通信的波特率不能随意设定,而应该在一些值中选择,一般常见的波特率是9600和115200(低端单片机如51常用9600,高端单片机和嵌入式SoC一般用115200)。

(1)通信双方必须事先设定相同的波特率这样才能成功通信,如果发送方和接受方按照不同的波特率通信则根本收不到,因此比特率最好是大家熟知的而不是随意指定的

(2)常用的波特率经过长久发展,就形成了共识,常用9600 和115200。

程序流程设计

程序流程设计中首先要进行外设使能配置,接着进行管脚复用配置和UART初始化,然后进行发送数据,串口不断查询有无需要接收的数据,最后返回数据。

image.png

查询方式

对I/O设备的程序轮流查询,它定时对设备轮流询问一遍有无处理需求。轮流询问之后,有需求的,则加以处理。在处理I/O设备的需求完之后,处理机返回继续工作。

CPU要不断地读取状态字和检测状态字,不管那个外围设备是否有服务请求,都必须一一查询,许多次的重复查询,可能都是无用的,而又占去了CPU的时间,效率较低。

源码说明

管脚复用源码

管脚复用配置。

GPIO复用配置操作直接封装成了函数,使用时,直接包含“TL6748.h”文件 即可。

StarterWare API 接口。

GPIOBank0Pin0PinMuxSetup();

image.png

数据发送源码

数据发送配置。

使用 StarterWare 的库来设置数据发送。

使用时,直接包含“uart.h”文件 即可。

StarterWare API 接口。

void UARTCharPut(unsigned int baseAdd, unsigned char byteTx)

image.png

数据接收源码

数据接收配置。

使用 StarterWare 的库来设置数据接收。

使用时,直接包含“uart.h”文件 即可。

StarterWare API 接口。

int UARTCharGet(unsigned int baseAdd)

image.png

三、操作现象

实验设备

本实验使用的硬件接口为UART1 RS232接口,所需硬件为实验板、仿真器、RS232 交叉串口母母线、USB转RS232串口线和电源。

image.png

硬件连接

(1)使用 RS232 交叉串口母母线和 USB 转 RS232 串口线连接实验板的UART1串口和电脑的 USB

口。

(2)连接仿真器和电脑的USB接口,

(3)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

串口端口查询

(1)先在设备管理器查看串口的端口号;

(2)再设置串口调试工具,波特率设置为115200。

image.png

CCS里相关操作

导入工程,选择Demo文件夹下的对应工程

编译工程

将CCS连接实验箱并加载程序

点击运行程序,串口终端会打印相关信息

通过电脑键盘输入任意字符,可在串口终端回显。

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

这篇关于嵌入式操作教程:2-12 RS232串口通信实验(查询方式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688255

相关文章

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自