智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2499|回复: 17
打印 上一主题 下一主题

写了一夜,把冷火的flash在线编程给开发出来了

  [复制链接]

27

主题

150

帖子

0

精华

会长

Rank: 8Rank: 8

积分
3077

优秀会员奖章活跃会员奖章

威望
1484
贡献
901
兑换币
931
注册时间
2013-6-7
在线时间
346 小时
毕业学校
燕山大学
跳转到指定楼层
1#
发表于 2014-6-5 02:03:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从此,调参数再也不用一遍一遍下程序了,二楼上代码
回复

使用道具 举报

27

主题

150

帖子

0

精华

会长

Rank: 8Rank: 8

积分
3077

优秀会员奖章活跃会员奖章

威望
1484
贡献
901
兑换币
931
注册时间
2013-6-7
在线时间
346 小时
毕业学校
燕山大学
2#
 楼主| 发表于 2014-6-5 02:03:43 | 只看该作者
#ifndef FLASH_H_
#define FLASH_H_
#include "support_common.h"
#define FLASH_PAGESIZE 4096
#define FLASH_PROG_OFFSET 0x44000000//地址偏移量

#define FLASH_PROGRAM 0x20  //写入命令
#define FLASH_PAGE_ERASE 0x40//页擦除命令

void FlashPageErase(uint8 page);//擦除指定的页
void FlashPageWrite(uint8 page,uint16 pstart,uint32 N);//写flash
uint32  FlashRead(uint8 page,uint16 pstart);//读flash

#endif
回复 支持 反对

使用道具 举报

27

主题

150

帖子

0

精华

会长

Rank: 8Rank: 8

积分
3077

优秀会员奖章活跃会员奖章

威望
1484
贡献
901
兑换币
931
注册时间
2013-6-7
在线时间
346 小时
毕业学校
燕山大学
3#
 楼主| 发表于 2014-6-5 02:04:06 | 只看该作者
#include"flash.h"
void FlashPageErase(uint8 page)//page为要擦除的页(0=<page<=127),选第127页
{
        uint32*address;
        uint8 sector;
        address=(uint32*)(page*FLASH_PAGESIZE+FLASH_PROG_OFFSET);//1.算出页首地址
        sector=page/4;//对应的扇区
       
        MCF_CFM_CFMPROT&=~MCF_CFM_CFMPROT_PROTECT(sector);//2.解除对页所在扇区的保护
       
        MCF_CFM_CFMCLKD=MCF_CFM_CFMCLKD_DIV(30)
                       |MCF_CFM_CFMCLKD_PRDIV8;//3,设置flash的工作频率为161.3khz
                      
        while(!(MCF_CFM_CFMUSTAT&MCF_CFM_CFMUSTAT_CBEIF));//4等待命令缓冲区空
       
           MCF_CFM_CFMUSTAT|=MCF_CFM_CFMUSTAT_PVIOL;//清侵害保护标志位
        MCF_CFM_CFMUSTAT|=MCF_CFM_CFMUSTAT_ACCERR;//清访问出错标志位
         
    *address=0x0;//5向擦除页内任意地址写任意值,以定位要擦除的的页
   
    MCF_CFM_CFMCMD=MCF_CFM_CFMCMD_CMD(FLASH_PAGE_ERASE);//6页擦除命令
    MCF_CFM_CFMUSTAT|=MCF_CFM_CFMUSTAT_CBEIF;//7,启动命令执行
   
    while(!(MCF_CFM_CFMUSTAT&MCF_CFM_CFMUSTAT_CCIF));//8等待命令执行完成
                      
}
void FlashPageWrite(uint8 page,uint16 pstart,uint32 N)//page是页号,pstart是该页中的字号(0=<page<=127),(0=<pstart<=1023)
{
        uint32*address;
        uint8 sector;
        address=(uint32*)(page*FLASH_PAGESIZE+pstart*4+FLASH_PROG_OFFSET);//1.算出字首地址
        sector=page/4;//对应的扇区
       
        MCF_CFM_CFMPROT&=~MCF_CFM_CFMPROT_PROTECT(sector);//2.解除对页所在扇区的保护
       
    MCF_CFM_CFMCLKD=MCF_CFM_CFMCLKD_DIV(30)
                       |MCF_CFM_CFMCLKD_PRDIV8;//3,设置flash的工作频率为161.3khz
                      
    while(!(MCF_CFM_CFMUSTAT&MCF_CFM_CFMUSTAT_CBEIF));//4等待命令缓冲区空
   
        MCF_CFM_CFMUSTAT|=MCF_CFM_CFMUSTAT_PVIOL;//清侵害保护标志位
        MCF_CFM_CFMUSTAT|=MCF_CFM_CFMUSTAT_ACCERR;//清访问出错标志位
       
        *address=N;//5写入数据
       
        MCF_CFM_CFMCMD=MCF_CFM_CFMCMD_CMD(FLASH_PROGRAM);//6写入命令
        MCF_CFM_CFMUSTAT|=MCF_CFM_CFMUSTAT_CBEIF;//7,启动命令执行
       
    while(!(MCF_CFM_CFMUSTAT&MCF_CFM_CFMUSTAT_CCIF));//8等待命令执行完成
   
    MCF_CFM_CFMPROT|=MCF_CFM_CFMPROT_PROTECT(sector);//9.给所在页加保护
       
       
}
uint32  FlashRead(uint8 page,uint16 pstart)//page是页号,pstart是该页中的字号
{
        uint32*address;
        uint32 n;
        address=(uint32*)(page*FLASH_PAGESIZE+pstart*4);//1.算出字首地址
        n=*address;
        return n;
}
回复 支持 反对

