打印
[PSoC™]

PSOC 4 闪存 Em_EEPROM 读写时卡住的问题及解决方法

[复制链接]
766|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 IFXJone 于 2024-4-9 15:24 编辑

Symptoms




Diagnosis
       客户使用 PSOC 4 CY8C4147AZI-S455 设计了遥控器,实现了 Segment LCD+ Capsense+ 系统控制功能,使用 Flash Em_EEPROM(版本:V2.2)组件存储系统参数,该遥控器在酒店客房使用,当房间 ID 卡插入供电间时,交流电接通,室内空调和遥控器开始工作,当取出 ID 卡时,交流电断电,室内空调和遥控器停止工作。他们反馈遥控器在工作数月后无法启动且无显示。然而我们读取了坏的遥控器,发现代码部分都是一样的,但EEPROM 数据彼此不同。

       我们对损坏的遥控器重新编程,它又能正常运行了
Solution
      我们检查了KBA227502&KBA227530 &KBA228069,并修改了cy_em_eeprom.c中的以下代码


但我们仍然发现Cy_Em_EEPROM_Write() 存在以下问题

for(; i <= seqNum; i++)

{

    ......

}

当 seqNum=0xFFFFFFFF 时,for 循环将***循环下去,没有机会跳出。

因此,我们需要在它之前添加一些特殊处理

if(seqNum >= (0xFFFFFFF0))

{

    seqNum=1;

}




我们修改了cy_em_eeprom.c,并下载了附件中的文件。

请按以下路径更新:

C:/Program Files (x86)/Cypress\PSoC Creator\4.X\PSoC Creator\psoc\content\CyComponentLibrary\CyComponentLibrary.cylib\Em_EEPROM_Dynamic_v2_X\API



注:cy_em_eeprom的C文件请见附件。










cy_em_eeprom.zip

10.25 KB

使用特权

评论回复
沙发
小夏天的大西瓜| | 2024-4-22 21:55 | 只看该作者
导致问题发生的原因是程序代码的问题?

使用特权

评论回复
板凳
中国龙芯CDX| | 2024-4-23 15:35 | 只看该作者
楼主这种情况是不是程序BUG呢?

使用特权

评论回复
地板
suncat0504| | 2024-4-30 16:24 | 只看该作者
如果硬件上没有问题,大抵是程序上的处理逻辑有问题。

使用特权

评论回复
5
suncat0504| | 2024-4-30 16:25 | 只看该作者
作为硬件工程师,有时候,整个程序太复杂了,涉及面多,就很难在整体上完整把握处理逻辑。容易出纰漏。太不容易了。

使用特权

评论回复
6
suncat0504| | 2024-4-30 16:26 | 只看该作者
就像I2C处理时候,如果遇到某个中断的处理,稍微耽误点时间,就会导致I2C通讯错误。

使用特权

评论回复
7
suncat0504| | 2024-4-30 16:28 | 只看该作者
单片机的主频越来越高,希望外设的通讯速度也能跟得上。像I2C这种,通常也就几百K,太慢了。对比下,SPI比I2C更稳定、好用。

使用特权

评论回复
8
埃娃| | 2024-4-30 16:43 | 只看该作者
这应该是程序bug吧

使用特权

评论回复
9
可怜的小弗朗士| | 2024-4-30 17:00 | 只看该作者
这个在官方例程中修复了吗

使用特权

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

本版积分规则

18

主题

26

帖子

0

粉丝