大家好,
我在使用F021库操作flash的时候,进行flash擦/写操作时,按照说明文档给的步骤,第一步应该是初始化flash的bank,调用API:Fapi_initializeFlashBanks()。但是在进行这一步的时候,出现了错误,详情如截图所示。返回了错误:Fapi_Error_InvalidHclkValue (failure: System clock does not match specified wait value)。
但是很奇怪的是,明明是一模一样的程序,之前配置好之后也一直正常使用,能够进行正常的读取/擦/写的操作。时间隔了不到两个月,程序跑到Fapi_initializeFlashBanks的时候,便会出错。我的晶振是16MHz,系统时钟之前使用的是160MHz。不知道是不是我的系统时钟配置出现了问题?系统时钟应该如何配置?还是我的代码存在问题?
希望会有人为我解答这个疑惑,非常感谢!
user5888575:
程序会一直卡在 :while(FAPI_GET_FSM_STATUS!= Fapi_Status_Success);
也就是说,flash的擦/写操作失败了,陷入了错误循环。检查原因后发现是因为初始化的时候出错,初始化的返回值不是0(success),而是8(failure: System clock does not match specified wait value)
,
Susan Yang:
请问您现在使用的具体芯片型号是什么?在英文版E2E上有类似的问题,您可以参考一下或者发帖询问(QJ Wang是相关的资深工程师)
e2e.ti.com/…/792231
e2e.ti.com/…/686532
,
user5888575:
我使用的是TMS570LS0914PGE, 另外刚刚有一块测试用的开发板是TMS570LS1224PGE, 两块板子都是16mhz的晶振 160mhz的系统时钟1224板可以用一样的程序擦写flash,而0914突然不行了
,
Susan Yang:
参考e2e.ti.com/…/807681
1. system clock: make sure the sys_CLK in bl_config.h is same as the system clock generated from PLL (HCLK)
2. LS0914 has smaller flash than LS1224. Please define the struct of flash sectors in flash_defines.h
,
user5888575:
您好,我确认PLL和SYS_CLK都是160,这一点没有问题。在操作0914时,所选的flash sector与1224没有冲突,这一点也没有问题。
只是程序在初始化时候返回错误,并且卡在while(FAPI_GET_FSM_STATUS!= Fapi_Status_Success); ,有没有什么方法可以检测?
,
Susan Yang:
由于我手边没有570的板子,所以不好测试。我将问题放到了英文版E2E上,一般明天就会有工程师回复,您可以跟踪下面的帖子
e2e.ti.com/…/908922
,
user5888575:
非常感谢您,另外我想知道,可以直接读寄存器知道HCLK的值,以检验我的芯片配置是否正确吗?
,
Susan Yang:
RWAIT and EWAIT register values must be set before calling flash bank init API: Fapi_initializeFlashBanks()
For HCLK=160MHz, the RWAIT=3, and EWAIT=9, flash address wait state is 1 –> FRDCNTL = (3 << 8) | (1 << 4) | 1.
and EEPROM_CONFIG = (9 << 16) | 2;
,
user5888575:
非常感谢您Susan Yang女士,您帮助我解决了初始化BANK的问题
,
Susan Yang:
谢谢您对TI产品的支持!很高兴能帮到您!
,
Susan Yang:
谢谢您对TI产品的支持!很高兴能帮到您!