ch554 dataflash字节写入问题

WriteDataFlash(DATA_FLASH_ADDR_Offset, DataBuffer, 90);

重新写入90个字节后,执行读取数据,还是之前的数据,感觉没有写进去。

部分程序:


if(HIDKey[0] == 1) HIDKey[0] = 0xAA;DataBuffer[0] = 0xAA;

if(HIDKey1[0] == 2) HIDKey1[0] = 0xAA;DataBuffer[9] = 0xAA;

if(HIDKey2[0] == 3) HIDKey2[0] = 0xAA;DataBuffer[18] = 0xAA;

  if(HIDKey3[0] == 4) HIDKey3[0] = 0xAA;DataBuffer[27] = 0xAA;

if(HIDKey4[0] == 5) HIDKey4[0] = 0xAA;DataBuffer[36] = 0xAA;

  if(HIDKey5[0] == 6) HIDKey5[0] = 0xAA;DataBuffer[45] = 0xAA;

if(HIDKey6[0] == 7) HIDKey6[0] = 0xAA;DataBuffer[54] = 0xAA;

if(HIDKey7[0] == 8) HIDKey7[0] = 0xAA;DataBuffer[63] = 0xAA;

if(HIDKey8[0] == 9) HIDKey8[0] = 0xAA;DataBuffer[72] = 0xAA;

if(HIDKey9[0] == 10) HIDKey9[0] = 0xAA;DataBuffer[81] = 0xAA;

  i = 10;

  while(i--){

//  status = EraseDataFlash(DATA_FLASH_ADDR);

//  if(status != 0) continue;

#if DE_PRINTF

  printf("write ..\n");

#endif

  WriteDataFlash(DATA_FLASH_ADDR_Offset, DataBuffer, 90);

  break;


之前好像遇到过,dataflash写完之后得稍微等一会儿再对flash读取,不然写入的信息就无效了,加个delay,写入完成后,稍微等一下再读试试(个人经验,仅供参考,无效勿喷)


谢谢你的回复,加了延时,会对按键检测有了好的体验,减少误操作 ,不过还是没有改变,数据没有被保存。一直怀疑是不是空间不够,感觉也不是,我是存储90个字节,实际空间是128,应该是够的。不知道为什么 ,前面的数据都可以保存,也可以读取,多次验证,就是最后这九个字节,从81--90无法保存。有没有办法 直接观察 dataflash的空间存储情况,不修改  code数据。


WCHISPTool提供了读取芯片DATAFLASH的功能,如图:

image.png


可以描述一下大体应用吗?检测到按键需要存储到FLASH中去,但保存到RAM会更快速,操作FLASH时芯片会处于停止运行状态,可能会影响到检测,讨论看看是否有更合适的处理方式。


我还是用ch552的全部引脚做按键输入,把读取和存储的数据全部放到dataflash里面,测试只有p17也就是设置的最后一个引脚,他保存的数据和读出的数据有问题,像你说的处于停止状态,或者说是无限死循环状态,导致其他所有按键引脚都不能正常使用,ch552是8个io口,全部用作普通的io口使用,定义的前9个还算正常,第九个偶尔也会失灵,怀疑是串口导致,把串口初始化禁掉,导致枚举失败无法识别usb设备,请问是什么问题?需要怎么设置,不需要串口,只要把全部io口做按键输入 。


转到另外一个主题




/bbs/thread-89733-1.html


只有登录才能回复,可以选择微信账号登录