嵌入式 - 硬件:51单片机(3)uart串口

本节重点

1.UART的概念
2、单工、半双工、全双工概念
3、串行、并行概念
4、串行、并行区别
5、 串口通信时序
6、奇偶校验的概念/缺点
7、串口通信参数(波特率 数据位 停止位 校验位 2400 8 N 1)
8、同步、异步概念
9、主从应答的概念
10、主机、从机

目录

一、通信方式:

[1. 单工](#1. 单工)

​编辑2.半双工 (I2C)

3.全双工(UART)

二、数据传输的顺序:

三、数据传输的形式:

串行:

并行:

四、串行传输和并行传输的区别:

五、串口通信时序:

六、奇偶校验:

​编辑奇校验:

偶校验:

七、串口通信参数:

八、同步通信、异步通信:

九、串口寄存器配置:

串口的波特率发生器依赖于定时器1(Timer1)

(1)SCON/PCON串口控制寄存器:

SCON

PCON

(2)定时器寄存器相关配置:

TMOD

TCON

(3)中断寄存器相关配置:

练习--------串口初始化

[练习--------发送"hello world!"](#练习--------发送“hello world!”)

练习----发数组等........

十、主从应答:

练习-------------------主机发送指令,从机解析主机发送的指令并获得功能码,根据功能码完成对外设的控制,并回复应答给主机


51 单片机有8 根数据线16 根地址线

  • 数据线:与 CPU 的字长一致(8 位),负责传输 8 位二进制数据,对应 P0 口(双向 8 位并行 I/O 口,可作为地址 / 数据复用线)。
  • 地址线 :16 位地址总线决定了寻址范围(最大 64KB,即0x0000~0xFFFF),其中 P0 口分时复用为低 8 位地址线,P2 口作为高 8 位地址线。
    UART
    UART:通用异步收发器,2个串口

(1个串口被用于ISP下载程序,1个串口被用于和主机之间的通信),RXD(接收信号线) TXD(发送信号线)

全双工、串行、异步

一、通信方式:

1. 单工

(1)发送方和接收方是固定的,数据只能从发送方发给接收方

(2)数据传输是通过一根信号线实现,数据传输的方向是固定的

2.半双工 (I2C)

(1)通信双方既可以作为发送方也可以作为接收方

(2)数据传输是通过一根信号线实现,数据传输的方向可以是双向的

(3)同一时刻,数据传输的方向呈现单一性(A给B发的时候,B不能给A发,B只能去接收数据)

3.全双工(UART)

(1)通信双方既可以作为发送方也可以作为接收方

(2)数据传输是通过两根信号线实现,数据传输在任意时刻都是双向的(收发可以同时进行)

二、数据传输的顺序:

Uart在传输数据时,遵循LSB优先原则(低位先行),先发低位数据

三、数据传输的形式:

串行:

通过一根信号线传输数据,按照先后次序逐个bit逐个bit去发送数据

并行:

同多多根信号线同时去传输数据

四、串行传输和并行传输的区别:

串行:

  • (1)传输速率慢(只能通过一根线逐个bit去传输)

  • (2)硬件成本低,实现简单

  • (3)传输距离远,抗干扰性好(RS485差分)
    并行:

  • (1)传输速率快 (可以通过多根线同时传输多个bit)

  • (2)硬件成本高,实现复杂

  • (3)传输距离近,抗干扰性差(30米以内距离增加后多根信号新存在信号偏移,会电磁波干扰,会造成误差和干扰)

五、串口通信时序:

  • 1.串口通信时,空闲状态为高电平
  • 2.当由高电平变为低电平(发送一个低电平信号),代表发送了一个起始位,准备开始通信
  • 3.发送数据(通常是8bit,遵循先发数据低位LSB原则)
  • 4.再发送一个bit的校验位(奇偶校验)
  • 5.再发送一个bit的停止位,代表这一次串口通信结束

校验

  • 奇偶校验(串口)
  • 累加和校验
  • CRC校验(Modbus协议)

六、奇偶校验:

问题:无法去检测偶数个bit出错的问题

奇校验:

校验位为"1,若数据位中"1的个数加上校验位中的"1",保持1的个数为奇数个 ,则代表校验通过

偶校验:

校验位为"0,若数据位中"1的个数加上校验位中的"0,保持1的个数为偶数个 ,则代表校验通过

七、串口通信参数:

波特率:

bps(bit per second),每秒钟传输bit的数量,常见的波特率:2400,4800,9600,115200
数据位:

8,串口传输通常8bit数据位传输
停止位:

1,1bit停止位
校验位:

None,N,无校验

Even,E,偶校验

Odd,O,奇校验
9600,8, N, 1

2400,8,E,1

115200,8,0,1

八、同步通信、异步通信:

I2CUARTSPI同步?异步?(时钟线)

I2C:SCL时钟线

SPI:SCLK时钟线

UART:无时钟线异步

同步 :通信的双方有一根共享的时钟线来约定通信的频率(同步发送数据/接收数据)

异步: 通信双方没有时钟线进行同步,如Uart:可以通过设置波特率来实现同步(发:2400bps收:2400bps)

九、串口寄存器配置:

串口的波特率发生器依赖于定时器1(Timer1)

(1)SCON/PCON串口控制寄存器:

PCON寄存器中的bit6 置0 代表通过SCON寄存器中SM0和SM1两位指定串口工作方式:

①、将SCON寄存器中的bit6和bit7清0

②、将SCON寄存器中的SM1 bit6置1,SM0 bit7清0,代表串口工作8位UART模式

③、将SCON寄存器中REN bit4置1,代表允许串口接收数据

④、SCON寄存器中bit1 TI位,代表串口8位数据发送完毕硬件自动置1,但需要软件清0(查询)

⑤、SCON寄存器bit0 RI位,代表串口8位数据接收完毕硬件自动置1,但需要软件清0(查询)

⑥、PCON寄存器SMOD bit7位置1,代表波特率加倍

256 - 2 * 12M / 32 / 2400 / 12 = 256 - 26 =230(定时器初值)

SCON
PCON

定时器

(2)定时器寄存器相关配置:

TMOD 定时器模式选择寄存器:

①、将TMOD寄存器中的高四位清0(定时器1)

②、将TMOD寄存器中的bit5置1,bit4清0,代表定时器1工作在8位自动重装载模式

实际只有TL1在工作:TL1溢出后,再将TH1里的数,装到TL1里

---------------8 位自动重装载模式的核心优势:规避 "软件重装初值" 的误差-----------

---------------"波特率稳定"------------------------------------------------------------------------

③、将定时器初值写入到TL1和TH1

256 - 2 * 12M / 32 / 2400 / 12 = 256 - 26 =230(定时器初值)

④、将TCON寄存器中的bit6置1,代表允许定时器1开始计数

TMOD
TCON

(3)中断寄存器相关配置:

IE中断控制寄存器:

①、将IE寄存器中的bit7 EA位置1,代表CPU能够响应所有中断

②、将IE寄存器中的bit4 ES位置1,代表允许串口1中断产生中断

练习--------串口初始化

SBUFER 缓冲区

练习--------发送"hello world!"


PS:*p++ 优先级

片外RAM

练习----发数组等........

当需要 "异步、实时、高效地处理串口数据",

且避免 CPU 因 "轮询等待数据" 浪费资源时,就必须使用 串口中断函数

在串行通信的方式 0 中,数据格式为8 位同步移位寄存器方式 (无起始位、停止位,仅传输 8 位数据)。当串行口接收到 ** 第 8 位(即一帧数据的最后一位)** 时,内部硬件会自动置位接收中断请求标志位RI=1,向 CPU 请求中断,表明一帧 8 位数据已接收完成。

而其他方式(方式 1、2、3)因数据帧包含起始位、停止位等(如方式 1 是 10 位:1 起始位 + 8 数据位 + 1 停止位),所以RI置位的时机是 "接收到停止位的中间时刻",与方式 0 的 "纯 8 位数据帧" 逻辑不同。

十、主从应答:

  • 主机:拥有对通信绝对控制权,通信都是由主机发起

  • 从机:无法直接发起通信,只能根据主机下发的指令完成对应操作

累加校验和----- 16E---取6E 取低两位
强制无符号转换,避免符号扩展

练习-------------------主机发送指令,从机解析主机发送的指令并获得功能码,根据功能码完成对外设的控制,并回复应答给主机

(功能码01:LED控制 功能码02:数码管控制 功能码03:蜂鸣器控制)

相关推荐
国科安芯20 小时前
航天器多路并联大功率电源系统设计与ASP4644均流特性分析
单片机·嵌入式硬件·fpga开发·安全性测试
茯苓gao1 天前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
梁朝辉1 天前
STM32H750VBT6中ADCINP与INN什么区别
stm32·单片机·嵌入式硬件
省四收割者1 天前
一文详解信号完整性(1)
python·嵌入式硬件·数学建模·信息与通信·信号处理·智能硬件
崇山峻岭之间1 天前
单片机无感FOC驱动之ADC
单片机·嵌入式硬件
Ligocious1 天前
1.点亮一颗小小的LED
单片机·嵌入式硬件
KaifuZeng1 天前
通信与接口协议面试八、CAN通信
单片机·嵌入式硬件·面试·通信与接口协议
智源单片机设计1 天前
基于单片机的直流电机双闭环调速系统设计
单片机·嵌入式硬件
KaifuZeng2 天前
通信与接口协议面试一、基本概念
嵌入式硬件·通信与接口协议
wuyk5552 天前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机