初级会员

- 积分
- 174
- 金钱
- 174
- 注册时间
- 2018-2-24
- 在线时间
- 44 小时
|
8金钱
求助一下用过W25Q芯片的大佬。我想通过串口接收浮点数据,一次100个,每个数据格式为000.0000,数据之间有空格。接收到以后将写入FLASH。
然后再读出来,还原为浮点数。部分代码如下:
写FLASH:
if(USART_RX_STA&0x8000)//收到数据了
{
if(i<102)
{
i++;//标记接收到的数据次数,每次只接收101个
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("第%d次写W25Q64....",i);
W25QXX_Write((u8*)USART_RX_BUF,FLASH_SIZE-100000+len*i,len); //从倒数第100000个地址处开始,写入len长度的数据
printf("W25Q64数据写入完成!"); //提示传送完成
USART_RX_STA=0;//清空接收数据状态标记
}
读FLASH:
n=(int)(*p*2)*101+((int)*q)+1; //表格,二维坐标转一维
W25QXX_Read((u8 *)data,FLASH_SIZE-100000+n*9,9); //从倒数第100000个地址处开始,往后偏移n*9个字节,读出9个字节(1个数据),放入data
cpr=(data[0]-48)*100+(data[1]-48)*10+(data[2]-48)+(data[4]-48)*0.1+(data[5]-48)*0.01+(data[6]-48)*0.001+(data[7]-48)*0.0001; //减48是为了将ASCⅡ码转为十进制
printf("输出为: %.4f \r\n",cpr); //显示读到的数据
但是串口打印出来读出的结果是28888.9903这种非常大的数字,不是我写的内容。一直未找到原因,求高手指教!非常感谢!
|
|