嵌入式-各个通讯协议
2022-03-05 14:58:35 22 举报
AI智能生成
包含CAN协议、modbus协议、网络协议等
作者其他创作
大纲/内容
SPI
通信
总线
MISO
主设备输入/从设备输出引脚
MOSI
主设备输出/从设备输入引脚
SCLK
时钟信号线
片选
CS
从设备选择信号线/片选信号线
IIC
待补充
UART
待补充
CAN
第一章
概况
总线连接<br>优点:使用的线缆数量<=n+1<br>
历程:<br>为了减少线缆数量而开发了CAN-bus协议<br>现在每辆汽车上几乎都有CAN-bus<br>
通信层次<br>
物理层
不同的CAN-bus协议,仅物理层不同
CAN收发器<br>
物理信号转逻辑信号,逻辑信号转为差分电平信号<br>
信号电平<br>
2种标准,高度和低速
高速
显性0<br>
H:3.5V L:1.5V<br>
隐性1<br>
H:3.0V L:3.0V<br>
低速
显性0<br>
H:4V L:1V<br>
隐性1
H:1.75V L:3.25V<br>
单节点信号<br>
开关断开,<br>高电平;<br>开关闭合,<br>低电平;<br>
线“与”原理
多个节点接到总线上,只要一个节点为低电平,则总线就为低电平;<br>所有节点都为高电平,总线才为高电平;<br>
同步和异步
同步串行
按照时钟信号的沿来采样数据<br>
异步串行
按照约定的频率进行采样,受波特率影响
如何消除波特率误差带来的影响?
同步
将信号跳变沿作为<br>同步的时刻,误差会限制在两个跳变沿之间
如果多个相同的信号,一直没有跳变沿,误差就会不短了累积,怎么处理?<br>
规定信号位相同时,每五个信号位插入一个相反位,产生跳变沿,强制进行一次同步;
传输速率与距离
关系成反比,距离<40m,速率还能保持在1M上,距离<130m,速率保持在500k以上;<br>
数据链路层
通信帧<br>
数据帧
帧起始
单个显性位组成
仲裁段<br>
标准格式
ID[0:10] 11位ID<br>
RTR 远程帧发送标识位,显性,1bit<br>
拓展格式
ID[0:10]<br>
SRR<br>
替代远程帧请求为,显性,1bit
IDE <br>
识别符拓展位,标准显性,拓展隐性,1bit<br>
ID[11:28] 和前11位共同组成28位ID<br>
RTR 远程帧发送标识位,显性,1bit<br>
总线仲裁<br>
优先级:帧ID越小越高<br>数据帧大于远程帧<br>标准帧大于拓展帧<br>
控制段
标准格式<br>
IDE
识别符拓展位,标准显性,拓展隐性,1bit<br>
r0
保留位,各占1bit,隐性电平填充<br>
DLC
数据段的长度码,占4bit;
BCD编码,范围0~8
拓展格式
r1
相同
r0
相同<br>
DLC<br>
相同<br>
数据段<br>
byte0~byte7<br>
短小的优势:实时性好,抗干扰性强<br>
CRC段
校验
ACK段
ACK槽
发送节点:发送1个隐性电平<br>
帧起始到CRC段都没错,将发一个显性电平<br>
ACK界定符
1个隐性电平
帧结束
7个连续的隐性位组成<br>
远程帧
无数据段,且RTR位为隐性,1bit;<br>其他段分类和数据帧一样<br>
和数据帧对比的区别<br>
……
错误帧
CAN-bus错误类型
CRC错误<br>
发送节点计算的和接受到的CRC值不同
格式错误<br>
数据帧格式和合法格式不同
应答错误<br>
发送节点在ACK阶段未收到应答
位发送错误<br>
发送节点发送时总线与发送节点电平不同<br>
位填充错误<br>
线缆传输信号违反“位填充”规则
结构
错误标志
主动错误:6个显性位;被动错误,6个隐性位
错误界定符<br>
8个隐性位
3种状态以及行为
主动错误
被动错误
总线关闭
过载帧
结构<br>
过载标志
过载界定符
帧间隔
作用<br>
隔开数据帧和远程帧<br>
应用层
……
第二章
CAN节点电路
CAN收发器
物理信号逻辑信号转换<br>
CAN控制器<br>
解析协议
MCU
功能电路
第三章
编程基础<br>
第四章
待补充
modbus
接口
RS232转485
485+
485-<br>
RS232
RXD
TXD
GND
格式
从机地址<br>
功能码
01读线圈
03读保持寄存器
04读输入寄存器
05写单个线圈
06写单个寄存器
15写多个线圈
16写多个寄存器
数据地址
数据
校验位
网络协议
TCP/IP<br>
UDP
HTTP <br>
HTTPS
SNMP
NTP
SNTP
DNS<br>
其它协议<br>
电总协议<br>
蓝牙协议
Wifi协议<br>
Type-C协议<br>
Zigebee
收藏
0 条评论
下一页