查看: 7194|回复: 5

[已解决] MK60FX512VLQ15芯片写FLASH问题?(已解决)

[复制链接]

该用户从未签到

2

主题

7

帖子

0

新手上路

Rank: 1

积分
7
最后登录
1970-1-1
发表于 2013-8-13 13:31:53 | 显示全部楼层 |阅读模式
我准备做个usb的bootload程序,所用芯片为MK60FX512VLQ15。现在发现程序中无法对FLASH进行写入,也在网上查看了好多K60程序例子。到现在没有找到问题所在。望各位大侠帮忙!
现象:擦除flash没有问题。就是写入有问题,有时候第一次的4个字节可以写入,第二次就出问题了。其flash程序入下:
flash.h

#ifndef __FLASH_H__
#define __FLASH_H__/***DEF+**********************************************************************/
/* Flash控制器宏定义 ,内部使用                                              */
/***DEF-**********************************************************************/
#define CCIF    (1
我知道答案 目前已有4人回答
回复

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
发表于 2013-8-13 15:25:50 | 显示全部楼层

回复:MK60FX512VLQ15芯片写FLASH问题?(正解)

 我建议你参考飞思卡尔提供的Flash官方驱动,其中包括K70 Flash操作例程 (同样适用于K60 120MHz 产品)。
在你的Flash_cmd_launch函数中并没有等待FSTAT CCIF位置位,这样很容易造成Flash命令还在运行又运行其他的Flash命令。
/***FUNC+*********************************************************************/
/* Name   : Flash_cmd_launch                                                 */
/* Descrp : 启动Flash命令                                                    */
/* Input  : 配置Flash存储控制器,清除Flash预读取缓冲                         */
/* Output : 0-成功 1-失败.                                                   */
/* Return : None.                                                            */   
/***FUNC-*********************************************************************/
unsigned char Flash_cmd_launch(void)
{
    // 清除访问错误标志位和非法访问标志位
    FTFE_FSTAT = ACCERR | FPVIOL;
    
    // 启动命令
    FTFE_FSTAT = CCIF;

    // 等待命令结束
    while(!(FTFE_FSTAT & CCIF));

    // 检查错误标志
    if(FTFE_FSTAT & (ACCERR | FPVIOL | MGSTAT0))
        return 1 ; //执行命令出错
  
    return 0; //执行命令成功
}

 
请参考官方驱动中的【FlashCommandSequence.c】文件,其中包含如下代码用以避免上述情况:
   /* check CCIF bit of the flash status register */
    
    while(FALSE == (REG_BIT_TEST(PSSDConfig->ftfxRegBase + FTFx_SSD_FSTAT_OFFSET, FTFx_SSD_FSTAT_CCIF)))
    {
        /* wait till CCIF bit is set */
    }
 
另外在Flash命令运行过程中,要避免同时读写冲突的问题,解决的方法就是从RAM中运行Flash命令,具体请参考AN4695:
http://cache.freescale.com/files/32bit/doc/app_note/AN4695.pdf
 
祝顺利。
 
回复 支持 反对

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
发表于 2013-8-13 15:30:33 | 显示全部楼层

回复:MK60FX512VLQ15芯片写FLASH问题?

 飞思卡尔Kinetis Flash官方例程可以从下面的链接中下载获得:
http://cache.freescale.com/files/32bit/software/C90TFS_FLASH_DRIVER.exe
祝顺利。
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

7

帖子

0

新手上路

Rank: 1

积分
7
最后登录
1970-1-1
 楼主| 发表于 2013-8-21 14:29:18 | 显示全部楼层

RE:MK60FX512VLQ15芯片写FLASH问题?(已解决)

问题已解决。15的芯片和10的芯片在写字节命令不一样,一个是0x06,写4字节;15芯片是0x07,写8个字节。
谢谢各位回答
回复 支持 反对

使用道具 举报

该用户从未签到

85

主题

790

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2279
最后登录
1970-1-1
发表于 2013-8-21 16:23:57 | 显示全部楼层

RE:MK60FX512VLQ15芯片写FLASH问题?(已解决)

感谢你对飞思卡尔产品的关注。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

6

帖子

0

新手上路

Rank: 1

积分
18
最后登录
1970-1-1
发表于 2013-11-10 18:12:32 | 显示全部楼层

回复:MK60FX512VLQ15芯片写FLASH问题?(已解决)

回复第 3 楼 于2013-08-13 15:30:33发表:
 飞思卡尔Kinetis Flash官方例程可以从下面的链接中下载获得:
http://cache.freescale.com/files/32bit/software/C90TFS_FLASH_DRIVER.exe
祝顺利。
 

请教下,我写进去是对的,但是再次烧程序到芯片发现之前写数据的地方全部为0是怎么回事?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 09:05 , Processed in 0.100531 second(s), 26 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表