使用道具 举报

6

主题

618

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6491
威望
3362
贡献
527
兑换币
2332
注册时间
2013-8-31
在线时间
1301 小时
4#
发表于 2014-6-5 02:42:35 | 只看该作者
不是很懂啊,大神解释解释,将改好的参数存到Flash中码
回复 支持 反对

使用道具 举报

27

主题

150

帖子

0

精华

会长

Rank: 8Rank: 8

积分
3077

优秀会员奖章活跃会员奖章

威望
1484
贡献
901
兑换币
931
注册时间
2013-6-7
在线时间
346 小时
毕业学校
燕山大学
5#
 楼主| 发表于 2014-6-5 09:02:25 | 只看该作者
allenanswerzq 发表于 2014-6-5 02:42
不是很懂啊,大神解释解释,将改好的参数存到Flash中码

其实我不是大神啦,就是通过按键改参数时,参数存到flash里,掉电后不丢失
回复 支持 反对

使用道具 举报

65

主题

696

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3631

活跃会员奖章优秀会员奖章论坛骨干奖章论坛元老奖章在线王奖章

威望
1886
贡献
1057
兑换币
1118
注册时间
2013-4-23
在线时间
344 小时
6#
发表于 2014-6-5 09:21:56 | 只看该作者
good
回复 支持 反对

使用道具 举报

6

主题

354

帖子

0

精华

常驻嘉宾

菜鸟

Rank: 8Rank: 8

积分
3051
威望
1530
贡献
927
兑换币
1016
注册时间
2013-10-26
在线时间
297 小时
7#
发表于 2014-6-5 09:39:32 | 只看该作者
给力!
回复 支持 反对

使用道具 举报

0

主题

84

帖子

0

精华

高级会员

Rank: 4

积分
620
QQ
威望
303
贡献
177
兑换币
209
注册时间
2014-5-1
在线时间
70 小时
8#
发表于 2014-6-5 13:09:53 | 只看该作者
我擦的是第255页
回复 支持 反对

使用道具 举报

0

主题

84

帖子

0

精华

高级会员

Rank: 4

积分
620
QQ
威望
303
贡献
177
兑换币
209
注册时间
2014-5-1
在线时间
70 小时
9#
发表于 2014-6-5 13:11:16 | 只看该作者
我的一页是2k。
回复 支持 反对

使用道具 举报

12

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1470
威望
756
贡献
432
兑换币
461
注册时间
2013-11-22
在线时间
141 小时
10#
发表于 2014-6-5 13:44:07 | 只看该作者
大神给力~
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-5 13:22 , Processed in 0.046355 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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