嵌入式 - 硬件: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:蜂鸣器控制)

相关推荐
今天阳光明媚吗4 小时前
STM32启动模式配置
stm32·单片机
@ZzHhXx5 小时前
嵌入式学习---(单片机)
单片机·嵌入式硬件·学习
世微 如初5 小时前
精准掌控功率流动:AP3465 同步降压芯片的设计艺术
单片机·嵌入式硬件
CC呢5 小时前
基于单片机智能水龙头/智能洗漱台设计
stm32·单片机·嵌入式硬件·单片机设计
彭祥.5 小时前
Mid-360 雷达获取数据并使用 Open3d+python 进行可视化
单片机·嵌入式硬件
芯岭技术5 小时前
XL5300测距模组与XL32F001/PY32F030单片机测距 最大7.6M距离测量
单片机·嵌入式硬件
m0_571372825 小时前
关于嵌入式学习——嵌入式硬件3
嵌入式硬件·学习
不会留有遗憾6 小时前
【FPGA】单总线——DS18B20
stm32·单片机·嵌入式硬件
hexiaoyan8277 小时前
光纤加速的板卡设计原理图:基于6U VPX XCVU9P+XCZU7EV的双FMC信号处理板卡
嵌入式硬件·fpga开发·光纤加速板卡·国产化板卡·xcvu9p板卡·xcvu9p