多想自己能变聪明 发表于 2019-7-30 15:06:02

FM25CL64使用问题

向FM25CL64芯片写入数据时会覆盖前面写入的数据
value = {7,9,10,8,6};fm25cl64_MemoryWrite(dev,0x0000,&value,20);
这样可以从0x0000地址写入5个数据,最后一个数据占用的起始地址为0x10
fm25cl64_MemoryWrite(dev,0x0010,&value,4);
想要单独改变0x10起始地址的存储数据,结果是0x0000起始地址对应的存储数据被改变了

只有一份英文文档,自己也没怎么看明白,想请教一下这个芯片具体用法


流水源 发表于 2019-7-30 17:07:30

FM25CL64与FM25CL16、08、04、02,不同的地方就是地址有2个字节,你看是不是这个原因。看你写入函数的代码是咋样的?

多想自己能变聪明 发表于 2019-7-30 17:49:26

流水源 发表于 2019-7-30 17:07
FM25CL64与FM25CL16、08、04、02,不同的地方就是地址有2个字节,你看是不是这个原因。看你写入函数的代码 ...

rt_err_t fm25cl64_MemoryWrite(fm25cl64_t device,rt_uint16_t addr,void *data,rt_size_t length)
{
        rt_uint8_t cmd = {WREN,WRITE,addr>>8,addr&0x0f,WRDI};
        rt_spi_send(device->parent,&cmd,1);//先发送写使能
        rt_spi_send_then_send(device->parent,&cmd,3,data,length);//发送写命令和地址,接着发数据
        rt_spi_send(device->parent,&cmd,1);//最后发送写失能
        return RT_EOK;
}

多想自己能变聪明 发表于 2019-7-30 18:12:23

流水源 发表于 2019-7-30 17:07
FM25CL64与FM25CL16、08、04、02,不同的地方就是地址有2个字节,你看是不是这个原因。看你写入函数的代码 ...

谢谢提醒!确实是我的地址处理出的问题:'(
rt_uint8_t cmd = {WREN,WRITE,addr>>8,addr&0x0f,WRDI};
其中addr&0x0f反了:handshake
页: [1]
查看完整版本: FM25CL64使用问题