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

嵌入式单片机各种通信(UART/RS232/RS485/I2C/CAN/ SPI)

一、UART串口

USART(同步/异步收发器)和UART(异步收发器)。

空闲时,数据线为高电平。

发生的数据格式一般为:

第一位起始位(低电平开始)-> 中间8位数据位-> 第十位终止位(高电平结束)

PS:发送每一位都会停留一个固定的时间长度。

串行通信:

数据传输方式为逐位传输,传输线少,成本低,但数据的传输控制较复杂。按照实现数据同步的方式,可以分为同步串行和异步串行两种。

并行通信:

多位数据同时传输,传输控制简单,传输速度快,但是在长距离传输时硬件成本较高。

同/异步:

同步总线:指互联的部件或设备均通过统一的时钟进行同步,即所有的互联的部件或设备都必须使用同一个时钟(同步时钟),在规定的时钟节拍内进行规定的总线操作,来完成部件或设备之间的信息交换。

异步总线:指没有统一的时钟而依靠各部件或设备内部定时操作,所有部件或设备是以信号握手的方式进行,即发送设备和接受设备互用请求(request)和确认(acknowledgement)信号来协调动作,总线操作时序不是固定的。因此,异步总线能兼容多种不同的设备,而且不必担心时钟变形或同步问题使得总线长度不受限制。

单工、半双工、全双工:

单工:一方发送一方接收,只有一条传输线。

半双工:两方都能收发,只有一条传输线,不能一起发送接收。

全双工:两方都能进行收发,并且能一同发送接收,有两条传输线;UART为全双工。

波特率:

串口异步通讯中由于没有时钟信号,所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码。

波特率是指每秒钟传送二进制数码的位数,以bit/s(bps)为单位。

常用的波特率有: 9600、 19200、 38400、 57600和115200;

波特率为115200, 表示每秒传输115200位,且每一位数据在数

据线上持续时间为Tbit = 1/115200 ≈ 8.68us。

二、RS232/RS485

为了提高串口通信的稳定性和距离,制定了RS232标准。

在串口通信的基础上增加电平转换芯片,如MAX232,就可以把TTL电平转为RS232电平,通信距离一般可达到15米。

RS232为负逻辑电平逻辑1为-3V ~ -15V,逻辑0为3V ~ 15V。

RS232为单端(非平衡)点对点的通信,传输速率一般在20Kbit/s,工作模式为全双工串行通信。

RS485是在串行通信的基础上增加了485转换芯片,将输入的串口信号转为差分信号;通信距离一般可达到1000米。

RS485为差分(平衡),1发32收,传输速率为10Mbit/s,多点对多点,2线制半双工通信。

RS485为正逻辑电平,逻辑1两线电压差为2~6V,逻辑0两线电压差为-2V ~ -6V。

485转换芯片引脚与单片机相接一般有4个,分为RE(接收允许)、DE(发送允许)、RO(接收器输出)和DI(发送器输入 一般来自MCU)。

电路上一般会接入120欧的终端电阻和3.9K欧的偏置电阻,确保静默下为高电平。

三、Modbus通讯协议

Modbus是一种一主多从的通信协议,基于RS485定制的应用层通信协议。

基于Modbus链路的通信协议有Modbus-RTU和Modbus-ASCII。

在Modbus协议中,主设备向从设备发送报文有两种形式

1.单播模式:主设备向一个从设备发送报文,从设备接收报文并处理完毕后向主机返回响应报文

2.广播模式:主设备向所以网络上的从设备发送报文,从设备接收处理后不要求返回响应;广播模式发送地址为0.

在Modbus协议中,主设备没有地址,从设备有且只有一个地址(1~127)。

如果从设备响应错误时,功能码则返回给主设备的功能码最高位置一。

Modbus-RTU消息帧格式

起始位 -> 地址(8位)-> 功能码(8位) -> 数据(n个8位) -> CRC校验(16位) -> 结束符

Modbus寄存器

Modbus寄存器用于存放数据

Modbus常用功能码响应

四、I2C(集成电路互相通信总线)

原理

有主从设备之分,主设备通过从设备的设备地址进行数据的收发;与从设备有同一个时钟线进行调整与从设备的通信速度。

I2C通信时,主机发送(写)由主机操作SDA,接收时(读)由从机操作SDA。

主设备主导通信,能主动读取从设备的数据,而从设备只能等待主机的读写操作,从设备不能自己独立操作总线。

主设备向从设备发送8位数据后,从设备如果成功接收,则会向主设备回应一个应答信号(低电平),此时SDA由从设备操作,因为外接上拉电阻,所以默认状态下是高电平,所以应答信号是低电平;如果没有回应,则表示接收有误。

主设备              <------------------------8位数据--------------------              从设备

    -------------第九位应答位---------------------- >

同理,从主设备向从设备写也是一样。

I2C通信如何判断起始位停止位

起始位:在SCL的工作期间,当SDA从1变0(下降沿)表示起始位,代表SCL接下来的第一个工作期间是第一个工作期间(这里有点绕)。

停止位:通信结束后再用SCL的一个工作期间让SDA从0变1(上升沿)。

I2C通信的数据帧格式

起始位(下降沿)-> 8位数据 -> 应答位 -> 停止位(上升沿)

主机发送过程:

起始位->数据位->从机应答->数据位->从机应答..........

从设备向主设备发送数据过程:

起始位->数据位->主机应答->数据位->主机应答->.....->主机发送停止位

从设备如何判断是写/读操作

