W25Q128写入问题

2019-07-21 01:31发布

如题,请教:
void SPI_Flash_Write_NoCheck(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)      //测试用
{                                           
        u16 pageremain;          
        pageremain=256-WriteAddr%256; //单页剩余的字节数   
        // 问题:        上面为什么用WriteAddr%256,不是应该用NumByteToWrite吗?         昨天晚上想到现大,都是不明白,好像脑袋进了死胡同了           
        if(NumByteToWrite<=pageremain)pageremain=NumByteToWrite;//不大于256个字节
        while(1)
        {

~~~

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
zc123
1楼-- · 2019-07-21 03:23
本帖最后由 zc123 于 2019-5-13 17:23 编辑

         因为单个写入允许指令只允许写在在页(256字节对齐)范围内允许的0~256字节数据,在你标记的地方可以理解为获得当前页还允许写入的最大值,如写入地址0x0, 就还允许写入256字节,写入地址0x10, 就允许写入240字节,超过范围就有跨页问题,后续数据覆盖写入,如果实际要求写入长度NumByteToWrite超出,应该返回参数错误才更符合软件规范要求。至于这部分要求,参考SPI FLASH芯片手册即可得知,下图来自于AT25F4096芯片




chaifuwu
2楼-- · 2019-07-21 04:32
这是没一页内的物理地址

一周热门 更多>