- 博客(7)
- 收藏
- 关注
原创 Modbus RTU学习笔记(该笔记还在完善中)
Modbus是对物理层RS485或者串口中对协议帧的规范。有两种串行传输模式被定义: RTU 模式 和 ASCII 模式。其中ASCII使用的很少,因为传输效率很低,所以支持Modbus协议所有设备必须实现 RTU (Remote Terminal Unit)模式。ASCII 传输模式是选项。
2024-01-24 14:43:12
666
原创 CAN总线报文解析----信号矩阵
如下图是一个CAN总线上得ABS协议应用,我们都知道在CAN总线的标准协议里,一个数据域的最多字节是8byte,也就是8*8=64bit;每一个bit都包含了一个模块的不同的信息,如下图所示。将64bit展开得到一张二维数据状态表(不管咋子UDS或者CAN标准来说一般来说一帧数据都会定为8 byte 不足的也会让你补齐为0xAA或者0x5A)格式的起始位是40,找到上图中40的位置,往前推13个bit的长度。该报文的ID是187,上述四条报文的信号是处于同一条信息报文中的64bit中。
2024-01-21 23:28:37
2295
2
原创 关于C语言能否使用static 修饰结构体中的变量
毫无疑问你用sizeof(Temp)得到的结果是8,int 占4字节 char占1字节,结构体对齐原则导致char的1字节向结构体成员的最小整数倍对齐。但是代码转换成如下呢?结果还是8,所有用这个结构体声明的对象都共享这个c变量,其中一个对象更改其中的数据,会导致另外一个对象的c得到改变。,而这个结构体仅仅只是一个声明,不会为这个声明而分配一个变量。static 修饰的变量在编译阶段要分配内存。如果用sizeof求它的大小呢?但是学过C++的朋友都知道。答案是编译会报错,因为。在C语言中这是不允许的。
2024-01-21 18:45:45
1012
原创 关于IIC的时钟延展
比如IIC主机发送了去读从机的一个Command,从机接收到command之后,从机有权力去持续拉低SCLK,直到主机读取的数据准备完毕然后释放时钟,等到时钟高电平的时候发送数据。如果现在从机需要发送的数据计算很复杂,需要很长的时间计算(比如一个浮点数),如果主机的时钟周期到了,你还没有计算完成并且去主动发送,那么这个时候主机得到的数据将会是错误的,等到从机准备去发送的时候,SCLK的周期已经过去,那么就发送不了数据了(因为IIC的数据。让其在低电平的时候去准备数据。是低电平转为高电平的时候。
2023-09-06 15:27:37
2380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人