当前位置:   article > 正文

杰发科技AC7801——Flash数据读取

杰发科技AC7801——Flash数据读取

0. 简介

因为需要对Flash做CRC校验,第一步先把flash数据读出来。

1. 代码

代码如下所示

  1. #include "ac780x_eflash.h"
  2. #include "string.h"
  3. #define TestSize 1024 ///< 4K
  4. #define TestAddressStart 0x08000000
  5. uint8_t Data[7000];
  6. int main(void)
  7. {
  8. unsigned int i = 0;
  9. InitDebug();
  10. EFLASH_UnlockCtrl();
  11. EFLASH_Read(TestAddressStart, (uint32_t *)Data, TestSize);
  12. EFLASH_Read(TestAddressStart + TestSize, (uint32_t *)Data + 256, TestSize);
  13. EFLASH_Read(TestAddressStart + TestSize * 2, (uint32_t *)Data + 256 * 2, TestSize);
  14. EFLASH_Read(TestAddressStart + TestSize * 3, (uint32_t *)Data + 256 * 3, TestSize);
  15. EFLASH_Read(TestAddressStart + TestSize * 4, (uint32_t *)Data + 256 * 4, 304);
  16. EFLASH_LockCtrl();
  17. printf("0x8000000 ");
  18. while (i < TestSize * 5 + 304)
  19. {
  20. printf("%02x", Data[i]);
  21. i++;
  22. if (i % 16 == 0)
  23. {
  24. printf("\r\n0x%7x ", 0x8000000 + i);
  25. }
  26. }
  27. while (1)
  28. {
  29. }
  30. }

2. 注意点

每次读取数据不要太多,太多会导致程序无法运行,这里测试到1024即可,后续请读着自行测试。

缓存数组尽可能放大一点,否则程序无法执行,我开到6400发现无法运行就放到了7000。

因为地址被强转为32位,所以每次增加首地址需要加256,即256*4=1024。

最后不足1024个数从ATCLinkTool查看总共数据,减去第72行的(uint32_t *)Data + 256 * 4即可。

最后4位是CRC,所以减去这4位用来计算FLASH的CRC值

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/296310
推荐阅读
相关标签
  

闽ICP备14008679号