单片机-串口通信(二)

目录

一、串口概念

1.相关概念:

按数据传输方式分类:

按时钟分类

二、STM32F103ZET6中串口

USART特性:

NRZ数据格式:

三、配置串口通信

查看硬件原理图

软件配置流程

USART相关的寄存器

新建my_usart1.c和my_usart1.h

四、使用串口发送数据控制LED灯


一、串口概念

**串口(串行通信接口)**是一种通信方式,用于传输数据的,串行数据传输,指的是数据按位传输--传输慢,距离相对较远(15米左右)

例:十六进制 0xaa-- 二进制 1010 1010 一个字节的数据按照bit传输

**并口(并行通信接口)**也是一种通信方式,比如屏幕8080接口 6800接口,这些都是并口,一次传输多位--传输快,距离近

1.相关概念:

按数据传输方式分类:

单工通信:

单工(Simplex Communication)模式的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。---广播

半双工通信:收发不能同时进行

半双工(Half Duplex)数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。例如,在一个局域网上使用具有半双工传输的技术,一个工作站可以在线上发送数据,然后立即在线上接收数据,这些数据来自数据刚刚传输的方向。像全双工传输一样,半双工包含一个双向线路(线路可以在两个方向上传递数据)。---对讲机

全双工通信:同一时间既可以接收数据,也可以发送数据

全双工通信又称为双向同时通信,即通信的双方可以同时发送和接收信息的信息交互方式。--手机

按时钟分类

异步通信:通信双方使用不同的时钟频率,收发双方各自都有自己的的时钟信号

同步通信:通信双方使用相同的时钟频率。

通信方式中一般包括硬件接口,和软件协议两部分

硬件接口规定了底层的电气特性,线缆,传输距离,通信速率

软件协议规定了在硬件接口的基础上,我们通信双方采用何种规定进行传输数据

通信双方必须遵守的一种规定--协议

二、STM32F103ZET6中串口

通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。

USART特性:

  • 全双工的,异步通信
  • NRZ标准格式--串口数据传输格式
  • 分数波特率发生器系统

发送和接收共用的可编程波特率,最高达4.5Mbits/s

  • 可编程数据字长度(8位或9位)
  • 可配置的停止位-支持1或2个停止位(2停止位,适用于红外收发)

波特率--单位时间(s),传输数据的位数

生活中的任何事情都是有误差的,误差只可以减小,不可以消除

NRZ数据格式:

起始位 +数据位+ 校验位 +停止位

1bit低电平 8bit 可有可无(1bit) 1Bit

起始位+0x55+校验+停止位--安全,稳定

校验的作用:保证数据的稳定传输

发送方发送数据之前会进行一次校验,得到一个校验码 value01

接收方发送数据之后会再次进行一次校验,得到一个校验码 value02

比较value01和value02的大小是否相等

奇偶校验:

奇数校验:检查数据中1的个数是否为奇数个

奇数校验:检查数据中1的个数是否为偶数个

0x55---0101 0101 0

三、配置串口通信

查看硬件原理图

PA9--复用推挽输出

PA10--浮空输入

软件配置流程

1.开时钟:A端口时钟 串口1时钟

2.配置IO口的工作模式

PA9--复用推挽输出

PA10--浮空输入

3.配置串口工作模式

起始位 数据位 校验位 停止位 波特率

以上所有内容都是通过寄存器实现

4.波特率的配置

程序中寄存器可以识别的是USARTDIV参数

而我们设置的波特率是:TX/RX波特率

波特率的设置,一般是需要我们工程师自己定义的;

常用的波特率:9600 115200 38400 4800.........

假如我们现在使用的波特率是115200

115200=fck/(16*usartdiv);

fck--串口的时钟72MHZ

usartdiv=72000000HZ*16/115200

USART相关的寄存器

**USART_SR寄存器:**主要是用于判断当前串口的收发数据或者中断的状态。

数据寄存器(USART_DR)

波特率配置寄存器

波特率的计算参考中文文档524页

新建my_usart1.c和my_usart1.h

.h文件同上,进行保存

添加文件到工程

添加.c文件

添加.h文件路径

显示串口:

printf函数应用:

fputc函数原型:

四、使用串口发送数据控制LED灯

0XAA--开灯

0xBB--关灯

TTL电平

这种是板上通信最常用的方式,SOC或独立的串口控制器芯片直接就提供该接口。TTL为正逻辑电平信号,电压值也较低,一般就是芯片电源电压3.3V或5V,抗干扰能力较差,所以也只是在板上短距离连接。

RS-232

RS-232是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文"推荐标准"的缩写,232为标识号。RS-232是对电气特性以及物理特性的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。

该标准规定采用一个25 个脚的DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC 机将RS-232 简化成了DB-9 连接器,从而成为今天的事实标准。而工业控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三条线。

RS232接口任何一条信号线的电压均为负逻辑关系。即:

逻辑"1"为-3----15V;

逻辑"0":+3---+15V,

噪声容限为2V。

物理学上,噪声指一切不规则的信号(不一定要是声音),比如电磁噪声,

热噪声,无线电传输时的噪声,激光器噪声,光纤通信噪声,照相机拍摄图片时画面的噪声等。

即要求接收器能识别高于+3V的信号作为逻辑"0",低于-3V的信号作为逻辑"1",TTL电平为5V为逻辑正,0为逻辑负。与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。

485通信中,使用的是差分传输。

相关推荐
海绵波波1071 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫1 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
云卓科技1 小时前
无人车之路径规划篇
人工智能·嵌入式硬件·算法·自动驾驶
stm 学习ing3 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库
w微信150135078123 小时前
小华一级 代理商 HC32F005C6PA-TSSOP20 HC32F005系列
c语言·arm开发·单片机·嵌入式硬件
北京迅为4 小时前
【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十八章 Qt控制硬件
linux·stm32·单片机·嵌入式硬件
编程圈子5 小时前
I.MX6U 裸机开发2. 芯片简介、汇编基础及GPIO操作准备工作
嵌入式硬件·arm
淘晶驰AK7 小时前
电子设计竞赛准备经历分享
嵌入式硬件·fpga开发
Matlab程序猿小助手7 小时前
【MATLAB源码-第208期】基于matlab的改进A*算法和传统A*算法对比仿真;改进点:1.无斜穿障碍物顶点2.删除中间多余节点,减少转折。
开发语言·嵌入式硬件·算法·matlab·机器人
田三番7 小时前
使用 vscode 简单配置 ESP32 连接 Wi-Fi 每日定时发送 HTTP 和 HTTPS 请求
单片机·物联网·http·https·嵌入式·esp32·sntp