打印
[MCU]

请教如何预置仪表的出厂参数?

[复制链接]
483|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一般仪表都有一些用户参数,仪表就根据这些参数运行,这些参数由厂家预先设定原始值,用户也可以随时修改。
现在的问题是:电路板焊好后,无论是FLASH或者EEPROM里都是一片空白,并没有任何参数。如何将厂家的原始值(或者叫出厂值)存入板子呢?
我希望达到这样的效果:在给新板子下载程序的时候,出厂参数同时也保存到FLASH或者EEPROM里了,不需要下载程序的人额外再做别的工作。以后仪表每次上电,都会自动从保存的地方读取参数以供程序运行。用户也可以修改这些参数,修改后的新值也会自动保存到同样的地方去。

我设想在程序里定义一个常量数组,内容就是各出厂参数值,然后将数组通过绝对地址定位到FLASH的靠后区域(不与程序存储区发生冲突)。这样在下载程序的时候,出厂参数自然也保存到FLASH里了。同时程序里定义一个变量数组,其格式与前面的常量数组完全相同。每次上电,从FLASH里读取参数给变量数组,仪表就根据变量数组里的值来运行。同时用户可以随意修改,修改后的新值既刷新变量数组,也刷新FLASH里保存出厂值的区域。但是,我遇到问题:一旦修改参数之后,FLASH里的值自然就变了,与出厂值不同了,这是正常的。但下次上电后,程序依然会执行绝对地址定位,将常量数组保存到FLASH里,此时就发生冲突了,因为FLASH里已经保存了用户修改后的新值了,而常量数组是出厂值。我实际试验了一下,发现程序好像进入了数组越界的状态!

不知道我讲清楚没有?我想所有仪表都需要预置出厂参数吧?但貌似讨论这方面事情的人很少。我也琢磨了另外一种方式来解决问题,就是利用自定义的标志实现目标,实践证明是行之有效的。但是,我依然想知道大家都用什么简单方法?

提前祝各位新年快乐!

使用特权

评论回复

相关帖子

沙发
雪山飞狐D| | 2020-1-24 17:04 | 只看该作者
     参数数据存储在I2C  EEPROM里面,每次开机都从I2C EEPROM调入数据参数,仪表上面按键有特殊方式进入工程界面,然后进行对参数的调整,调整完保存到I2C EEPROM就行了
     数据区可分为用户设置区和出厂默认区,用特殊按键模式可以进行出厂数据恢复,只要有这两个区,其他的都是程序的小设计罢了

使用特权

评论回复
板凳
youwoowoo| | 2020-1-24 18:18 | 只看该作者
采用内部带EEPROM的MCU,出厂参数和用户参数不要放置在同一扇区,避免保存用户参数时把出厂参数清除。

使用特权

评论回复
地板
我爱学习一切|  楼主 | 2020-1-25 19:01 | 只看该作者
youwoowoo 发表于 2020-1-24 18:18
采用内部带EEPROM的MCU,出厂参数和用户参数不要放置在同一扇区,避免保存用户参数时把出厂参数清除。 ...

我用的片子没有内部EEPROM,只能把内部FLASH的某部分空闲区域模拟成EEPROM用来保存用户参数

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