I2C通信规定,第一组数据8位的最低位为1时是读操作为0时是写操作。

从设备如何判断读/写那个寄存器

I2C通信规定,第二组数据8位当作指针来使用(确定读写哪一个寄存器),如果是第四个寄存器,则第二组数据为0000 0100(十进制4转为二进制)。

第一组8位数据,左边7位为从设备地址,表示要操作的从设备地址。

ps:方便阅读,现在规定S为起始位、A为应答位、P为停止位;

主机向从机写数据:

S->0001 0100(设备地址和写操作)->A->(具体操作的寄存器)->A->DATA*8->A->P

主机向从机读数据(要先发一个写操作):

S->0001 0100->A->(具体操作的寄存器)->A->S->0001 0101->A->DATA*8->A->P

五、SPI

SPI与I2C一样是板级总线,有主从设备之分,但没有采用地址的概念,而是由硬件选择总线上的设备(所以占用的IO口多);工作模式为全双工。

SPI通信的硬件引脚

CE:收发使能引脚

CSN:SPI片选

SCK:时钟线

MOSI:SPI主机输出,从机输入

MISO:SPI主机输入,从机输出

SPI通信格式

SPI通信中,在SCK的上升沿或者下降沿(具体看从机的协议)时数据才有效,有多少个上升/下降沿就有多少个信号。

一般写指令为:

起始位->操作码->寄存器地址->数据

一般读指令为:

起始位->操作码->寄存器地址

SPI和I2C异同

同:

1.都是串行、同步的方式

2.采用TTL电平

3.有主从设备之分

异:

1.I2C为半双工,SPI为全双工

2.I2C有应答机制,SPI没有

3.I2C通过总线广播来寻址,SPI通过使能引脚来寻址。

六、CAN总线

CAN总线分为ISO 11898(高速CAN)和ISO 11519(低速CAN)标准,高速CAN通信传输速率为125kbit/s~1Mbit/s,低速CAN传输速率为125kbit/s以下;通信模式为半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序;主要用于多主机互相通信。

数据分为11位标准格式和29位扩展格式的报文ID,用于区分消息功能,同时确定优先级,一般ID小的先发。

通信分为广播式(全部设备都会接收)和请求式(只有收到接收方发的请求,发送方才会发送)

CAN电路图

高速CAN电平逻辑

逻辑1:2线均为2.5V,电压差为0(隐性电平)

逻辑0:CAN_H = 3.5V,CAN_L = 1.5V,两线电压差为2V(显性电平)

低速CAN电平逻辑

逻辑1:CAN_H = 1.75V,CAN_L = 3.25V,两线电压差为-1.5V(隐性电平)

逻辑0:CAN_L = 4V,CAN_L = 1V,两线电压差为1V(显性电平)

应用场景

高速CAN总线网络被应用于汽车动力与传动系统,是闭环网络,总线最大长度为40米,两端各有120欧的终端电阻;低速CAN总线网络被应用于汽车车身系统,2根总线是独立的,开环网络,两根总线各串联一个2.2k欧电阻。

CAN控制器和收发器

CAN节点硬件构成有两种,一种是由MCU和控制器收发器组成;一种是集成了CAN控制器的MCU和CAN收发器组成(STM32F1自带控制器)。

CAN控制器:

一种实现“报文”和符合CAN规范的“通行帧”之间互相转换的器件与CAN收发器相连。

STM32F1内部集成的控制器叫BxCAN。

控制器内部原理:

BxCAN三种工作模式:初始化、正常、睡眠。

CAN收发器:是控制器与CAN物理总线的接口,将控制器的逻辑电平转为差分电平并发送。

http://www.dtcms.com/a/578473.html

相关文章:

  • 特斯拉股东大会前瞻,Optimus利好已至
  • 网站宣传的方法主要有2.0网站线上建设什么意思
  • iSCSI 磁盘扩容后节点不刷新容量的问题解决(StarWind + Linux)
  • Linux——web服务
  • 做淘宝客网站哪个好用wordpress文章图片保存到本地
  • 光子精密闪测仪 为中国制造提供更可靠、更高效、更懂工艺的尺寸测量方案
  • 上海设计师网站有哪些个人网站怎么设计
  • 【数据结构】非线性结构——树、堆,散列表和图
  • 怎样在百度上建网站南昌模板建站公司
  • 锐旗 天梯网站建设重庆seo网站系统
  • 学院校园网网站建设情况手机行业网站
  • 江苏恒健建设集团有限公司网站校车网站建设
  • 玉林建设工程信息网站专门做纪录片的网站
  • 启动服务上FUNASR 服务 ws 连接
  • 一些实用的linux指令
  • 操作系统第一章学习
  • 超链接查看太麻烦,Excel怎么快速提取单元格内的超链接地址?
  • 大学生课程设计网站seo网站排名优化快速排
  • React Native Community CLI命令执行 | CVE-2025-11953 复现研究
  • 大厂做网站shijuewang如何用ps做创意视频网站
  • 公司设计网站电商毕业设计作品
  • 如何利用天燃气分析仪优化管网能效与安全
  • 考研408--计算机网络--day3--通信基础信道编码与调制
  • 许昌市建设信息网站win7电脑做网站
  • 7.无监督学习
  • 深圳软装公司排名前十强广州各区正在进一步优化以下措施
  • 电子商务网站开发公司做网站应注意什么
  • 网站建设技术服务公司陕西省国家示范校建设专题网站
  • Windows运行Kafka
  • 在阿里云备案网站通过上海虹口建设局官方网站