这是描述信息

无线通信模组ESP32-C3芯片乐鑫技术方案LED调光驱动开发非易失性存储

无线通信模组ESP32-C3芯片乐鑫技术方案LED调光驱动开发非易失性存储

无线通信模组ESP32-C3芯片乐鑫技术方案LED调光驱动开发非易失性存储

无线通信模组ESP32-C3芯片乐鑫技术方案LED调光驱动开发非易失性存储

无线通信模组ESP32-C3芯片乐鑫技术方案LED调光驱动开发非易失性存储

无线通信模组ESP32-C3芯片乐鑫技术方案LED调光驱动开发非易失性存储,LED 调光驱动开发在了解 LED驱动的基础知识后,便可以基于 ESP32-C3 芯片开发 LED调光驱动,该驱动的开发主要包括操作 LED灯开关、亮度、颜色、色温控制等功能 API的开发。在日常生活中,通常都希望在下一次开灯时,灯的颜色、亮度、色温和当前的状态保持一致,这就需要保存当前的状态,这个功能可依靠无线通信模组ESP32-C3芯片乐鑫技术方案ESP-IDF 中的非易失性存储 (NVS) 来实现。在编写驱动程序的代码前,还需要了解 ESP32-C3 芯片的 PWM 外设和编程方式,以及非易失性存储。


非易失性存储
无线通信模组ESP32-C3芯片乐鑫技术方案ESP-IDF 中的非易失性存储可以通过调用 esp_partition.h 中的 API 来使用主 Flash的部分存储空间,用于在主 Flash 中存储键值对格式的数据。由于 NVS 存储是永久性的,因此即便设备重启或断电,存储的数据也不会丢失。NVS 在 Flash 中有一个专门的分区,该分区用来存储数据,NVS 支持多种数据类型的存储,如整型、以 NULL 结尾的字符串和二进制数据等。NVS 经过了专门设计,不但可以防止设备断电带来的数据损坏,而且还可以将写入的数据分布到整个 NVS 中,以处理 Flash 磨损的问题。


NVS 适合存储一些较小的数据,而非字符串或二进制大对象 (BLOB) 等较大的数据。如果需要存储较大的 BLOB 或者字符串,则考虑使用基于磨损均衡库的 FAT 文件系统。在物联网工程项目中,NVS 既可以存储产品的唯一性的量产数据,也可以存储任何与应用程序相关的用户数据。


下面将介绍几个 NVS 的关键概念:键值对、命名空间、安全性、篡改性及鲁棒性。

1.键值对
NVS 的操作对象为键值对,即键:值 (key:value),其中的键是 ASCII 字符串,当前支持的大键长为 15 个字符,值可以为以下几种类型:
整型:uint8_t,int8 tuint16 t,int16 t,uint32 t、int32 t,uint64 t和int64_t.
以0 结尾的字符串。
可变长度的二进制数据。
2.命名空间
为了减少不同组件之间键名的潜在冲突,NVS 为每个键值对分配给了一个命名空间。命名空间的命名规则遵循键名的命名规则,即多可占用 15 个字符。命名空间的名称是通过调用nvs open()或nvs open from part()等函数指定的,函数调用后将返回一个不透明句柄,该句柄用于后续调用nvs get *()、nvs set *()nvs commit()等函数。这样一个句柄就关联了一个命名空间,某个命名空间中的键名就不会与其他命名空间中相同键名发生冲突了。请注意,不同 NVS 分区中具有相同名称的命名空间将被视为不同的命名空间。
3.安全性、篡改性及鲁棒性
NVS 在加密后,数据能够以加密的形式存储。如果未启用NVS 加密,则任何具有 Flash 物理访问权限的用户都可以修改、擦除或添加键值对。NVS 加密后,如果不知道相应的 NVS 加密密钥,则无法修改或添加键值对并将其标识为有效键值。但是,擦除操作没有相应的防篡改功能。无线通信模组ESP32-C3芯片乐鑫技术方案当 Flash 处于不一致状态时,NVS 会尝试进行恢复。在任何时间关闭设备电源后重新上电,都不会导致数据丢失;但如果关闭设备电源时正在写入新的键值对,则该键值对就可能丢失


LED PWM 控制器
ESP32-C3的PWM 控制器可以生成6 路独立的数字波形,具有如下特性:
具有6个独立的PWM生成器 (即6个通道)。
具有4个独立定时器,可实现小数分频。
占空比可自动渐变(即PWM 占空比可逐渐增加或减小,无须 SP32-C3 干预),渐变完成时产时产生中断。
PWM 的输出信号相位可调节。
在Lightsleep 低功耗模式下可输出 PWM信号。
PWM信号的大精度14位。


4个定时器具有相同的功能和运行方式,下文将 4 个定时器统称为 Timerx(x 的范围是0~3)个。PWM 生成器的功能和运行方式也相同,下文将统称为 PWMn (n 的范围是0~5S)。4个定时器可独立配置(可配置时钟分频器和计数器大值),每个定时器内部都有一个时时基计数器(即基于基准时钟周期计数的计数器)。每个 PWM生成器都选择4个定时器中的一个,以该定时器的计数值为基准生成 PWM 信号。要生成PWM 信号,无线通信模组ESP32-C3芯片乐鑫技术方案PWM 生成器 (PWMn)就需选择一个定时器 (Timerx)。每个PWM 生成器均可单独配置,在 4个定时器中选择一个输出 PWM 信号。PWM 生成器主要包括一个高低电平比较器和两个选择器。PWM 生成器将比较定时器的 14位计数值 (Timerx_cnt)与高低电平比较器的值 (Hpointn 和 Lpointn),如果定时器的计数值等于Hpointn 或 Lpointn,PWM 信号可以输出高电平或低电平。


PWM 生成器可以渐变 PWM 信号的占空比,即由一种占空比逐渐变为另一种占空比。如果开启了占空比渐变功能,Lpointn 的值会在计数器溢出固定次数后递增或递减。


LED PWM 编程
了解了无线通信模组ESP32-C3芯片乐鑫技术方案ESP32-C3的PWM 控制器后,还需要根据ESP-IDF 提供的LEDPWMAPI对PWM控制器进行配置,让 PWM 控制器按照预期的行为进行控制。PWM 控制器的配置可分三步完成。
(1)定时器的配置。指定 PWM 信号的频率、占空比分辨率。
(2) 通道配置。绑定定时器和输出 PWM 信号的 GPIO。
(3)驱动 LED。输出 PWM 信号来驱动 LED,可通过软件控制或硬件渐变功能来改变 LED的亮度。

地址:深圳市宝安区西乡街道麻布社区宝安互联网产业基地A区6栋7栋7706

邮箱:Sales@ferry-semi.com

版权所有©2020  深圳市飞睿科技有限公司  粤ICP备2020098907号    飞睿科技微波雷达wifi模块网站地图