单片机串行通信
发布日期:2021-05-08 01:21:00 浏览次数:22 分类:精选文章

本文共 1259 字,大约阅读时间需要 4 分钟。

串行通信与C51单片机串行口控制器

串行通信是计算机与外部设备之间进行数据传输的重要方式之一,与并行通信相对,它以单个比特(位)为单位进行数据传输。串行通信可分为单工、半双工和全双工三种方式,常用的为半双工模式。串行通信的速度可通过波特率(bps)来衡量。

串行通信又可分为同步通信和异步通信两种:

  • 异步通信:以字符或字节为单位组成数据帧进行传输。每个数据帧包含起始位、数据位、可编程校验位和停止位。
  • 同步通信:以数据块为单位进行连续传输,首次发送时需发送同步信号,后续数据块不再包含同步信号。

C51单片机串行口控制器

C51单片机内置一个可编程的全双工串行通信接口,可用于通用异步接收/发送器或同步位移寄存器。该接口支持8、10、11位数据格式,并通过RXD(P3.0)和TXD(P3.1)与外界通信。接口主要由以下组件组成:

  • SBUF:数据缓冲器
  • SCON:串行控制寄存器
  • 接收位移寄存器发送控制器接收控制器
  • 定时器T1与单片机总线相关

SFR描述

串行口控制寄存器(SCON)由以下位组成:

  • SM0/SM1:决定串行通信工作方式
  • REN:允许/禁止接收控制位
  • RI/TI:接收/发送完成标志位
  • RB8/TB8:扩展数据位

工作方式

串行口工作方式分为0、1、2、3四种:

  • 工作方式0:不用于串行通信,主要用于扩展接口。
  • 工作方式1:用于点对点通信,传输10位数据。
  • 工作方式2:支持双机通信,传输11位数据。
  • 工作方式3:用于多机通信,结合了工作方式1和2的优点。

工作方式详解

工作方式1

工作方式1用于点对点通信,数据传输为10位。通信方式为3线式,接口连接为RXD-TXD-GND。波特率可通过T1定时器设置,计算公式为:

[ \text{波特率} = \frac{f_{osc}}{12 \times (2^n - \alpha)} \times \frac{2^{SMOD}}{32} ]

其中,( n ) 为SMOD位设置的波特率分频,( \alpha ) 为晶振周期。

工作方式2

工作方式2用于双机通信,数据传输为11位。通信方式为4线式,接口连接为RXD-TXD-GND-RXD。通信时钟由T1定时器驱动,波特率计算公式为:

[ \text{波特率} = \frac{2^{SMOD}}{64} \times f_{osc} ]

工作方式3

工作方式3用于多机通信,结合了工作方式1和2的优点。通信过程中,主机需向所有从机发送地址信息,地址信息的第九位为1,数据信息的第九位为0。

从机在接收地址信息时,由于RB8=1,会触发RI=1中断。在中断程序中,从机对比信息地址与自身地址,若匹配设定SM2=0,否则设定SM2=1。数据信息的第九位为0,地址不匹配的从机(SM2=1)会拒绝接收数据。

总结

串行通信是计算机与外部设备之间重要的数据传输方式,C51单片机的串行口控制器通过灵活配置和多种工作方式,支持多种通信场景。理解串行通信原理及单片机控制寄存器功能,是实现高效串行通信的关键。

上一篇:ardupilot arducopter 遥控器模式对应关系
下一篇:ArduSub SITL Ubuntu mavros环境搭建

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年03月25日 07时02分27秒