完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近需要实现上位机与下位机的CAN通讯,现在双方苦于不知该如何定义数据格式,尤其是传输浮点数据~~
起初经过讨论直接根据个人主观意愿定义了双方的数据协议,,,其后,boss要求采用标准进行定义,,,无标准则视本程序无效!于是乎,查阅了IEEE 754标准,其浮点数标准格式分为三个部分:数符, 阶码(含阶符),尾数;考虑到程序中所需传输的数据并不大,因此决定使用短实数:符号位S(1位), 阶码(8位),尾数(23位),总位数(32位); CAN的数据域为64位,8个字节,按8位进行划分,分为data[0]…data[7],若按上述分析,则各对应关系应为: 符号位S --》data[0],阶码--》data[1],尾数--》data[2],data[3],data[4],即总共占用了5个字节。 显然,采用上述标准浪费了8位~~ 实际系统所需传输的浮点数范围为0~400,因此,实际传输数据为无符号浮点数,两个字节可表示的无符号 整型范围为0~65535,那么,大可以将获取到的浮点数乘以100,即范围扩大为0~40000,此时并没有超过 两个字节所能表示的范围,即:可以仅使用两个字节完成浮点数的传输, 那么,问题来了,是否有相关的标准可以参照呢?无标准则无话语权,项目数据传输这块将无法进行~~ 有做过CAN的各位前辈提供几个标准给小弟参考参考吧! |
|
相关推荐
1个回答
|
|
在实现上位机与下位机的CAN通讯时,确实需要遵循一定的数据格式标准。IEEE 754标准是一个广泛使用的浮点数表示方法,它确实可以作为参考。然而,需要注意的是,CAN协议本身并没有规定数据格式,所以在定义数据格式时,需要考虑到数据的可读性和一致性。
以下是一些建议,以帮助您定义CAN数据域的数据格式: 1. **数据域长度**:CAN数据域通常为64位,分为8个字节。在定义数据格式时,需要确保所有数据都能在64位内表示。 2. **数据类型**:在定义数据格式时,需要明确每种数据类型的长度。例如,整数、浮点数、字符串等。 3. **数据对齐**:为了提高数据的可读性和一致性,建议按照字节对齐数据。例如,如果一个浮点数占用32位,那么它应该从第0个字节开始,紧随其后的是下一个数据。 4. **数据顺序**:在定义数据格式时,需要明确数据的顺序。例如,先传输整数,再传输浮点数,最后传输字符串。 5. **数据标识**:为了区分不同类型的数据,可以在每个数据前添加一个标识符。例如,整数可以是0x01,浮点数可以是0x02,字符串可以是0x03。 6. **数据长度**:对于可变长数据(如字符串),需要在数据前添加一个长度字段,以表示数据的实际长度。 7. **校验和**:为了确保数据的完整性和正确性,可以在数据的末尾添加一个校验和。校验和可以是简单的奇偶校验,也可以是更复杂的CRC校验。 8. **浮点数表示**:根据IEEE 754标准,可以使用短实数(32位)表示浮点数。符号位(1位),阶码(8位),尾数(23位)。 9. **数据封装**:将所有数据封装在一个结构体中,以便于管理和传输。 以下是一个简单的示例,展示了如何定义CAN数据域的数据格式: ```c struct CAN_Data { uint8_t dataType; // 数据类型标识 uint32_t intValue; // 整数数据 float floatValue; // 浮点数数据 uint8_t stringLength; // 字符串长度 char stringData[]; // 字符串数据 uint8_t checksum; // 校验和 }; ``` 请注意,这只是一个示例,实际的数据格式应根据您的具体需求进行定义。在定义数据格式后,确保上位机和下位机都遵循相同的格式,以实现正确的通讯。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 16:05 , Processed in 1.260476 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号