打印

EEPROM模块应用

[复制链接]
630|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxmmi|  楼主 | 2018-9-5 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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));
            }
沙发
zwll| | 2018-9-5 17:32 | 只看该作者

EEPROM 写操作时需要提供一定的电流,这个电流值不是恒定的,而是根据当前芯片核心的温度来调整的

使用特权

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

使用特权

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

使用特权

评论回复
5
dingy| | 2018-9-5 17:44 | 只看该作者

这段代码不是出现死循环,CySpcReadData(dieTemperature, 2) 返回的不是具体温度值而是 Data Size(返回值是否是 2 bytes). 只要测量结束,返回值的 size 是 2bytes 是无疑的,所以不会死循环。

使用特权

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

使用特权

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

使用特权

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

使用特权

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

使用特权

评论回复
10
xxmmi|  楼主 | 2018-9-5 18:02 | 只看该作者

哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

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

本版积分规则

369

主题

4278

帖子

2

粉丝