本帖最后由 wangpengcheng 于 2014-5-11 14:31 编辑
花了两天时间,才找到这个问题!在写与擦除Flash的时候,FTFL模块中的写Flash命令只有0~23位地址,而Dflash的地址是从0x10000000开始的,地址根本达不到,后来在DataSheet中终于发现一小行字:
Flash address [23] selects between program flash (=0) and data flash (=1) resources
我滴个神啊,只有一这行说明,试了一下,OK了!痛苦死了!
特此提醒一下各位同学,用的时候要小心一点哦!
我用的是MQX系统,驱动中没有Dflash操作,只有Pflash与flexRAM的操作,无奈之下改了驱动,在ftfl_flash_write_sector与ftfl_flash_erase_sector函数中将:
command_array[1] = (uint8_t)(write_addr >> 16) ;
语句改为:
command_array[1] = (uint8_t)(write_addr >> 16) | (uint8_t)(((write_addr >> 21) & 0x00000080));
希望对用MQX的同学有帮助!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
用PE擦除已经可以了,但在MQX中,我还在找问题所以,呵呵,本来MQX中的Flashx的驱动中就没有DFlash的地址,我自己加的,目前是读写都没有问题,但擦除还是擦不掉,跟PE中的对比了一下,寄存器的值都是一样的,可就是擦不掉,还在找问题中。。。。。。。。。。。。
一周热门 更多>