28335串口传输float数据问题
据我所知,共用体是最方便的方式 ,但是我这样做后,实际输出的并不是按照IEEE754格式的四个十六进制数,比如8.25,应该是 0x41 0x08 0x00 0x00,但是我输出的是0x00 0x04 0x06 0x70,有人说是TI的DSP只能用字对齐地址寻址,我并不是很明白,请问有高手愿意不吝赐教么?给我指明该怎么改,或者发一下成功跑过的程序
typedef union
{
floatf;
unsigned char u;
}Float2Byte;
Float2Byte m1;
。。。。。。
m1.f=8.25;
for(i=0;i<4;i++)
{
m=m1.u;
scic_xmit(m);
} 你就不需要深究那么多,机器传输的时候 反正就是8位数据传输就好了 ,等对方接收完重新解析合并数据就完了! wang168506 发表于 2015-5-11 16:03
你就不需要深究那么多,机器传输的时候 反正就是8位数据传输就好了 ,等对方接收完重新解析合并数据就完了 ...
但是没法分啊 分成的4部分 出来后不对啊 dicktime 发表于 2015-5-11 16:06
但是没法分啊 分成的4部分 出来后不对啊
串口调试助手输出的4个16进制数据都不对 我担心上位机肯定也不对啊 你仔细想想 实际上浮点型是因为读取方法不同而成了浮点,实际上在存储空间里边的存储原理是一样的,你直接按数据传输出去,对面接收后直接解析出来不就完了嘛?解析不对,那你自己看看先传的高位还是低位,接收的时候要倒过来! wang168506 发表于 2015-5-11 16:09
你仔细想想 实际上浮点型是因为读取方法不同而成了浮点,实际上在存储空间里边的存储原理是一样的,你直 ...
但是。一面是DSP 一面是PC 浮点读取方式大概也会不同吧。 先写个简单的上位机程序测试一下再说。
行了更好,不行了再想办法。 dicktime 发表于 2015-5-11 16:30
但是。一面是DSP 一面是PC 浮点读取方式大概也会不同吧。
大哥,你通信是要上位机软件的嘛 wang168506 发表于 2015-5-11 16:41
大哥,你通信是要上位机软件的嘛
恩 我是小白的说 -。= 在做毕业设计
我换了个方式~
比如float型数据111.111111 乘100存到int型里,然后移位分两次发
这样除了精度只保存了两位小数 而且有范围限制外 都还行 不过能满足我毕设要求啦~ 只能说明你的floattobyte有问题吧
你在ccs下查看变量8.25怎么存的
上位机收到后 有没有 bytetofloat? 注意大小端和转换方式 本帖最后由 哈利 于 2015-5-15 15:35 编辑
按照字取址,指的是:每个指针指向的都是一个字,指针加一呢就是指向下一个字,也就是跳过两个字节. 程序应该没问题啊。。。。自己设断点看内存吧。。
页:
[1]