💡
原文中文,约3000字,阅读约需8分钟。
📝
内容提要
介绍了使用CH32V003的代码存储区域来模拟EEPROM保存数据的方法,包括Flash的擦写时间和擦写寿命等特性。通过Flash模拟EEPROM的相关库方法,完成EEPROM的加载、读取和写入操作。设计外壳使DIY USB电流表更像一个正式产品。
🎯
关键要点
- 介绍了使用CH32V003的代码存储区域模拟EEPROM保存数据的方法。
- CH32V003拥有16KB的用户代码区域,固件占用约12K空间,可以利用剩余空间模拟EEPROM。
- Flash擦写时间为2~3毫秒,擦写寿命有限,需控制数据保存频率。
- 每分钟保存一次数据在20W充电情况下,丢失的数据占比不到1%。
- 可采取额外保存策略,如在总消耗电量无变化时不写入Flash。
- CH32V003的Flash支持标准编程和快速编程,适合保存累计电量数据。
- 实现了Flash模拟EEPROM的相关库方法,包括加载、读取和写入操作。
- 定义了变量以确定数据保存策略,并在系统启动时加载之前保存的数据。
- 测试后确认累计电量数据能够正确保存和重新加载。
- 完成DIY USB电流表固件开发,支持数据测量、历史曲线和数据保存功能。
- 设计外壳使DIY USB电流表更像正式产品,防止短路风险。
- USB电流表所有资料已开源,提供固件代码、PCB生产文件和外壳STL文件。
❓
延伸问答
如何使用CH32V003模拟EEPROM保存数据?
可以利用CH32V003的16KB用户代码区域,通过编写相关库方法来实现Flash模拟EEPROM的加载、读取和写入操作。
CH32V003的Flash擦写时间和寿命是怎样的?
CH32V003的Flash擦写64字节需要2~3毫秒,擦写寿命有限,需控制数据保存频率以避免损坏。
在USB电流表中,如何减少Flash的擦写次数?
可以在总消耗电量无变化时不写入Flash,或者设置每分钟保存一次数据,以减少擦写次数。
DIY USB电流表的固件开发完成了哪些功能?
固件开发完成了电压电流数据显示、功率计算、多页面切换、历史功率曲线绘制及数据保存等功能。
如何在系统启动时加载之前保存的数据?
在系统启动时调用adc_setup方法,可以加载之前保存的累计电量数据。
USB电流表的所有资料在哪里可以找到?
所有资料已开源,可以在GitHub仓库中获取,包括固件代码、PCB生产文件和外壳STL文件。
➡️