你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请教下 HAL_NOR_ProgramBuffer 这个函数写入地址 ??

[复制链接]
hpdell 提问时间:2015-12-12 19:54 /
本帖最后由 hpdell 于 2015-12-12 21:24 编辑


nor flash 芯片使用 :S29GL256P          32 MByte

各位大神们好,请教下关于这个



HAL_StatusTypeDef HAL_NOR_ProgramBuffer(NOR_HandleTypeDef *hnor, uint32_t uwAddress, uint16_t *pData, uint32_t uwBufferSize)

函数写入的地址, uint32_t uwAddress   加入基地址后,程序会发生硬件错误,

示例如下:

#define  NOR_FLASH_BASE_ADDR  ((u32)(0x64000000))

#define   NOR_SECTOR_SIZE   ((u32)(2014*128UL))   // nor flash 的扇区大小,128KByte



{
  /* Return to read mode */
//  HAL_NOR_ReturnToReadMode(&hnor2);
  
  status = HAL_NOR_Erase_Block(&hnor2, (uint32_t )((NOR_SECTOR_SIZE * 2) ), NOR_FLASH_BASE_ADDR);   // 2 扇区号,擦出后,读出的数据全部为 0xffff,说明擦除是正确的
  Delay_Ms(500);
  /* Return the NOR memory status */  
  if(HAL_NOR_GetStatus(&hnor2, NOR_FLASH_BASE_ADDR, NOR_TIMEOUT_VALUE) != HAL_NOR_STATUS_SUCCESS)
  {
   /* Erase Error */
   printf("\r\nHAL_NOR_Erase_Block Error 1 ..." );
  }
  
  Fill_Buffer(aTxBuffer, BUFFER_SIZE, 0xC20F);  // 给aTxBuffer 赋值,数据从 0xc20f  开始
  
  HAL_NOR_ProgramBuffer(&hnor2, (uint32_t )((NOR_SECTOR_SIZE * 2) + NOR_FLASH_BASE_ADDR), aTxBuffer, 64);  // 写入地址如果加上基地址,程序会发生硬件错误,如果不加上基地址,不会发生硬件错误

  HAL_NOR_ReadBuffer(&hnor2, NOR_FLASH_BASE_ADDR+(NOR_SECTOR_SIZE * 2), (uint16_t *)aRxBuffer, 64);  // 读出与写入的数据不一致
}





使用读出nor flash id函数可以正确读出 芯片的 id 号


使用下面的这个函数完全没有问题
HAL_NOR_Program(&hnor2,  (uint32_t *)startaddress ++ ,  pdata);    每写一个数据后,地址加1















收藏 评论6 发布时间:2015-12-12 19:54

举报

6个回答
埃斯提爱慕 回答时间:2015-12-12 21:58:03
提示: 作者被禁止或删除 内容自动屏蔽
orima 回答时间:2015-12-13 10:11:58
先了解下吧。。。
hpdell 回答时间:2015-12-13 20:35:23

感谢感谢哦
hpdell 回答时间:2015-12-13 20:35:52

哈哈哈,好
埃斯提爱慕 回答时间:2015-12-14 19:30:51
提示: 作者被禁止或删除 内容自动屏蔽
東干的撒发生 回答时间:2017-8-14 16:43:16
请问是怎么解决的,我也遇到相似的问题

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版