DIY USB 电流表(9):Flash 模拟 EEPROM 存储累计电量

DIY USB 电流表(9):Flash 模拟 EEPROM 存储累计电量

💡 原文中文,约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文件。

➡️

继续阅读