OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7279|回复: 3

SPI FLASH的 void SPI_ExFlash_Write_NoCheck()问题

[复制链接]

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
发表于 2012-11-30 13:58:37 | 显示全部楼层 |阅读模式

 //无检验写SPI FLASH
//必须确保所写的地址范围内的数据全部为0XFF,否则在非0XFF处写入的数据将失败!/*什么意思呢?*/
//具有自动换页功能
//在指定地址开始写入指定长度的数据,但是要确保地址不越界!
//pBuffer:数据存储区
//WriteAddr:开始写入的地址(24bit)
//NumByteToWrite:要写入的字节数(最大65535)
void SPI_ExFlash_Write_NoCheck(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)  
{       
 u16 PageRemain;   
 PageRemain=256-WriteAddr%256; //单页剩余的字节数       
 if(NumByteToWrite<=PageRemain)PageRemain=NumByteToWrite;//不大于256个字节
 while(1)
 {   
  SPI_ExFlash_Write_Page(pBuffer,WriteAddr,PageRemain);
  if(NumByteToWrite==PageRemain)break;//写入结束了
   else //NumByteToWrite>pageremain
  {
   pBuffer+=PageRemain;
   WriteAddr+=PageRemain; 

   NumByteToWrite-=PageRemain;     //减去已经写入了的字节数
   if(NumByteToWrite>256)PageRemain=256; //一次可以写入256个字节
   else PageRemain=NumByteToWrite;    //不够256个字节了
  }
 };    
}

这个代码有点看不懂啊。有底色的部分看不懂,什么意思?
为什么要把写入起始地址取余?

http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-11-30 14:08:16 | 显示全部楼层
上面://NumByteToWrite:要写入的字节数(最大65535),表明最大写入字节数为64KByte。等价于1个Block(块区),一个块区16 Secoter(扇区),16*16=256个Page
上面的函数是不是,一次可以写入1个块?
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-11-30 14:16:16 | 显示全部楼层
咳.......
PageRemain=256-WriteAddr%256; //单页剩余的字节数
起始地址,在页内开始算,到本页结束,还有多少空间............
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-11-30 20:22:46 | 显示全部楼层
0XFF,是因为FLASH的写操作,必须是0XFF,才可以进行写入,否则不能写!百度一下科普科普吧。
下面这个,PageRemain=256-WriteAddr%256; 是获得在页地址里面的偏移,方便后面整页处理。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 01:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表