TI中文支持网
TI专业的中文技术问题搜集分享网站

82335浮点数格式问题求助

做82335和上位机串口通讯,发送单精度浮点数,ccs中定义位float类型,想着DSP内部每4个连续字节存储一个浮点数,于是就按一下程序发送:

int i;
char *temp;
float testData=123.456;

float *curd=&testData;

temp=(char *)curd;

for(i=0;i<4;i++)
{ scic_xmit((int)(*temp));
temp++;
}

上面收到的数据不对。经过测试发现是直接读取连续4个字节这种方式出错。问:82335是按照4个连续字节存一个浮点数吗?刚才翻了翻以前的帖子介绍说内部的浮点有效数据只有24位。到底是怎么回事呢?

谢谢您的帮助

mangui zhang:

C2000的数据类型是比较复杂的     还有转换数据类型时是不是出问题了

请看 下图说明

做82335和上位机串口通讯,发送单精度浮点数,ccs中定义位float类型,想着DSP内部每4个连续字节存储一个浮点数,于是就按一下程序发送:

int i;
char *temp;
float testData=123.456;

float *curd=&testData;

temp=(char *)curd;

for(i=0;i<4;i++)
{ scic_xmit((int)(*temp));
temp++;
}

上面收到的数据不对。经过测试发现是直接读取连续4个字节这种方式出错。问:82335是按照4个连续字节存一个浮点数吗?刚才翻了翻以前的帖子介绍说内部的浮点有效数据只有24位。到底是怎么回事呢?

谢谢您的帮助

Yi Yang8:

回复 mangui zhang:

谢谢您和回复。先前的确没想到int 和 char 类型数据长度不一样。而且float 每个存储单元为16bits.修改了一下程序:

int i; Uint16 *temp; float testData=123.456; float *curd=&testData; temp=(Uint16 *)curd; for(i=0;i<2;i++) { scic_xmit((*temp)>>8); scic_xmit(*temp); temp++; }

接收端的数据仍然是错误的,我就很郁闷了。

思路很简单:temp取得testData的地址,然后发送4次。请您帮我看看,问题出在哪里?谢谢啊

做82335和上位机串口通讯,发送单精度浮点数,ccs中定义位float类型,想着DSP内部每4个连续字节存储一个浮点数,于是就按一下程序发送:

int i;
char *temp;
float testData=123.456;

float *curd=&testData;

temp=(char *)curd;

for(i=0;i<4;i++)
{ scic_xmit((int)(*temp));
temp++;
}

上面收到的数据不对。经过测试发现是直接读取连续4个字节这种方式出错。问:82335是按照4个连续字节存一个浮点数吗?刚才翻了翻以前的帖子介绍说内部的浮点有效数据只有24位。到底是怎么回事呢?

谢谢您的帮助

rookiecalf:

回复 Yi Yang8:

比对一下,发送端与接收端的四个字节数据,看看是不是字节在接收端的组合顺序有问题

赞(0)
未经允许不得转载:TI中文支持网 » 82335浮点数格式问题求助
分享到: 更多 (0)