查看: 5150|回复: 18

MC9S08PA系列&SH系列 燒寫FLASH的區別(已解決)

[复制链接]

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
94
最后登录
1970-1-1
发表于 2014-9-12 17:18:28 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-10-9 19:27 编辑

詢問各位大哥大姊PA&SH在做ERASE和WRITE flash時有甚麼不同嗎?因為我用之前SH所使用的程式做ERASE和WRITE 時完全不會有動作
使用CW10.6產生的CODE又看不太懂,DATASHEET上也沒有對FLASH的暫存做詳細的介紹,希望飛思的FAE能給點建議,感恩
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-15 09:26:24 | 显示全部楼层
楼主可以对比下这两款芯片的用户手册中,关于FLASH的读写命令是否一致,如果寄存器操作一致的话那么就是一样的。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-15 09:36:00 | 显示全部楼层
楼主请对比用户手册
MC9S08PA60RM:
http://cache.freescale.com/files ... tation&fileExt=.pdf
HCS08RMV1:
http://cache.freescale.com/files ... tation&fileExt=.pdf
flash 控制章节。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
94
最后登录
1970-1-1
 楼主| 发表于 2014-9-15 11:18:12 | 显示全部楼层
版主您好,我現在使用寫FLASH的程式是由PE所產生的 WriteArray 這個函式
裡面這一段似乎是在做寫的動作,可是我不太了解他的程序是怎麼執行
因為我用這個程式取代之前SH寫FLASH的程式發現我的FLASH都變成00了
能請版主解釋一下嗎? 感謝
EnterCritical();                     /* Enter critical section */
  ClearFlags();                        /* Clear all flags */
  PhraseAddr = Addr & 0xFFF8U;         /* Phrase is aligned to 8 bytes */
  diff = (byte)(Addr & 0x07U);         /* difference between address and phrase */
  i = 0U;
  while (i < Size) {
    NVM_FCCOBIX = 0U;                  /* Clear index register */
    NVM_FCCOBHI = 0x06U;               /* Program P-Flash command */
    NVM_FCCOBLO = 0U;                  /* High address word */
    NVM_FCCOBIX++;                     /* Shift index register */
    NVM_FCCOB = (word)(PhraseAddr);    /* Low address word */
    for(j = 0U; j < 8U; j += 2U) {
      NVM_FCCOBIX++;                   /* Shift index register */
   
     NVM_FCCOB = *((word *)(Data + i)); /* Load new data */
              i += 2U;
    } /* for j */
    CallFnCmdInRam();
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

705

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1745
最后登录
1970-1-1
发表于 2014-9-15 13:01:59 | 显示全部楼层
wilsonX 发表于 2014-9-15 11:18
版主您好,我現在使用寫FLASH的程式是由PE所產生的 WriteArray 這個函式
裡面這一段似乎是在做寫的動作,可 ...

你在写之前,flash数据是什么呢?
有没有先erase下flash,然后再写呢。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-15 13:13:17 | 显示全部楼层
wilsonX 发表于 2014-9-15 11:18
版主您好,我現在使用寫FLASH的程式是由PE所產生的 WriteArray 這個函式
裡面這一段似乎是在做寫的動作,可 ...

楼主,你操作写的地址,之前的数据是多少?
写的flash地址之前有没有被写过呢?
看你的代码流程是对的,你调用过程可以参考PE模块推荐的help典型代码去调用。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
94
最后登录
1970-1-1
 楼主| 发表于 2014-9-15 13:22:23 | 显示全部楼层
我有先erase過後再寫,寫之前數據都是FF,另外想詢問一下各位大哥,這個函式是一次寫幾個BYTES呢?
請問版主PE模块推荐的help典型代码在哪邊看的到呢?
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-15 13:29:40 | 显示全部楼层
wilsonX 发表于 2014-9-15 13:22
我有先erase過後再寫,寫之前數據都是FF,另外想詢問一下各位大哥,這個函式是一次寫幾個BYTES呢?
請問版主 ...

25.jpg
从RM上看,一条写指令是8个字节。
另外,你PE用的flash模块是什么模块?
flash_LDD?

回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
94
最后登录
1970-1-1
 楼主| 发表于 2014-9-15 13:56:57 | 显示全部楼层
本帖最后由 wilsonX 于 2014-9-15 13:58 编辑

版主你好,我是最近才開始寫這個,對於一些相關的知識都不太清楚,你所謂的flash模块是指甚麼呢? 我不太了解
另外,如果我要一次只寫一個字節要怎麼修改呢?
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-15 14:16:26 | 显示全部楼层
wilsonX 发表于 2014-9-15 13:56
版主你好,我是最近才開始寫這個,對於一些相關的知識都不太清楚,你所謂的flash模块是指甚麼呢? 我不太了 ...

你说你的代码是基于PE的,那你调用的是flash的什么模块呢?
是下图的intFLASH模块吗?
26.jpg
这个模块的调用是可以通过右击左边的IFsh1,选择help on component来查看,帮助中是有典型应用的,你可以看看帮助怎么写,照着写就行。
另外如果你想只写一个字节,那么你可以在控制flash写命令的时候,只写一个字节,其余的不写入NVM_FCCOB寄存器。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-8-2 18:39 , Processed in 0.187911 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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