Other Parts Discussed in Thread:C2000WARE
我们做的是电机驱动,所用芯片是F280049C。SDK是C2000Ware_MotorControl_SDK_3_00_01_00。
电机有一些参数是需要识别的,比如各个offset, 比如USER_MOTOR_Rs_Ohm, USER_MOTOR_Ls_d_H,USER_MOTOR_Ls_q_H等等;
而这些识别是需要花费时间的,理想状况是马达驱动只识别一次,保存下来,以后再次启动就不用识别了。
另外应该还会自学习的参数,比如hall顺序,等等。都需要方案能够保存参数。
我在网上搜了flash使用的介绍,几乎都指向c2000ware\driverlib\f28004x\driverlib\flash.c的库和c2000ware\driverlib\f28004x\examples\flash的例程。
但flash api却没有读函数,只有写,擦,验证函数,比如
Fapi_StatusType Fapi_doBlankCheck( uint32 *pu32StartAddress, uint32 u32Length, Fapi_FlashStatusWordType *poFlashStatusWord)
Fapi_StatusType Fapi_doVerify( uint32 *pu32StartAddress, uint32 u32Length, uint32 *pu32CheckValueBuffer, Fapi_FlashStatusWordType *poFlashStatusWord)
Fapi_StatusType Fapi_issueProgrammingCommand( uint32 *pu32StartAddress, uint16 *pu16DataBuffer, uint16 u16DataBufferSizeInWords, uint16 *pu16EccBuffer, uint16 u16EccBufferSizeInBytes, Fapi_FlashProgrammingCommandType oMode)
那么我的问题是,有办法读出来吗?,假设用一段flash保存了用户参数,却无法读出来,就无法给需要的参数做初始化,请问我对flash api的理解有误吗?
我这个用户需求如何实现?
Green Deng:
同样的问题,你可以参考一下这个帖子中Susan工程师的回复:e2echina.ti.com/…/182240
,
jiaren lu:
你好,谢谢你的回复,我也看了F280049C Technical Reference Manual.pdf里面包括3.12.8 Flash Access Interface, 3.12.8.1 Standard Access Mode的说明,当作普通内存访问的方式读,不过没有成功。下面我详细讲一下我的测试情况
flashapi_ex1_program_autoecc.c例程主要有下面步骤
1 初始化
2 Fapi_initializeAPI
3 Fapi_setActiveFlashBank
4 Fapi_issueAsyncCommandWithAddress(erase)
5 Fapi_doBlankCheck
6 Fapi_issueProgrammingCommand
7 Fapi_doVerify
8 Fapi_issueAsyncCommandWithAddress(erase)
9 Fapi_doBlankCheck
例程configuration是CPU1_FLASH [Active],无法配置为RAM。
我在第一次运行此程序时,查看到flash对应位置的内容为全FF,在4~7运行都是成功的,查看flash对应内存也是成功被修改;在例程里我不运行8、9;
第二次运行次程序,看到到flash对应位置内容仍然为全FF,并不是第一轮写进去的1、2、3、…。例程测试的是bank0, sector6;我在bank0,bank1,多个sector上试过,均没有实现写进去被保存的情况。
我不清楚是没有写flash成功还是在某个环节被擦除了。
,
Green Deng:
你可以参考这个文档:www.ti.com/…/spnu628a.pdf
这个文档是专门讲的flash API函数,更有针对性。