摘要:
WCH开发资料合集 - JayWell - 博客园 (cnblogs.com) BLE博主推荐 CH579 CH573 CH582 芯片使用知识分享目录 - debugdabiaoge - 博客园 (cnblogs.com) iot-fan文章目录 - iot-fan - 博客园 (cnblogs. 阅读全文
摘要:
目录 TMOS系统中,每个taskID下都预留了一个事件编号0x8000,用于在不同的taskID中传递数据。由于0x8000占据了一个事件编号,故每个taskID下,用户只能最多自定义15个事件。 不同的taskID可以用于将不同的功能划分到不同的作用域中,将代码模块化,方便管理和移植。比如说某个 阅读全文
摘要:
目录 Backup升级方式,涉及到头/源文件的修改,代码改动量相比Onlyupdata升级方式来讲要更大。 Backup升级的优点:升级无需跳转,通过 基于24年9月9日的CH592EVT移植后的APP层工程见链接: 通过网盘分享的文件:592Peripheral_Extract_BackupOTA 阅读全文
摘要:
目录 使用沁恒的risc-v系列MCU,在MRS编译器中搭建一个工程,主要涉及到链接脚本文件(.ld文件)、头文件(.h文件)、源文件(.c文件)、启动文件(.s文件)、库文件(.a文件)。 本文以向新建工程中添加BLE从机功能为例,介绍如何配置各个路径。 注:当实在找不到哪里的路径配置出现问题时, 阅读全文
摘要:
目录 RF_PHY例程中,无线收发机底层配置在RF_Init中管理。 以沁恒的风格,在头文件中可以找到结构体定义及其说明: 详细说明见表格: 阅读全文
摘要:
目录 本篇博客主要收集CH57x、CH58x、CH59x的官方资料中没有提供或比较难找到的注意点、可以或难以规避的硬件设计。 ①天线设计: 在CH57x、CH58x、CH59x官方PCB资料中,天线电路中没有绘制匹配电路。在CH32V208的官方评估板中有绘制,如下图。 如果不过无线认证,天线馈线中 阅读全文
摘要:
目录 在CH582的EVT包USB设备例程中,已有端点0~3的全部代码。端点4~7在手册中有描述,不过在例程中没有给出。 在端点0~7中,端点0与端点4与众不同。端点0只拥有64字节DMA缓存。这是符合USB协议标准的。作为USB设备都要默认支持的端点,USB协议要求设备的端点0是双向通信的;而其他 阅读全文
摘要:
目录 Ⅰ.调用接口方面 ①codeflash与dataflash分为两组接口,详见EVT包中的FLASH例程。 codeflash基地址为0。读写codeflash的接口带有内核加解密。擦除flash不涉及加解密;擦除dataflash后读出4字节循环“乱码”是正常的。codeflash最小擦除单位 阅读全文
摘要:
目录 TMOS是沁恒自主产权的轻量级操作系统,可以说是为沁恒的MCU量身定制的。 如果用户在使用TMOS系统时,出现复位问题,最常见原因是应用层代码的ram越界访问、操作flash没有4字节对齐。其他复位问题,可以参考下方博客,利用定时器中断、看门狗中断和硬件错误中断来定位复位前PC指针指向哪里: 阅读全文
摘要:
目录 与多数沁恒家的MCU一样,V208的LD文件、启动文件使用的是公共文件,故不建议直接覆盖原路径中的文件,否则会导致其他工程的编译出问题。 本文以MultiCentPeri例程作为原始例程,为其添加外置BLE固定库的OTA框架。 步骤一:拷贝文件。 完整复制一份MultiCentPeri工程的文 阅读全文
摘要:
目录 链接: https://pan.baidu.com/s/1N2sTgsbTwWQnLHRzR2iZFw?pwd=wch6 提取码: wch6 在使用CH32V208实现万年历功能时,有以下几点特性需要注意 ①V208在跑BLE时,RTC分频默认配置为2分频约16K,无法配置为32768分频也就 阅读全文
摘要:
目录 重新执行如下步骤:新解压一份最新的EVT包,烧录peripheral例程hex,用“BLE调试助手”(各大安卓应用商场搜索下载)或者“lightblue”(IOS应用商店下载)搜索广播,确认一下现象,是无线信号弱,还是完全没有信号。 Ⅰ.如果是无线信号弱:①匹配电路有没有产生负面作用,把匹配电 阅读全文
摘要:
目录 沁恒微电子所有官方资料都可以通过官网页面右上角的搜索界面搜索到,还有极少工具或是资料没有经过官网给出,用户可以通过官方论坛搜索和发帖的方式获取需要的资料,一般都会给。 主页 - 沁恒微电子社区 (wch.cn) 绝大多数资料都可以在沁恒官网搜索相应的芯片型号获取: 搜索 - 南京沁恒微电子股份 阅读全文
摘要:
目录 在CH592上可以运行,用来给RSSI滤波。由于RSSI一般是-100~-20之间的数值,故数组类型是有符号数。 /******************* * 缓存迭代 * * 参数:uint8_t num 待加入的数值 * uint8_t *data 待处理的数组 * uint8_t len 阅读全文
摘要:
目录 CH32V208和CH582都是沁恒的支持BLE5.0+的MCU,下面介绍两者的区别。 选型方面: ①CH32V208比CH582的ram和零等待flash更多。使用CH582,对速度有要求的代码,需要放到ram中运行;使用V208,对速度有要求的代码可以放到零等待flash中,不会占用ram 阅读全文
摘要:
目录 以CH58x、CH59x为例,使用电池供电的应用,多数会选用Sleep或Shutdown等级的休眠,那么至少要有RTC或是GPIO唤醒中的其中一种手段唤醒MCU(BAT低电压唤醒取决于VIO33引脚上的电压,不是代码能够控制的,暂且排开)。 在BLE代码中,为了让BLE协议栈能够在休眠期间及时 阅读全文
摘要:
目录 EVT包中跑BLE的默认代码,一般只添加了必要的事件处理函数,且有一定的作用域范围。比如BLE从机例程中,Peripheral_TaskID是加了static修饰的,故以默认代码的逻辑,只能在peripheral.c中启用Peripheral_TaskID下的事件和对应的Peripheral_ 阅读全文
摘要:
目录 本文主要分析触摸屏的报表描述符,设备、配置描述符和其他描述符就不赘述了,可以参考HID类的JoyStick描述符 - JayWell - 博客园 (cnblogs.com)。 // 设备描述符 const uint8_t MyDevDescr[] = {0x12, 0x01, 0x10, 0x 阅读全文
摘要:
目录 本文针对沁恒微的蓝牙系列MCU即CH57x、58x、59x芯片,这几个系列的MCU低功耗逻辑相当类似。在BLE应用中,若出现功耗突然变高的情况,可以参考PM例程,用例程中的sleep和shutdown休眠,测试休眠的底电流。以下总结常见的底电流功耗异常原因及处理方式。 各个等级的休眠底电流,在 阅读全文
摘要:
目录 沁恒的BLE模块CH914x系列中,CH9141和CH9343支持通过UART串口识别AT指令。注意CH9140不支持AT指令。使用电脑作为上位机时,各类串口助手可以提供保存和发送自定义字符串的功能,不过很多应用场景下都是通过板子上另一片MCU来为BLE透传模块配置AT指令。以下提供帮助MCU 阅读全文
摘要:
目录 CH582这款芯片是能够同时跑mesh+BLE的,在我司提供的透传模型“一般节点”或者叫“普通节点”的代码adv_vendor中,也可以添加BLE功能,方便用户随时连接BLE。 在adv_vendor工程中添加BLE的操作步骤如下: ①如图配置预编译宏。 BLE_MAC:用于配置BLE广播所用 阅读全文
摘要:
目录 #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 阅读全文
摘要:
目录 以582为例,驱动DS18B20,可以移植到CH573、CH579等MCU上。 主函数所在源文件↓ #include "CH58x_common.h" #include "DS18B20.h" /* CMD_ROM: * 0x33 读ROM * 0x55 指定芯片 * 0xCC 跳过ROM阶段 阅读全文
摘要:
目录 在一些情况下,需要USB口的引脚复用成其他功能,比如说PB10、PB11要复用成定时器输出引脚;或者需要USB从机主动断开,类似某些杀毒软件带的“安全弹出”,不过杀毒软件操作的是电脑主机,在mcu代码中操作的是芯片从机。 代码也很简单,以USB1口为例,关闭USB的使能需要如下两行代码。如果需 阅读全文
摘要:
目录 一般来说HID设备的报表在端点数量资源充裕的情况下都走中断端点上传,不会走控制端点即端点0上传,如果资源不足,可以利用端点0上传报表,USB协议中也是支持在端点0上传报表的。 以CH582为例,EVT中的键鼠复合例程中,键盘走端点1而鼠标走端点2上传报表,互不耽误。如果端点资源比较紧张,多个设 阅读全文
摘要:
目录 硬件IIC的主从中断在582的最新EVT中已支持。 对于IIC从机中断,例程中已封装好中断处理过程,用户调用app_i2c时,初始化中需要配置回调函数。 初始化的配置如下。 struct i2c_slave_cb slave_user = { //配置回调结构体 .on_receive = i 阅读全文
摘要:
目录 本文中使用582测试,在整合先前博客中的代码的基础上,加上读写超时,加上返回值,加上16位从机寄存器地址的判断,希望读写各用一个函数就能解决硬件IIC的使用问题。 #include "CH58x_common.h" #define TIME_OUT 10000 //用于IIC读写超时,等待n次 阅读全文
摘要:
目录 沁恒蓝牙系列芯片中目前只有CH582/583以及208包含有硬件IIC外设,本文均使用582进行测试,其他沁恒芯片也可以参考本文排查。 先进行“常规”检查,检查相关引脚的焊接、线材是否断线或接触不良等问题,确定是否为IIC模块的问题。 如果582作硬件IIC主机: ①上电后是否进行了上电延时以 阅读全文
摘要:
目录 正常识别:可以在设备管理器中识别出USB Module 使用USB烧录的一般操作:按住评估板上的“Download”按键,或者将PB22短接到GND,同时给板子上电。若是第一次拿到芯片,codeflash中是空的,不用按住“Download”按键也可以被ISP工具识别。 如果碰到USB烧录异常 阅读全文
摘要:
目录 TMOS系统中自带有按键检测轮询功能,默认100ms检测一次,在debug时很有帮助。不过在需要低功耗休眠的前提下,检测按键需要频繁唤醒,影响功耗,故多数BLE的工程都没有用到这个功能。代码贴在了最后。 启用按键查询,先要在工程配置中添加HAL_KEY,以及确保KEY.c添加进编译。 然后添加 阅读全文
摘要:
目录 蓝牙mesh组网中的低功耗节点,在应用于低频率上传数据的传感器网络时有着得天独厚的功耗优势,在1min唤醒上传一包的情况下ch582的平均功耗仅有12uA,若每小时甚至每天采样一次数据并上传,平均功耗做到个位数轻轻松松。相比EVT中的例程,环境监测demo中对582的应用更充分,中心节点和低功 阅读全文
摘要:
目录 蓝牙mesh组网目前存在有入门门槛高的问题,比如,嵌入式工程师需要考虑到标准mesh模型的兼容,app开发工程师需要了解mesh协议栈才能直接走mesh与芯片通信。而沁恒官方提供的透传模型简洁易用,单则消息负载可达221字节,可选应答,自动分包;手机配网方案使用更常见的BLE协议与芯片交互配网 阅读全文
摘要:
目录 以沁恒的CH582芯片为例,主机模式下,在R8_USB_INT_EN中可以使能RB_UIE_DETECT位,由中断来提醒检测USB设备的接入和移除;从机模式下,USB设备没有这样的中断功能(上述寄存器的同一位被用来判断USB总线复位事件)。如何在从机模式下检测有没有接入到USB总线呢? 方法一 阅读全文
摘要:
目录 蓝牙mesh协议中有不少数据需要存储dataflash,以记录网络中的数据。一些数据只需要配网时保存进dataflash,比如说本节点的网络地址、各类密钥等;另一些数据需要在运行中动态更新,比如说消息序列号(seq num)等。 在芯片作为发送方时,在新增发送消息数达到seq保存步长时会保存相 阅读全文
摘要:
目录 串口接收中断在各蓝牙芯片的EVT中已经包含,不过并没有提供主机发送中断例程,本篇博客以CH582为例调试串口发送中断。 见手册中下表,发送保持寄存器空,或者使能发送中断时会触发中断。方法很简单,主函数中的处理:①判断标志是否需要发送数据,②将待发送数据拷贝到发送缓存,③手动使能发送中断,触发一 阅读全文
摘要:
目录 ①初始化及配网过程中出错 ②发送模型返回错误代码 ③发送方成功,接收方丢包 ①初始化及配网过程中出错 1.1.返回错误代码-16,表示给dataflash分配的单个扇区的空间不够,需要加大CONFIG_MESH_SECTOR_SIZE_DEF。 1.2.返回错误代码-2,表示重复配网。对于运用 阅读全文
摘要:
目录 沁恒的组网方式主要有2.4G私有协议组网和BLE mesh组网两大类。2.4G私有协议组网灵活性相对较高,对开发者的要求也相对较高。mesh组网本身有一系列规范,考虑到了可靠性、安全性、功能性等等方面,分了网络层、上下传输层、接入层、模型层,层层封装,各司其职,但同时也是一种限制,发包速率远不 阅读全文
摘要:
目录 CH582的官方EVT在22年7月更新后,修改了手机配网代码以支持wch mesh手机app。使用该app可以保存手动配网信息,设置订阅地址分组,OTA升级,极大方便了用户管理节点。 老版本的EVT中也有对手机配网的支持,但是只有一条指令,即向节点配置net key、节点主元素地址,并没有涉及 阅读全文
摘要:
目录 在22年7月版本的CH583EVT更新之后,582芯片的adv_vendor_self_provision_with_peripheral例程,适配了wch mesh手机app,支持了OTA,成为功能最全的一个例程。但是默认例程适合常供电的节点,改为wch mesh配网的低功耗节点,需要做一些 阅读全文
摘要:
目录 沁恒的蓝牙系列芯片,有映射硬件模块去其他引脚的功能,可以配置各芯片的功能引脚重映射寄存器(R16_PIN_ALTERNATE),或者使用函数GPIOPinRemap函数进行配置。 比如说想要配置串口2重映射到PB22、23,可以调用如下代码↓ GPIOPinRemap(ENABLE, RB_P 阅读全文
摘要:
目录 用现有的资源,去实现本应该用更多资源来实现的需求,是一件很有意思的事情。不是说提倡这样使用,而是换一种思路解决问题比较新奇,或是在很多限制既定的情况下可以应急。 比如说,582m芯片,默认用32位计算,而无符号32位二进制数据,最多可以存放的十进制数为4,294,967,295,是个4开头的1 阅读全文