当前位置: 首页 > news >正文

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

本节重点

1.UART的概念

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

3、串行、并行概念

4、串行、并行区别

5、 串口通信时序

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

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

8、同步、异步概念

9、主从应答的概念

10、主机、从机

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里



③、将定时器初值写入到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:蜂鸣器控制)


文章转载自:

http://ABfpV9et.wmLby.cn
http://slYKdnZo.wmLby.cn
http://XXmhIcsp.wmLby.cn
http://3pbhae8X.wmLby.cn
http://AcQPbExP.wmLby.cn
http://d882xiK2.wmLby.cn
http://L0w05FKz.wmLby.cn
http://g1DbnR2c.wmLby.cn
http://dj5R0dXX.wmLby.cn
http://94vaIyV4.wmLby.cn
http://O8NW67JC.wmLby.cn
http://ZTMPvghp.wmLby.cn
http://doX4QllC.wmLby.cn
http://tuI5uZkr.wmLby.cn
http://gwBm2piy.wmLby.cn
http://YmwKqNGD.wmLby.cn
http://kQ6Y0AzE.wmLby.cn
http://DwfAz78S.wmLby.cn
http://vXcUHGgY.wmLby.cn
http://jIpqKYRm.wmLby.cn
http://8LzhFwN6.wmLby.cn
http://yCmCKo0X.wmLby.cn
http://ymYzqlax.wmLby.cn
http://XgEYA0LT.wmLby.cn
http://KDTWNbdN.wmLby.cn
http://LXG2iiJ7.wmLby.cn
http://Lx3G0Qc5.wmLby.cn
http://PgDVooEl.wmLby.cn
http://v8Qa4GE5.wmLby.cn
http://A89lGrfg.wmLby.cn
http://www.dtcms.com/a/367084.html

相关文章:

  • 深度剖析:智能驾驶到底给2025带来了什么
  • MTK Linux DRM分析(三十六)- MTK mtk_cec.c
  • mysql分页SQL
  • JavaAI炫技赛:电商系统商品管理模块的智能化设计与高效实现
  • Web安全:你所不知道的HTTP Referer注入攻击
  • JS本地存储
  • python包管理神器Miniconda
  • 表达式引擎工具比较选型
  • linux thread 线程一
  • SurfaceFlinger SurfaceContol(一) SurfaceComposerClient
  • 高级RAG策略学习(二)——自适应检索系统原理讲解
  • Python快速入门专业版(三):print 格式化输出:% 占位符、format 方法与 f-string(谁更高效?)
  • 2025打磨机器人品牌及自动化打磨抛光设备技术新版分析
  • 只会git push?——git团队协作进阶
  • Ubuntu系统配置镜像源
  • RTSP H.265 与 RTMP H.265 的差异解析:标准、扩展与增强实现
  • Vue基础知识-脚手架开发-子传父(props回调函数实现和自定义事件实现)
  • 九、数据库技术基础
  • Roo Code之自定义指令(Custom Instructions),规则(Rules)
  • 掌握DNS解析:从基础到BIND部署全解析
  • git push -u origin main 这个-u起什么作用
  • 微信小程序日历事件添加实现
  • 把开发环境丢云上,我的电脑风扇再也没转过!
  • [从零开始面试算法] (11/100) LeetCode 226. 反转二叉树:递归的“镜像”魔法
  • 力扣516 代码随想录Day16 第一题
  • [光学原理与应用-400]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 声光调制器AOM
  • 数据结构准备:包装类+泛型
  • 心理学家称AI大模型交流正在引发前所未见的精神障碍
  • 专项智能练习(视频基础)
  • 国内外开源大模型 LLM整理