如题,请教:
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)
{
~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
因为单个写入允许指令只允许写在在页(256字节对齐)范围内允许的0~256字节数据,在你标记的地方可以理解为获得当前页还允许写入的最大值,如写入地址0x0, 就还允许写入256字节,写入地址0x10, 就允许写入240字节,超过范围就有跨页问题,后续数据覆盖写入,如果实际要求写入长度NumByteToWrite超出,应该返回参数错误才更符合软件规范要求。至于这部分要求,参考SPI FLASH芯片手册即可得知,下图来自于AT25F4096芯片
一周热门 更多>