[Kinetis] K10关于flexNVM初始化及RTC初始化的问题。

[复制链接]
7149|32
 楼主| dongshan 发表于 2013-11-13 10:31 | 显示全部楼层 |阅读模式
    flexNVM用作eeprom, 只想初始化一次。 于是移植了以前K40的代码,此段代码在k10上工作正常。但是到了K10上时,在调试时发现,只要芯片复位,总会初始化。也就是说SIM_FCFG1的DEPART位总是为0xf,即默认值。但是数据是写入成功的,读出来是正确的。这是怎么回事呢?
1.jpg

RTC初始化时也一样,只想初始化一次,于是我判断RTC_CR中的TCE位是否使能,RTC_CR寄存器是在VBAT域的,电池一直存在,为什么每一次芯片复位,TCE位总是为0? 在调用RTC_Init时,此位已经置1了,郁郁不得其解。
2.jpg
 楼主| dongshan 发表于 2013-11-13 10:37 | 显示全部楼层
麻烦版主及各位网友帮忙看一下吧。
FSL_TICS_ZJJ 发表于 2013-11-13 10:46 | 显示全部楼层
你好,请问你用的芯片的具体型号是多少?以及mask号。
 楼主| dongshan 发表于 2013-11-13 10:49 | 显示全部楼层
型号是MK10DX256VLL7, mask是1N36B
FSL_TICS_ZJJ 发表于 2013-11-13 10:52 | 显示全部楼层
dongshan 发表于 2013-11-13 10:49
型号是MK10DX256VLL7, mask是1N36B

稍等,我看一下!你K40的代码移植过来,配置方面有没有一些改动?
 楼主| dongshan 发表于 2013-11-13 10:54 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2013-11-13 10:52
稍等,我看一下!你K40的代码移植过来,配置方面有没有一些改动?

FlexNVM大小不一样,配置的大小变了。
FSL_TICS_ZJJ 发表于 2013-11-13 11:00 | 显示全部楼层
dongshan 发表于 2013-11-13 10:54
FlexNVM大小不一样,配置的大小变了。

这样吧,你把你的代码上传一下,我看一下!
 楼主| dongshan 发表于 2013-11-13 11:00 | 显示全部楼层
调用代码如下: 3.jpg 4.jpg
 楼主| dongshan 发表于 2013-11-13 11:00 | 显示全部楼层
好的,我马上传。
 楼主| dongshan 发表于 2013-11-13 11:04 | 显示全部楼层
传的是驱动文件,调用时就是一句,图片中也帖出。

Drv.rar

2.27 KB, 下载次数: 26

 楼主| dongshan 发表于 2013-11-13 11:06 | 显示全部楼层
首先谢谢版主的支持,项目太大,有二万行左右,所以不能上传,望版主理解。如果需要我可以做一个测试工程传上来。
FSL_TICS_ZJJ 发表于 2013-11-13 11:16 | 显示全部楼层
dongshan 发表于 2013-11-13 11:06
首先谢谢版主的支持,项目太大,有二万行左右,所以不能上传,望版主理解。如果需要我可以做一个测试工程传 ...

就改了flash分配区域的那个数据是吗?其他没改?partition 内部没有改是吗?最好把你K40代码相关动掉的地方都说一下,便于我查找问题。
 楼主| dongshan 发表于 2013-11-13 11:23 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2013-11-13 11:16
就改了flash分配区域的那个数据是吗?其他没改?partition 内部没有改是吗?最好把你K40代码相关动掉的地 ...

因为K40与K10的flashNVM大小不一样,所以就是更改了常数的定义。函数代码没有修改。

我的开发环境是keil, 会不会更keil有关呢
FSL_TICS_ZJJ 发表于 2013-11-13 11:32 | 显示全部楼层
dongshan 发表于 2013-11-13 11:23
因为K40与K10的flashNVM大小不一样,所以就是更改了常数的定义。函数代码没有修改。

我的开发环境是kei ...

我这边还没有K10的板子,那你EEPROM这块,除了每次复位后分配的问题,还有没有其他问题?你分配后,可以读写操作吗?
 楼主| dongshan 发表于 2013-11-13 12:01 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2013-11-13 11:32
我这边还没有K10的板子,那你EEPROM这块,除了每次复位后分配的问题,还有没有其他问题?你分配后,可以 ...

分配后,读写正常的。
FSL_TICS_ZJJ 发表于 2013-11-13 16:49 | 显示全部楼层
dongshan 发表于 2013-11-13 12:01
分配后,读写正常的。

你在flexNVM中给EEPROM分16K以上的备份区试试呢。
 楼主| dongshan 发表于 2013-11-13 17:09 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2013-11-13 16:49
你在flexNVM中给EEPROM分16K以上的备份区试试呢。

partition_flash(EEPROM_2K,DFLASH_SIZE_0);

基中DFLASH_SIZE_0就是说把所有的flexNVM都给eeprom作备份区了,K10有32K的flexNVM, 所以已经有32K作为备份区了。
FSL_TICS_ZJJ 发表于 2013-11-13 17:26 | 显示全部楼层
dongshan 发表于 2013-11-13 17:09
partition_flash(EEPROM_2K,DFLASH_SIZE_0);

基中DFLASH_SIZE_0就是说把所有的flexNVM都给eeprom作备份 ...

对,你说的对,我看错了,以为backup区被搞成0了。
FSL_TICS_ZJJ 发表于 2013-11-13 17:31 | 显示全部楼层
本帖最后由 FSL_TICS_ZJJ 于 2013-11-13 17:34 编辑

我看你的代码啊,前面的EEPROM_2K是0x03,然后,在分区中,FTFL_FCCOB4 = eeprom_size;即FTFL_FCCOB4=0x03,但是手册中要求FCCOB4[5:4]=11,所以程序中是不是应该是0x33呢?
F.jpg

评分

参与人数 1威望 +2 收起 理由
dongshan + 2

查看全部评分

 楼主| dongshan 发表于 2013-11-14 09:05 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2013-11-13 17:31
我看你的代码啊,前面的EEPROM_2K是0x03,然后,在分区中,FTFL_FCCOB4 = eeprom_size;即FTFL_FCCOB4=0x03 ...

谢谢版主,正是你所说的原因, FCCOB4[5:4]的值不为11造成的错误。

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

本版积分规则

79

主题

1144

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部