摘要: WCH开发资料合集 - JayWell - 博客园 (cnblogs.com) BLE博主推荐 CH579 CH573 CH582 芯片使用知识分享目录 - debugdabiaoge - 博客园 (cnblogs.com) iot-fan文章目录 - iot-fan - 博客园 (cnblogs. 阅读全文
posted @ 2022-12-12 17:02 JayWell 阅读(1966) 评论(0) 推荐(2) 编辑
摘要: 目录 TMOS是沁恒自主产权的轻量级操作系统,可以说是为沁恒的MCU量身定制的。 如果用户在使用TMOS系统时,出现复位问题,最常见原因是应用层代码的ram越界访问、操作flash没有4字节对齐。其他复位问题,可以参考下方博客,利用定时器中断、看门狗中断和硬件错误中断来定位复位前PC指针指向哪里: 阅读全文
posted @ 2024-04-22 11:50 JayWell 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 目录 与多数沁恒家的MCU一样,V208的LD文件、启动文件使用的是公共文件,故不建议直接覆盖原路径中的文件,否则会导致其他工程的编译出问题。 本文以MultiCentPeri例程作为原始例程,为其添加外置BLE固定库的OTA框架。 步骤一:拷贝文件。 完整复制一份MultiCentPeri工程的文 阅读全文
posted @ 2024-03-20 17:23 JayWell 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 目录 链接:https://pan.baidu.com/s/17l_nwhnSAKrhSEXSqqfLzA?pwd=wch6提取码:wch6 在使用CH32V208实现万年历功能时,有以下几点特性需要注意 ①V208在跑BLE时,RTC分频默认配置为2分频约16K,无法配置为32768分频也就是1H 阅读全文
posted @ 2024-02-24 11:05 JayWell 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 目录 重新执行如下步骤:新解压一份最新的EVT包,烧录peripheral例程hex,用“BLE调试助手”(各大安卓应用商场搜索下载)或者“lightblue”(IOS应用商店下载)搜索广播,确认一下现象,是无线信号弱,还是完全没有信号。 Ⅰ.如果是无线信号弱:①匹配电路有没有产生负面作用,把匹配电 阅读全文
posted @ 2023-12-27 13:45 JayWell 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 目录 沁恒微电子所有官方资料都可以通过官网页面右上角的搜索界面搜索到,还有极少工具或是资料没有经过官网给出,用户可以通过官方论坛搜索和发帖的方式获取需要的资料,一般都会给。 主页 - 沁恒微电子社区 (wch.cn) 绝大多数资料都可以在沁恒官网搜索相应的芯片型号获取: 搜索 - 南京沁恒微电子股份 阅读全文
posted @ 2023-10-20 20:43 JayWell 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 目录 在CH592上可以运行,用来给RSSI滤波。由于RSSI一般是-100~-20之间的数值,故数组类型是有符号数。 /******************* * 缓存迭代 * * 参数:uint8_t num 待加入的数值 * uint8_t *data 待处理的数组 * uint8_t len 阅读全文
posted @ 2023-09-27 20:19 JayWell 阅读(94) 评论(0) 推荐(1) 编辑
摘要: 目录 CH32V208和CH582都是沁恒的支持BLE5.0+的MCU,下面介绍两者的区别。 选型方面: ①CH32V208比CH582的ram和零等待flash更多。使用CH582,对速度有要求的代码,需要放到ram中运行;使用V208,对速度有要求的代码可以放到零等待flash中,不会占用ram 阅读全文
posted @ 2023-09-14 20:22 JayWell 阅读(219) 评论(0) 推荐(0) 编辑
摘要: CH582手册中是有标明有8组USB端点的,不过代码中只用了端点0~4,端点5、6、7也是可以使用的。 占个坑代码后续更新。 阅读全文
posted @ 2023-09-08 10:01 JayWell 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 目录 以CH58x、CH59x为例,使用电池供电的应用,多数会选用Sleep或Shutdown等级的休眠,那么至少要有RTC或是GPIO唤醒中的其中一种手段唤醒MCU(BAT低电压唤醒取决于VIO33引脚上的电压,不是代码能够控制的,暂且排开)。 在BLE代码中,为了让BLE协议栈能够在休眠期间及时 阅读全文
posted @ 2023-08-31 15:36 JayWell 阅读(456) 评论(2) 推荐(0) 编辑
摘要: 目录 EVT包中跑BLE的默认代码,一般只添加了必要的事件处理函数,且有一定的作用域范围。比如BLE从机例程中,Peripheral_TaskID是加了static修饰的,故以默认代码的逻辑,只能在peripheral.c中启用Peripheral_TaskID下的事件和对应的Peripheral_ 阅读全文
posted @ 2023-07-31 20:44 JayWell 阅读(414) 评论(1) 推荐(0) 编辑
摘要: 目录 本文主要分析触摸屏的报表描述符,设备、配置描述符和其他描述符就不赘述了,可以参考HID类的JoyStick描述符 - JayWell - 博客园 (cnblogs.com)。 // 设备描述符 const uint8_t MyDevDescr[] = {0x12, 0x01, 0x10, 0x 阅读全文
posted @ 2023-06-29 14:05 JayWell 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 目录 本文针对沁恒微的蓝牙系列MCU即CH57x、58x、59x芯片,这几个系列的MCU低功耗逻辑相当类似。在BLE应用中,若出现功耗突然变高的情况,可以参考PM例程,用例程中的sleep和shutdown休眠,测试休眠的底电流。以下总结常见的底电流功耗异常原因及处理方式。 各个等级的休眠底电流,在 阅读全文
posted @ 2023-05-29 17:19 JayWell 阅读(444) 评论(0) 推荐(1) 编辑
摘要: 目录 沁恒的BLE模块CH914x系列中,CH9141和CH9343支持通过UART串口识别AT指令。注意CH9140不支持AT指令。使用电脑作为上位机时,各类串口助手可以提供保存和发送自定义字符串的功能,不过很多应用场景下都是通过板子上另一片MCU来为BLE透传模块配置AT指令。以下提供帮助MCU 阅读全文
posted @ 2023-05-12 14:27 JayWell 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 目录 CH582这款芯片是能够同时跑mesh+BLE的,在我司提供的透传模型“一般节点”或者叫“普通节点”的代码adv_vendor中,也可以添加BLE功能,方便用户随时连接BLE。 在adv_vendor工程中添加BLE的操作步骤如下: ①如图配置预编译宏。 BLE_MAC:用于配置BLE广播所用 阅读全文
posted @ 2023-03-31 15:29 JayWell 阅读(985) 评论(0) 推荐(1) 编辑
摘要: 目录 #include <stdio.h> int main() { char char_a = 0x88; short short_a = 0x8848; unsigned char u_char_a = 0x88; unsigned short u_short_a = 0x8848; print 阅读全文
posted @ 2023-03-10 17:34 JayWell 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 目录 以582为例,驱动DS18B20,可以移植到CH573、CH579等MCU上。 主函数所在源文件↓ #include "CH58x_common.h" #include "DS18B20.h" /* CMD_ROM: * 0x33 读ROM * 0x55 指定芯片 * 0xCC 跳过ROM阶段 阅读全文
posted @ 2023-03-10 17:11 JayWell 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 目录 在一些情况下,需要USB口的引脚复用成其他功能,比如说PB10、PB11要复用成定时器输出引脚;或者需要USB从机主动断开,类似某些杀毒软件带的“安全弹出”,不过杀毒软件操作的是电脑主机,在mcu代码中操作的是芯片从机。 代码也很简单,以USB1口为例,关闭USB的使能需要如下两行代码。如果需 阅读全文
posted @ 2023-02-28 11:14 JayWell 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 目录 一般来说HID设备的报表在端点数量资源充裕的情况下都走中断端点上传,不会走控制端点即端点0上传,如果资源不足,可以利用端点0上传报表,USB协议中也是支持在端点0上传报表的。 以CH582为例,EVT中的键鼠复合例程中,键盘走端点1而鼠标走端点2上传报表,互不耽误。如果端点资源比较紧张,多个设 阅读全文
posted @ 2023-02-21 17:43 JayWell 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 目录 硬件IIC的主从中断在582的最新EVT中已支持。 对于IIC从机中断,例程中已封装好中断处理过程,用户调用app_i2c时,初始化中需要配置回调函数。 初始化的配置如下。 struct i2c_slave_cb slave_user = { //配置回调结构体 .on_receive = i 阅读全文
posted @ 2023-02-01 17:33 JayWell 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 目录 本文中使用582测试,在整合先前博客中的代码的基础上,加上读写超时,加上返回值,加上16位从机寄存器地址的判断,希望读写各用一个函数就能解决硬件IIC的使用问题。 #include "CH58x_common.h" #define TIME_OUT 10000 //用于IIC读写超时,等待n次 阅读全文
posted @ 2022-12-16 10:08 JayWell 阅读(772) 评论(0) 推荐(0) 编辑
摘要: 目录 沁恒蓝牙系列芯片中目前只有CH582/583以及208包含有硬件IIC外设,本文均使用582进行测试,其他沁恒芯片也可以参考本文排查。 先进行“常规”检查,检查相关引脚的焊接、线材是否断线或接触不良等问题,确定是否为IIC模块的问题。 如果582作硬件IIC主机: ①上电后是否进行了上电延时以 阅读全文
posted @ 2022-12-15 13:48 JayWell 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 目录 正常识别:可以在设备管理器中识别出USB Module 使用USB烧录的一般操作:按住评估板上的“Download”按键,或者将PB22短接到GND,同时给板子上电。若是第一次拿到芯片,codeflash中是空的,不用按住“Download”按键也可以被ISP工具识别。 如果碰到USB烧录异常 阅读全文
posted @ 2022-12-14 15:28 JayWell 阅读(855) 评论(0) 推荐(0) 编辑
摘要: 目录 TMOS系统中自带有按键检测轮询功能,默认100ms检测一次,在debug时很有帮助。不过在需要低功耗休眠的前提下,检测按键需要频繁唤醒,影响功耗,故多数BLE的工程都没有用到这个功能。代码贴在了最后。 启用按键查询,先要在工程配置中添加HAL_KEY,以及确保KEY.c添加进编译。 然后添加 阅读全文
posted @ 2022-12-12 16:43 JayWell 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 目录 蓝牙mesh组网中的低功耗节点,在应用于低频率上传数据的传感器网络时有着得天独厚的功耗优势,在1min唤醒上传一包的情况下ch582的平均功耗仅有12uA,若每小时甚至每天采样一次数据并上传,平均功耗做到个位数轻轻松松。相比EVT中的例程,环境监测demo中对582的应用更充分,中心节点和低功 阅读全文
posted @ 2022-12-07 19:01 JayWell 阅读(760) 评论(2) 推荐(0) 编辑
摘要: 目录 蓝牙mesh组网目前存在有入门门槛高的问题,比如,嵌入式工程师需要考虑到标准mesh模型的兼容,app开发工程师需要了解mesh协议栈才能直接走mesh与芯片通信。而沁恒官方提供的透传模型简洁易用,单则消息负载可达221字节,可选应答,自动分包;手机配网方案使用更常见的BLE协议与芯片交互配网 阅读全文
posted @ 2022-11-25 19:38 JayWell 阅读(1417) 评论(2) 推荐(0) 编辑
摘要: 目录 以沁恒的CH582芯片为例,主机模式下,在R8_USB_INT_EN中可以使能RB_UIE_DETECT位,由中断来提醒检测USB设备的接入和移除;从机模式下,USB设备没有这样的中断功能(上述寄存器的同一位被用来判断USB总线复位事件)。如何在从机模式下检测有没有接入到USB总线呢? 方法一 阅读全文
posted @ 2022-11-22 15:38 JayWell 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 目录 蓝牙mesh协议中有不少数据需要存储dataflash,以记录网络中的数据。一些数据只需要配网时保存进dataflash,比如说本节点的网络地址、各类密钥等;另一些数据需要在运行中动态更新,比如说消息序列号(seq num)等。 在芯片作为发送方时,在新增发送消息数达到seq保存步长时会保存相 阅读全文
posted @ 2022-11-16 19:15 JayWell 阅读(523) 评论(0) 推荐(1) 编辑
摘要: 目录 串口接收中断在各蓝牙芯片的EVT中已经包含,不过并没有提供主机发送中断例程,本篇博客以CH582为例调试串口发送中断。 见手册中下表,发送保持寄存器空,或者使能发送中断时会触发中断。方法很简单,主函数中的处理:①判断标志是否需要发送数据,②将待发送数据拷贝到发送缓存,③手动使能发送中断,触发一 阅读全文
posted @ 2022-11-14 14:22 JayWell 阅读(593) 评论(0) 推荐(0) 编辑
摘要: 目录 ①初始化及配网过程中出错 ②发送模型返回错误代码 ③发送方成功,接收方丢包 ①初始化及配网过程中出错 1.1.返回错误代码-16,表示给dataflash分配的单个扇区的空间不够,需要加大CONFIG_MESH_SECTOR_SIZE_DEF。 1.2.返回错误代码-2,表示重复配网。对于运用 阅读全文
posted @ 2022-10-27 19:13 JayWell 阅读(1559) 评论(0) 推荐(0) 编辑
摘要: 目录 沁恒的组网方式主要有2.4G私有协议组网和BLE mesh组网两大类。2.4G私有协议组网灵活性相对较高,对开发者的要求也相对较高。mesh组网本身有一系列规范,考虑到了可靠性、安全性、功能性等等方面,分了网络层、上下传输层、接入层、模型层,层层封装,各司其职,但同时也是一种限制,发包速率远不 阅读全文
posted @ 2022-10-25 14:21 JayWell 阅读(1790) 评论(0) 推荐(0) 编辑
摘要: 目录 CH582的官方EVT在22年7月更新后,修改了手机配网代码以支持wch mesh手机app。使用该app可以保存手动配网信息,设置订阅地址分组,OTA升级,极大方便了用户管理节点。 老版本的EVT中也有对手机配网的支持,但是只有一条指令,即向节点配置net key、节点主元素地址,并没有涉及 阅读全文
posted @ 2022-08-11 19:40 JayWell 阅读(2184) 评论(0) 推荐(0) 编辑
摘要: 目录 在22年7月版本的CH583EVT更新之后,582芯片的adv_vendor_self_provision_with_peripheral例程,适配了wch mesh手机app,支持了OTA,成为功能最全的一个例程。但是默认例程适合常供电的节点,改为wch mesh配网的低功耗节点,需要做一些 阅读全文
posted @ 2022-08-09 20:43 JayWell 阅读(1184) 评论(0) 推荐(0) 编辑
摘要: 目录 沁恒的蓝牙系列芯片,有映射硬件模块去其他引脚的功能,可以配置各芯片的功能引脚重映射寄存器(R16_PIN_ALTERNATE),或者使用函数GPIOPinRemap函数进行配置。 比如说想要配置IIC重映射到PB20、21,可以调用如下代码↓ GPIOPinRemap(ENABLE, RB_P 阅读全文
posted @ 2022-07-29 16:44 JayWell 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 目录 用现有的资源,去实现本应该用更多资源来实现的需求,是一件很有意思的事情。不是说提倡这样使用,而是换一种思路解决问题比较新奇,或是在很多限制既定的情况下可以应急。 比如说,582m芯片,默认用32位计算,而无符号32位二进制数据,最多可以存放的十进制数为4,294,967,295,是个4开头的1 阅读全文
posted @ 2022-07-28 09:51 JayWell 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 目录 一、在工程中单独设置预编译宏 二、将变量存放到指定RAM地址 三、串口打印浮点数 四、添加64位数据处理 五、使用math数学库 六、关闭仿真时自动清dataflash功能 七、配置printf待打印数据不加\n换行 八、修改编译器输出hex文件的位置 RISC-V单片机集成开发环境(IDE) 阅读全文
posted @ 2022-07-21 17:53 JayWell 阅读(2730) 评论(0) 推荐(0) 编辑
摘要: 目录 笔者在接触以太网之前,先了解的是蓝牙mesh的各类信息。现翻看一本介绍TCP/IP协议的资料,发现应用层数据在以太网协议栈内的封装过程与蓝牙mesh协议栈内的封装过程异曲同工。下图左侧是手头这本TCP/IP协议中的分层图示,下图右侧是我能找到的蓝牙mesh协议中分层相关的结构表示得比较清晰的图 阅读全文
posted @ 2022-07-06 20:11 JayWell 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 目录 参考调试MPU6050与EEPROM的经验,整合了目标内存/寄存器地址是否为16位的情况,合并了单字节与多字节间的操作,添加了返回值与读写超时功能:硬件IIC的7位从机地址查询方式读写参考代码 - JayWell - 博客园 (cnblogs.com) 根据手上这片EEPROM的型号,24LC 阅读全文
posted @ 2022-06-22 10:09 JayWell 阅读(686) 评论(0) 推荐(1) 编辑
摘要: 目录 参考调试MPU6050与EEPROM的经验,整合了目标内存/寄存器地址是否为16位的情况,合并了单字节与多字节间的操作,添加了返回值与读写超时功能:硬件IIC的7位从机地址查询方式读写参考代码 - JayWell - 博客园 (cnblogs.com) 很久以前听说过硬件IIC的“难用”,也在 阅读全文
posted @ 2022-06-03 15:09 JayWell 阅读(989) 评论(0) 推荐(0) 编辑
摘要: 目录 使用配网器配网方式: 在之前的文章中介绍了CH582单片机在蓝牙mesh组网中的两种配网方式,有介绍到:未配网设备不能选择被哪个配网器配网,配网器可以选择给哪个未配网设备配网。接下来介绍在哪里可以有选择配网。 BLE中有相对完善的黑白名单机制,可惜蓝牙mesh并没有沿用或是发展黑白名单,只能在 阅读全文
posted @ 2022-05-20 15:30 JayWell 阅读(1490) 评论(0) 推荐(0) 编辑
摘要: 目录 CH582的官方EVT中,除了代理节点例程和天猫精灵例程外都提供了厂商定义的透传模型。 模型位于蓝牙mesh网络协议中的最上层,负责标准化用户应用场景的实例,比如说开关模型、亮度模型、风速模型。由于蓝牙mesh网络中所有数据都经由广播承载层传输,根据网络地址来区分节点,判断数据来源,也就缺少了 阅读全文
posted @ 2022-05-19 10:46 JayWell 阅读(1613) 评论(0) 推荐(0) 编辑