上位机与下位机的交流:编码与字节序的实验

本文记录了一次实验,验证了上位机(PC)与下位机(STM32单片机)在浮点数编码和字节序上的兼容性。实验通过USB接口发送浮点数的二进制表示,通过串口通信进行校验,确保两者使用相同的编码方法和字节序。实验结果显示,PC与STM32浮点型变量编码一致,均为IEEE 754标准,且大小头相同。
摘要由CSDN通过智能技术生成
上位机与下位机的交流:编码与字节序的实验

下午在南区的讨论班居然提前结束了,而且,到预定吃晚饭的时候还剩两个半小
时,按包师弟的说法,真是个尴尬的时间啊。干做两个半小时,太无聊,如果赶
回所编程序,似乎时间又不太够的样子。我甚至想提议去暴走吧,但是想到冷得
冻肺子的天气,想到包师弟和我都正感冒,也就只是想想。

包师弟说:要编这程序的想法,真是搅得人...

我忘了他原来的措词,为避免他跑上来纠正,只好留了空白。大意是,热血沸腾
啊,夜不能寐啊之类的。现场表现是坐立不安。

好吧。

我们迅速用了十来分钟重新回顾了一下以前做过的计划,然后跑出来打车去所里。

1. 实验计划及基本原理

我们要做的是一个原型实验,确定STM32某芯片 (意法半导体) 的浮点型变量的编
码方案与PC[http://en.wikipedia.org/wiki/IEEE_754-2008]是相同的,且大小
头 (Endianness) 也是一样的。

几天来,包师弟已经把下位机的板子都整完了,昨天半夜的时候邮件说USB芯片
及驱动都整完了。

我们计划的技术路线是:由上位机通过USB向下位机发送一个浮点数的二进制形
式,下位机接收到以后,写到串口,然后用PC从串口读了显示出来。

如果PC下发的和最后显示的如果不一致,即可判定STM32与PC使用了不同的浮点
变量编码。我们希望一致。

为初学者同学们解释一下,这并非是为了验证PC-STM32-串口的链路是正常的,
而是为了验证上位机与下位机使用相同的方式表示一个浮点。

上位机就是PC,下位机是单片机或者ARM芯片的机器。

有的同学可能会问:难道上位机和下位机表示同一个数,会使用不同的方式,不
都是"3.14"这样的形式么?

可能不相同,一定不是"3.14"这样的形式。因为我们知道,计算机只接受二进
制,而"3.14"显示不是二进制。所以"3.14"是以一种有点诡异的方式表示的。

(1) 编码

在上位机中,一个浮点数,比如3.14,需要经过归一化、求符号、求指数、求有
效数字、求尾数……一系列的步骤,终于变成了下面的形式。

如果是32位系统,用十六进制表示就是: 4048F5C3

具体的步骤和4048F5C3中每个二进制位的含义略过,感兴趣的同学请去文后的两
个地址自行观赏。

我和包师弟打算用实验确认,上位机与下位机使用了相同的计算方法,或者说,
相同的编码方法。即,当上位机发送3.14的时候,它发送4048F5C3这四个字节;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值