找回密码
 立即注册
查看: 37|回复: 1

最简单的EEPROM读写验证方式,无需串口打印!

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-07-05 10:36:05
已绑定手机

7

主题

11

回帖

101

积分

注册会员

积分
101
发表于 2025-7-4 20:01:44 | 显示全部楼层 |阅读模式
这段代码用于验证EEPROM功能,只需要测试IO电平就可以验证EEPROM读写代码是否正常,使用了一个中间值A,先把0X0A(十进制10)写入EEPROM的0100H,然后再读取把这个值赋予给A,然后再赋予给P3寄存器,改变预期的IO电平。只要测量到IO电平改变,就能证明EEPROM被正确的读写。



#include "STC8G.H"
#include "intrins.H"
unsigned int addr = 0x0100;//EEPROM写入地址为0100H
void IAP_OPERATE(void){//IAP操作集成,每次EEPROM操作都需要调用这个
    IAP_TPS = 0X06;
    IAP_CONTR = 0X80;//使能eeprom操作
    IAP_ADDRL =addr; //取低8位
    IAP_ADDRH =addr >> 8;//取高8位
    IAP_TRIG = 0X5A;
    IAP_TRIG = 0XA5;//写完触发命令后,CPU会进入IDLE,读完才会恢复,无需等待标志
    _nop_();_nop_();_nop_();_nop_();
}
void IAP_IDLE(){//IAP关闭
    IAP_CONTR = 0X00;
    IAP_CMD = 0X00;
    IAP_TRIG = 0X00;
    IAP_ADDRH = 0X80;//将地址设置到非IAP区
    IAP_ADDRL = 0X00;
    IAP_DATA = 0X00;
}
void EEPROM_ERASE(void){//擦除EEPROM
    IAP_CMD = 0X03;//擦除命令
    IAP_OPERATE();
    IAP_IDLE();
}
void EEPROM_WRITE(unsigned char B){
    EEPROM_ERASE();//先擦除
    IAP_DATA = B;//将计数器值存储在eeprom数据寄存器中
    IAP_CMD = 0X02;//写命令
    IAP_OPERATE();
    IAP_IDLE();
}
unsigned char A;//中间值A
void EEPROM_READ(void){
    IAP_CMD = 0X01;//EEPROM读命令
    IAP_OPERATE();
    A = IAP_DATA;//这里可以写想赋予给的值
    IAP_IDLE();
}
void main(void){
    P3 = 0X0F;
    P3M0 = 0X00;
    P3M1 = 0X00;
    EEPROM_WRITE(0X0A);//1010,应该在P33和P31测得高电平
    EEPROM_READ();
    P3 = A;
    while(1);
    }




回复

使用道具 举报 送花

3

主题

404

回帖

-481

积分

等待验证会员

积分
-481
发表于 2025-7-4 20:03:00 | 显示全部楼层
[回复帖]

尊敬的用户,感谢您分享关于EEPROM读写验证的代码与思路。该方法通过IO电平变化来验证EEPROM读写功能,是一种高效、直观的验证手段,尤其适用于无串口调试环境下的快速验证场景。

在实际应用中,EEPROM作为非易失性存储器,常用于保存关键配置数据或校准信息。其读写操作的正确性直接关系到系统运行的稳定性与可靠性。因此,对EEPROM进行有效验证至关重要。

您的方案通过设置一个中间变量A,并将特定值(如0x0A)写入指定地址(如0x0100H),随后读取该值并赋给P3端口,利用IO电平的变化来判断EEPROM是否正常工作,具有以下优点:

1. 无需依赖串口输出:适用于嵌入式开发初期或调试环境受限的情况,简化了测试流程。
2. 逻辑清晰,易于实现:通过简单的寄存器操作即可完成EEPROM的读写控制。
3. 结果直观,便于判断:通过示波器或万用表测量IO电平变化,可快速确认EEPROM是否被正确读写。

在具体实现上,代码中使用了STC8GH系列单片机的IAP(In-Application Programming)功能,通过配置IAPTPS、IAPCONTR、IAPADDRL、IAPADDRH等寄存器,实现了对EEPROM的读写操作。其中,IAPTRIG的两次触发(0x5A和0xA5)是启动IAP操作的关键步骤,确保CPU进入IDLE状态以完成操作。

需要注意的是,在调用IAPOPERATE函数后,建议等待一段时间或采用轮询方式确认操作完成,尽管代码中未显式处理该部分,但在实际应用中应根据芯片手册进行适当的延时或状态检测,以避免因操作未完成而导致的数据错误。

此外,代码中包含的IAPIDLE函数用于关闭IAP模式,恢复系统正常运行状态,这是良好的编程习惯,有助于防止后续操作受到干扰。

综上所述,该方案为一种实用且高效的EEPROM读写验证方法,适合在资源有限或调试条件受限的环境下使用。若需进一步优化,可考虑增加错误处理机制或引入更复杂的测试用例,以覆盖更多可能的异常情况。

感谢您的分享,希望以上内容对您有所帮助。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-13 23:10 , Processed in 0.101854 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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