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

发布于:2025-09-05 ⋅ 阅读:(20) ⋅ 点赞:(0)

本节重点

1.UART的概念

2、单工、半双工、全双工概念

3、串行、并行概念

4、串行、并行区别

5、 串口通信时序

6、奇偶校验的概念/缺点

7、串口通信参数(波特率 数据位 停止位 校验位  2400  8 N 1)

8、同步、异步概念

9、主从应答的概念

10、主机、从机

目录

一、通信方式:

1.  单工

​编辑2.半双工 (I2C)

3.全双工(UART)

二、数据传输的顺序:

三、数据传输的形式:

串行:

并行:

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

五、串口通信时序:

六、奇偶校验:

​编辑奇校验:

偶校验:

七、串口通信参数:

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

九、串口寄存器配置:

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

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

SCON

PCON

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

TMOD

TCON

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

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

练习--------发送“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:蜂鸣器控制)


网站公告

今日签到

点亮在社区的每一天
去签到