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

请教下 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个回答
dsjsjf 回答时间:2015-12-12 21:58:03
没用过。帮顶
超級稻草人 回答时间:2015-12-13 10:11:58
先了解下吧。。。
hpdell 回答时间:2015-12-13 20:35:23

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

哈哈哈,好
dsjsjf 回答时间:2015-12-14 19:30:51

客气客气
東干的撒发生 回答时间:2017-8-14 16:43:16
请问是怎么解决的,我也遇到相似的问题

所属标签

相似问题

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