关于STM32F407的SPI操作FLASH,W25QXX_Write()函数的问题

2019-07-20 03:05发布

函数原型://写SPI FLASH  //在指定地址开始写入指定长度的数据
//该函数带擦除操作!
//pBuffer:数据存储区
//WriteAddr:开始写入的地址(24bit)                                               
//NumByteToWrite:要写入的字节数(最大65535)   
u8 W25QXX_BUFFER[4096];                 
void W25QXX_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)  

想问问大佬们,W25QXX_Write函数的地址和写入的字节数是什么关系?
我想往flash写两个浮点数,我以为一个地址对应一个字节,于是这样写
                //W25QXX_Write((u8*)text_ch,0,4);   
                //W25QXX_Write((u8*)text_ch,4,4);

发现读出来的数字是不完整的,数据有丢失。。。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-20 05:08
用指针,直接区浮点数地址,然后存储4个字节(float)或者8字节(double)。
读取的时候再强制转换回来即可
peng1554
2楼-- · 2019-07-20 05:30
浮点数强制转换后肯定丢数据了~
天涯海QxkJX
3楼-- · 2019-07-20 09:54
 精彩回答 2  元偷偷看……
peng1554
4楼-- · 2019-07-20 13:21
天涯海QxkJX 发表于 2019-3-21 11:55
应该不是这个问题,我后来用了
//W25QXX_Write((u8*)text_ch,0,16);   
//W25QXX_Write((u8*)text_ch, ...

写入的字节数+写入数据的地址不能超过SPI FLASH地址范围
kmmyk
5楼-- · 2019-07-20 17:32
 精彩回答 2  元偷偷看……
冰封嗜魔
6楼-- · 2019-07-20 20:17
 精彩回答 2  元偷偷看……

一周热门 更多>