单片机常见通讯方式理解与总结

单片机常见通讯协议理解与总结

协议类型USARTI2CSPICAN
最大通信速度fPCLK/16400kHzfPCLK/21Mbps
连接单元数327/10位地址NSS片选引脚数量理论无限
总线类型手拉手串联树型1对多树型1对多环形总线
数据线RX,TXSDA,SCLSCK,MOSI,MISOCAN_H,CAN_L
多机通讯协议仲裁协议仲裁硬件片选信号硬件仲裁
常用芯片MAX485TJA1050

具体实现

1、USART

USART全称全双工通用同步/异步串行收发器(Serial Communication)


USART没有专门的时钟线,RX作为接收引脚,TX作为发送引脚,通信的波特率提前给定,通信数据帧如下图所示,主要包括:起始位、数据位、可选择校验位、停止位。
空闲时数据线呈现高阻态,当有数据传输时,数据线按照既定频率,依次发送数据帧。
USART发送数据帧
RS232硬件接口,全双工,信号电平值较高+/-12V, 信号共地传输,传输速率20Kbps (不知道限制此速率的因素),点对点通信
RS485硬件接口,半双工,TTL电平+/-5V,信号差分传输,10m以内最高传输速率可以达35Mbps。推荐使用总线型网络,RS485推荐总线类型
通信速率高且传输距离远时,硬件设计的要求非常,需要计算相关参数。使用相应的482芯片作为收发器,常用接法如下。PA1为模式控制引脚,高电平->发送使能,低电平->接收使能。
485芯片常用接法
根据数据手册,MAX系列芯片支持最高20Mbps的通信速率,手册链接
CH340是USB<=>串口芯片,支持最高20Mbps的通信速率,使用说明链接

2、I2C

I2C全称串行总线收发器-(Inter - Integrated Circuit)


I2C有两根信号线,SCL时钟线,SDA数据线,分为主从模式,主机产生SCL信号,并且使用SDA数据线收发数据;从机被动应答,当接收到的广播地址指向自己就与主机建立连接,进行通讯。
I2C通讯信号

一帧数据主要包括:传输起始信号(S)、从机地址信号(SLAVE_ADDRESS)、传输方向选择位(R/W)、数据位(DATA)、应答为(ACK/NACK)、停止传输位( P)。如下图所示
I2C通信帧结构
连接方式,环形总线,如下图所示,不需要额外通讯芯片,但是两根信号线需要上拉。
I2C总线结构

3、SPI

SPI全称串行外围设备接口-(Serial Peripheral Interface)


SPI有GND,SCK,MISO,MOSI,所以的设备都连接在这三条总线上,SCK提供时钟信号,MOSI中设备输出/从设备输入引脚,MISO主设备输入/从设备输出。通信数据信号线只包含数据,为8位或者16位可配置。先是片选信号NSS选择对应设备,然后SCK产生时钟信号,在MOSI或者MISO数据线上传输数据。
SPI时序图
时序图如下
在这里插入图片描述

另外,SPI有四种采样模式,可以通过配置CPOL和CPHA选择
SPI采样模式
SPI的总线模式如下图所示
SPI连接方式

4、CAN

CAN全称控制器局域网-(Controller Area Network)


CAN使用两根信号线CAN_H和CAN_L,使用差分信号进行异步通讯。标准数据帧如下所示。
CAN的标准数据帧

CAN的短距离闭环高速总线通信网络。
CAN高速网络
CAN通过ID的优先级来帮助进行仲裁,当在总线空闲状态下,同时有两个以上的设备申请使用总线,就会判断ID的优先级,优先级高的先发送,优先级低的保留,等待数据发送完毕后,再次进行上述操作。

参考

腾讯云:【通信专栏】STM32单片机/485通信详解
21ic电子技术论坛:论RS485如何实现多主通信
STM32F4xx中文参考手册
[野火EmbedFire]《STM32库开发实战》

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值