【经验】主控MCU芯片使用flash作EEPROM使用时代码异常丢失该如何解决?
近日,某客户反应,有一批仪表产品返修率突然很高(约30%),“症状”表现为代码丢失,并且,初步用了一些措施后,还是不能根除“病患”,这是什么原因?又该如何解决呢?
现场了解到,客户的产品是一个NTC型测温仪表,选用了SILICON LABS的C8051F350作为主控MCU,利用其24位精度ADC进行高精度模数转换。为了保存校准数据,及相关环境参数,并避免外扩EEPROM增加成本,他们充分利用了Silicon Labs C8051F350单片机FLASH可以作EEPROM使用的特性,使用了8位MCU C8051F350没有用的FLASH部分,拿出来存储客户自己的数据。
而且,还了解到,这个仪表的最终用户,他们是用在大型锅炉房内测温的,环境比较恶劣,产品之间用串口通讯,有电机,使用环境温度最高可以到约60℃等。
根据以前的经验, C8051F350这种拿FLASH作EEPROM使用、以及使用在工业锅炉房(环境恶劣)的用法,是典型的导致FLASH数据丢失的应用。而且,现场检查客户的板子还发现,他们使用了外部无源晶体,串口在通讯中,基本未做端口保护,3.3V系统上电容较大,这些更加“奠定了数据丢失的基础”。
根据多年的经验,Silicon Labs的8位MCU,不论C8051F系列还是新推的EFM8系列,都可以拿FLASH作EEPROM使用,只要方法正确,它不仅可以被放心大胆地用,更能给客户带来方便以及减少外扩EEPROM成本的好处。
那么,拿FLASH作EEPROM使用时要注意哪些方法呢?这也是上述C8051F350的FLASH异常丢失的有效解决方案。
措施一:FLASH的擦除代码及写代码,要严格遵守Silicon Labs提供数据手册要求的操作步骤来,比如在擦除代码中,首先禁止中断,然后置'1'程序存储器擦除允许位(PSCTL中的PSEE),以允许FLASH扇区擦除等,这在相应数据手册中都有详细的描述。
措施二:在给MCU供电(比如3.3V)的系统上,所接的电容不要太大,总体要控制在10uf左右,以此来减少该电源系统的上电时间,从而降低MCU在上电期间异常复位的概率。
措施三:对于凡是通过导线同外部连接的端口,或其他可能引入干扰的端口,要通过串电阻(比如100欧姆)、加TVS、加电容(比如10pf),等方式来进行端口保护,以此来减少芯片的异常复位。
措施四:在系统时钟选择上,尽量使用内部时钟。对于需要特殊频率或特殊精度、需要使用外部时钟的,也尽量要选择有源时钟。而对于选择了无源时钟的,晶体外壳一定要接地。并且,只要是选择了外部晶体的,在布局上都要尽量向MCU靠拢。如此,可大大降低系统时钟异常导致的单片机异常复位。
措施五:在启动配置文件(startup.A51)中,要用汇编语言,做如下处理:
1)开启电源监控【mov VDM0CN,#080H】;
2)将电源监控设为复位源【mov RSTSRC, #02H】;
3)关闭看门狗【mov PCA0MD,#040H】;
4)延时30ms.【可选】
当正确地使用了上述措施后,就可有效杜绝拿FLASH作EEPROM使用时代码异常丢失的现象。
相关技术文档:
Silicon Labs C8051F350/1/2/3 MCU数据手册 详情>>>
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 16
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(16)
-
用户56731903 Lv9. 科学家 2018-10-27很好!学习了!!
-
lg Lv4. 资深工程师 2018-01-10很好的文章
-
心有林夕 Lv4. 资深工程师 2017-12-30学习了
-
大欢哥 Lv7. 资深专家 2017-12-17谢啦,学习了
-
风一样的男子 Lv6. 高级专家 2017-12-17不错
-
用户46743402 Lv4. 资深工程师 2017-12-16好文章,学习
-
Elike Lv6. 高级专家 2017-12-09学习了,以后的应用中会多加注意
-
木鱼 Lv7. 资深专家 2017-12-08好货啊
-
Wayne Lv7. 资深专家 2017-11-30学习了
-
kelven Lv8. 研究员 2017-11-25收藏下,学习
相关推荐
【经验】Silicon Labs 8位单片机EFM8BB21 GPIO输出配置与调试
Silicon Labs 创新型8位MCU提供完全集成的体验,非常适合物联网应用,提供了也接最快的速度和最低的功耗,同时EFM8系列车用8位MCU为当前市场上最具价值、最灵活和集成度更高的车载MCU。 GPIO为单片机中最常使用的功能,本文将以P0.0端口为例分享EFM8BB21的GPIO输出配置与调试。
【经验】芯科EFM8BB31F64G 8位MCU使用SPI0作为唤醒中断源时的注意事项
芯科的EFM8BB31F64G是一款8位的MCU内置12位ADC以及4通道12位DAC使用8051内核,工作频率可到50MHz,提供了IIC、SPI、UART等丰富的外围通讯接口,是工业控制、医疗仪器等众多嵌入式应用的最佳选择。
【经验】如何正确使用8位MCU的PortMatch功能
Silicon Labs的8位MCU(C8051和EFM8)都具有PortMatch功能,此功能允许一个或多个端口IO引脚上的逻辑电平变化触发系统事件。
SILICON LABS 8-bit Microcontroller选型表
SILICON LABS 8位MCU选型,MCU Core 8051,频率20MHz~100MHz,Flash存储2kB~120kB,RAM存储0.25kB~8kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Dig I/O Pins
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
DAC
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
EMIF
|
CAN
|
LIN
|
VREF
|
Debug Interface
|
C8051F392-A-GM
|
8位MCU
|
C8051F39x Small Form Factor
|
50
|
16
|
1
|
1.8
|
3.6
|
QFN20
|
4x4
|
±2
|
17
|
10-bit, 16-ch., 500 ksps
|
Temp Sensor
|
6
|
3
|
10-bit, 2-ch.
|
1
|
1
|
1
|
2
|
0
|
0
|
0
|
0
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
【产品】集成12位高速ADC、DAC的8位MCU C8051F00x,最高执行速度达25MIPS
C8051F00x系列是Silicon Labs的一款高集成度的混合信号8位MCU,采用强大的8051微处理器,最高执行速度可达25MIPS。还集成了12位/10位多通道ADC、VDD监控器、看门狗定时器、时钟振荡器以及其他通用部件,可以作为真正的独立片上系统解决方案,可应用于诸如便携式医疗器械、测试设备和光纤系统等领域。
【经验】芯科EFM8BB31F64G 8位MCU低功耗使用注意事项
芯科的EFM8BB31F64G是一款8位的MCU,内置12位ADC以及4通道12位DAC使用8051内核,工作频率可到50MHz,提供了IIC、SPI、UART等丰富的外围通讯接口,是工业控制、医疗仪器等众多嵌入式应用的最佳选择。
最高精度的ADC采样的单片机,能够达到多少位?
Silicon Labs 8位MCU C8051F350集成的ADC可以达到24位。还有芯海科技的8位MCU CSU8RP1186/CSU18MB86等集成的ADC也可以达到24位、芯海的BLE SOC CST34M96集成的ADC也是24位的。
【产品】小蜜蜂8位MCU助您轻松迎接物联网时代
Silicon labs推出了一款集小封装和高性价比于一身的多用途8位MCU EFM8BB1,可轻松替代普通8051家族的MCU产品。
SILICON LABS C8051F35x Analog-Intensive MCUs选型表
SILICON LABS 8位MCU选型,基于50MHz Frequency,8kB Flash,0.75kB RAM等参数进行选型
产品型号
|
品类
|
MCU Core
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
5 Volt Tolerant
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
DAC
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
I2S
|
EMIF
|
CAN
|
LIN
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
VREF
|
Debug Interface
|
C8051F350
|
MCU
|
8051
|
50
|
8
|
0.75
|
17
|
5 Volt Tolerant
|
24-bit, 8-ch., 1 ksps
|
Temp Sensor
|
4
|
3
|
8-bit, 2-ch.
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
2.7
|
3.6
|
QFP32
|
9x9
|
±2
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
Silicon Labs 8位单片机EFM8BB31 SPI通信调试注意事项
Silicon Labs EFM8BB31是一款资源丰富,高效率,小体积的8位单片机,已被许多用户选用,被广泛应用于消费电子,精密仪器,电源管理,工业控制自动化,智能传感器,汽车控制,安防监控等领域。在开发过程中,经常使用到SPI通信,EFM8BB31支持3线或4线模式的SPI主模式和从模式,在调试SPI通信的过程,有哪些注意事项呢?本文将详细介绍。
【经验】PCB布线技巧:8位单片机端口Crossbar功能的使用及配置
如果单片机自带Crossbar功能,只要软件配置调整一下各端口功能,PCB布线就会畅通。
【应用】芯科科技高性能8位单片机EFM8BB31F32G用于音频放大器,集成多达四个12位DAC
本文介绍Silicon Labs 8位单片机EFM8BB31F16G-D-QFN24R用于音频放大器,优势:最高工作频率50MHz,稳定性好;集成一个12位ADC、四个具备同步和PWM功能的12位DAC;FLASH从16KB~64KB可选等。
EFM32单片机应用系列一:手持式激光测距仪设计参考
EFM32在众多领域有着不容小觑的作用,应用系列一讲述手持式激光测距仪设计参考,EFM32众多优势极大地缩短了开发者的开发时间。
8位单片机EFM8系列中芯片上的UID是什么?
UID是芯片中新加的全球唯一ID,即每个芯片的ID都是不一样的,EFM8系列的MCU上都包含此ID。有两类获取UID的方式,一种通过读取RAM的特定地址获得,一种通过读取Flash的特定地址获得。在早期引入此ID的MCU上(比如EFM8BB1/SB1/SB2)这个ID为32位,在芯片复位时(PC指针被复位至0之前)被复制至RAM中特定位置,用户程序可以读取其值。此位置的RAM仍然可以由用户使用。需要注意的是如果此位置被编译器分配了变量,那么当函数执行至main()时此位置的内容会被初始化代码覆盖。EFM8UB2的UID也是此类,但其位数为128位。在新的EFM8系列MCU上(比如EFM8BB3/LB1/UB1),UID位数为128位,存储在Flash上。
Silicon Labs 8位MCU 复位后是否可初始化位可加性RAM/BDATA(地址0x20-0x2F)?
是的,在启动文件(startup.a51或silabs_startup.a51)中,位可寻址的ram被初始化为0x00。
电子商城
现货市场
服务
可定制均温板VC最薄0.4mm,有效导热系数超5,000 W / m·K(纯铜(401 W/m·K ,石墨烯1,200 W/m·K)。工作温度范围同时满足低于-250℃和高于2000℃的应用,定制最低要求,项目年采购额大于10万人民币,或采购台套数大于2000套。
提交需求>
提供7~27寸工控机定制,支持嵌⼊式/ 壁挂式 /桌⾯式/悬挂式等安装方式,采用纯平⾯板IP65防尘防⽔等级,莫⽒7级硬度触摸屏,兼容多种操作系统:组态软件/安卓/XP/win7/8/10/Linux等,支持主板、接⼝、外观、⽀架、刷卡器、⾝份证阅读器、LOGO、⻨克⻛、系统、电池、蓝⽛、4G/5G、摄像头、GPS系统、⼆维码扫描器、指纹等特殊应⽤场景定制
最小起订量: 1台 提交需求>
登录 | 立即注册
提交评论