打印

在全温度范围应用内置EEPROM

[复制链接]
966|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangpe|  楼主 | 2015-9-17 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PSOC3 EEPROM模块应用中,有个温度问题,没有相关文档详细说明。
CyFlash.c中有一段代码,会出现死循环吗?
如果要在全温度范围应用内置EEPROM,应如何处理?

            /* Write the command. */
            if(CySpcWriteCommand(0, 0) == CYRET_STARTED)
            {
                do
                {
                    if(CySpcReadData(dieTemperature, 2) == 2)
                    {
                        status = CYRET_SUCCESS;
                        /* Spin until idle. */
                        while(!(*SPC_STATUS & SPC_SPC_IDLE))
                        {
                            CyDelayUs(1);
                        }
                        break;
                    }
                    /* Spin until completion. */
                } while(!(*SPC_STATUS & SPC_SPC_IDLE));
            }
沙发
zhuww| | 2015-9-17 22:32 | 只看该作者
EEPROM 写操作时需要提供一定的电流,这个电流值不是恒定的,而是根据当前芯片核心的温度来调整的

使用特权

评论回复
板凳
zhanglli| | 2015-9-17 22:33 | 只看该作者
对,这样可以保证在全温度范围内 EEPROM 写操作的可靠性

使用特权

评论回复
地板
lium| | 2015-9-17 22:33 | 只看该作者
是的,这也是为什么在 EEPROM 写操作前需要调用 CySetTemp() 函数来获取当前芯片的核心温度。

使用特权

评论回复
5
guoyt| | 2015-9-17 22:33 | 只看该作者
这段代码不是出现死循环,CySpcReadData(dieTemperature, 2) 返回的不是具体温度值而是 Data Size(返回值是否是 2 bytes). 只要测量结束,返回值的 size 是 2bytes 是无疑的,所以不会死循环。

使用特权

评论回复
6
hanwe| | 2015-9-17 22:34 | 只看该作者
使用该模块时,如果芯片的环境温度变化不大(5度之内),只要在初次写操作之前调用 CySetTemp(),不必每次都调用。

使用特权

评论回复
7
yufe| | 2015-9-17 22:34 | 只看该作者
嗯,但是如果温度变化 大于5 度,则需要再次调用该函数以获取最新的芯片核心温度。

使用特权

评论回复
8
llia| | 2015-9-17 22:34 | 只看该作者
如果你不是经常写 EEPROM 的话, 每次写之前调用就好了

使用特权

评论回复
9
langgq| | 2015-9-17 22:35 | 只看该作者
是啊,如果写的比较频繁,那么可以选择定时调用该函数。

使用特权

评论回复
10
wangpe|  楼主 | 2015-9-17 22:35 | 只看该作者
嗯呢,多谢大家指点

使用特权

评论回复
11
leijixiaomile| | 2015-9-18 17:02 | 只看该作者
原来如此,学习了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

938

主题

9837

帖子

2

粉丝