查看: 1344|回复: 6

[求助] kl16Z256芯片FLASH读写问题

[复制链接]
  • TA的每日心情
    奋斗
    2020-5-15 16:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    59
    最后登录
    2020-7-17
    发表于 2020-5-15 10:03:08 | 显示全部楼层 |阅读模式
        kl16Z256芯片FLASH读写问题,写入时只能是单字(4个字节)写入吗,有没有块(1K字节)写入?
    我知道答案 目前已有6人回答
    FSL芯片问题还未解决
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20020
    最后登录
    2024-4-25
    发表于 2020-5-20 10:55:00 | 显示全部楼层
    flash读写是以扇区进行的,而不是几个字节
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-15 16:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    59
    最后登录
    2020-7-17
     楼主| 发表于 2020-5-29 14:32:18 | 显示全部楼层
    FLASH是扇区进行的,这个我清楚
    实际指令只有单字(4字节)写入,
    有没有相关代码或博客说明看下,谢谢!
    FSL芯片问题还未解决
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-15 16:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    59
    最后登录
    2020-7-17
     楼主| 发表于 2020-5-29 14:49:49 | 显示全部楼层
    这是我的代码,请大家看下
    E_FLASH_STATUS Flash_Write(u16 u16SectorNo, u16 u16Offset, u16 u16Cnt, u8 *pu8Buf)
    {
        u32 u32Size;
        u32 u32Destaddr;
        #define PROGRAM_LEN     4
       
        union
        {
            u32    u32Word;
            u8     au8Byte[4];
        }U_Dest;

        if ((u16Offset % 4) != 0)
        {
            return E_FLASH_ERASE_ERROR;   //参数设定错误,偏移量未对齐(4字节对齐)
        }
       
        // 设置写入命令
        FTFA->FCCOB0 = Program_Longword;
        u32Destaddr = (u32)(u16SectorNo*Sector_Size + u16Offset);//计算地址
        U_Dest.u32Word = u32Destaddr;

        for (u32Size = 0; u32Size < u16Cnt; u32Size += PROGRAM_LEN, U_Dest.u32Word+=PROGRAM_LEN)
        {
            // 设置目标地址
            FTFA->FCCOB1 = U_Dest.au8Byte[2];
            FTFA->FCCOB2 = U_Dest.au8Byte[1];
            FTFA->FCCOB3 = U_Dest.au8Byte[0];

            // 拷贝数据
            FTFA->FCCOB4 = *(pu8Buf+3);
            FTFA->FCCOB5 = *(pu8Buf+2);
            FTFA->FCCOB6 = *(pu8Buf+1);
            FTFA->FCCOB7 = *(pu8Buf+0);
            
            if (!FlashCmdLaunch())
            {
                HAL_IT_EnableAllInterrupt();
                return E_FLASH_WRITE_ERROR;  //写入命令错误
            }
            
            *(pu8Buf+=PROGRAM_LEN);
        }

        return E_FLASH_OK;  //成功执行
    }
    FSL芯片问题还未解决
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-15 16:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    59
    最后登录
    2020-7-17
     楼主| 发表于 2020-6-1 10:28:57 | 显示全部楼层
    敬请各位大神瞄几眼,给个回复
    FSL芯片问题还未解决
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-15 16:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    59
    最后登录
    2020-7-17
     楼主| 发表于 2020-6-2 17:07:01 | 显示全部楼层
    自己顶上,有没有大神给看下,我写入128K的数据,需要30多秒的时间,不知道问题出在哪里,有没有更快的办法
    FSL芯片问题还未解决
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-15 16:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    59
    最后登录
    2020-7-17
     楼主| 发表于 2020-6-5 14:17:30 | 显示全部楼层
    咋没有人回复呢,难道大家都不操作FLASH吗
    FSL芯片问题还未解决
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-26 07:42 , Processed in 0.135903 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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