dicktime 发表于 2015-5-11 15:48

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);
           }

wang168506 发表于 2015-5-11 16:03

你就不需要深究那么多,机器传输的时候 反正就是8位数据传输就好了 ,等对方接收完重新解析合并数据就完了!

dicktime 发表于 2015-5-11 16:06

wang168506 发表于 2015-5-11 16:03
你就不需要深究那么多,机器传输的时候 反正就是8位数据传输就好了 ,等对方接收完重新解析合并数据就完了 ...

但是没法分啊 分成的4部分 出来后不对啊

dicktime 发表于 2015-5-11 16:08

dicktime 发表于 2015-5-11 16:06
但是没法分啊 分成的4部分 出来后不对啊

串口调试助手输出的4个16进制数据都不对 我担心上位机肯定也不对啊

wang168506 发表于 2015-5-11 16:09

你仔细想想   实际上浮点型是因为读取方法不同而成了浮点,实际上在存储空间里边的存储原理是一样的,你直接按数据传输出去,对面接收后直接解析出来不就完了嘛?解析不对,那你自己看看先传的高位还是低位,接收的时候要倒过来!

dicktime 发表于 2015-5-11 16:30

wang168506 发表于 2015-5-11 16:09
你仔细想想   实际上浮点型是因为读取方法不同而成了浮点,实际上在存储空间里边的存储原理是一样的,你直 ...

但是。一面是DSP 一面是PC   浮点读取方式大概也会不同吧。

JY-DX-JY 发表于 2015-5-11 16:40

先写个简单的上位机程序测试一下再说。
行了更好,不行了再想办法。

wang168506 发表于 2015-5-11 16:41

dicktime 发表于 2015-5-11 16:30
但是。一面是DSP 一面是PC   浮点读取方式大概也会不同吧。

大哥,你通信是要上位机软件的嘛

dicktime 发表于 2015-5-11 17:43

wang168506 发表于 2015-5-11 16:41
大哥,你通信是要上位机软件的嘛

恩 我是小白的说 -。= 在做毕业设计
我换了个方式~
比如float型数据111.111111 乘100存到int型里,然后移位分两次发
这样除了精度只保存了两位小数 而且有范围限制外 都还行 不过能满足我毕设要求啦~

zhangmangui 发表于 2015-5-11 22:22

只能说明你的floattobyte有问题吧
你在ccs下查看变量8.25怎么存的   
上位机收到后   有没有 bytetofloat?

949155525 发表于 2015-5-12 12:17

注意大小端和转换方式

哈利 发表于 2015-5-15 14:29

本帖最后由 哈利 于 2015-5-15 15:35 编辑

按照字取址,指的是:每个指针指向的都是一个字,指针加一呢就是指向下一个字,也就是跳过两个字节.

哈利 发表于 2015-5-15 15:40

程序应该没问题啊。。。。自己设断点看内存吧。。
页: [1]
查看完整版本: 28335串口传输float数据问题