背景信息
这篇文章主要是根据ams官方文档整理出来, 用于升级传感器的内部新固件FW,体验优化的功能,具体可看fw的历史,初始版是1.1.0,新买的sensor需要先刷2.0.0,用了几天,老化过后再刷2.0.1,猜测是内部数据校验不一样。

准备工作
- 硬件使用STM32F103C8T6 + CCS811;
- 软件部分是Arduino IDE + JDK1.8+ 记事本
- 硬件连接:
stm32F1 pin | CCS811 pin
3.3v —> VCC
GND --> GND
PB6 --> SCL
PB7 --> SDA
PC13 --> Wake
ps: STM32F103C8T6+Arduino 环境搭建方法,另外PC13是同时控制一个LED灯,可以通过它间接看升级时的状态
实现思路
把新固件FW里面的xx.bin文件,转换成C语言数组形式,附加到Arduino项目里面去,再经过I2C把新固件FW推送到CCS811里面去。

ps:本来想是用串口发给stm32的,但是用Arduino IDE发现数据接收不完整,放弃这个方法。
效果打印
新买的sensor固件的状态:

升级过程中,升级过程预计在30-40S,要稍微等一下:

升级完再看下版本,新买的需要先升级到2.0.0:

老化后再升级到2.0.1:

固件转换成数组部分
Java工具源码 bin2arry.java ,转换前的xx.bin文件需要在同目录下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
class bin2arry{
public static void main(String[] args) throws IOException {
String binName = args[0]+".bin";
String outFileName = args[0]+".h"

本文档介绍了如何使用Arduino IDE和STM32F103C8T6对CCS811传感器进行固件升级。通过将新固件转换为C语言数组并利用I2C接口传输到传感器中。详细步骤包括背景介绍、所需硬件和软件、转换过程以及升级效果的展示。
最低0.47元/天 解锁文章
1234





