摘要: 目录 蓝牙mesh组网目前存在有入门门槛高的问题,比如,嵌入式工程师需要考虑到标准mesh模型的兼容,app开发工程师需要了解mesh协议栈才能直接走mesh与芯片通信。而沁恒官方提供的透传模型简洁易用,单则消息负载可达221字节,可选应答,自动分包;手机配网方案使用更常见的BLE协议与芯片交互配网 阅读全文
posted @ 2022-11-25 19:38 JayWell 阅读(2333) 评论(2) 推荐(0)
摘要: 目录 以沁恒的CH582芯片为例,主机模式下,在R8_USB_INT_EN中可以使能RB_UIE_DETECT位,由中断来提醒检测USB设备的接入和移除;从机模式下,USB设备没有这样的中断功能(上述寄存器的同一位被用来判断USB总线复位事件)。如何在从机模式下检测有没有接入到USB总线呢? 方法一 阅读全文
posted @ 2022-11-22 15:38 JayWell 阅读(1041) 评论(0) 推荐(0)
摘要: 目录 蓝牙mesh协议中有不少数据需要存储dataflash,以记录网络中的数据。一些数据只需要配网时保存进dataflash,比如说本节点的网络地址、各类密钥等;另一些数据需要在运行中动态更新,比如说消息序列号(seq num)等。 在芯片作为发送方时,在新增发送消息数达到seq保存步长时会保存相 阅读全文
posted @ 2022-11-16 19:15 JayWell 阅读(1087) 评论(0) 推荐(1)
摘要: 目录 串口接收中断在各蓝牙芯片的EVT中已经包含,不过并没有提供主机发送中断例程,本篇博客以CH582为例调试串口发送中断。 见手册中下表,发送保持寄存器空,或者使能发送中断时会触发中断。方法很简单,主函数中的处理:①判断标志是否需要发送数据,②将待发送数据拷贝到发送缓存,③手动使能发送中断,触发一 阅读全文
posted @ 2022-11-14 14:22 JayWell 阅读(1324) 评论(0) 推荐(0)
摘要: 目录 配网及发包失败: 发送方成功,接收方收包异常: 建议两蓝牙mesh节点的布置距离在100m以内,如果距离太远且没有中继,或者TTL数值不够没有中继到,或者干扰太大,真的没收到包,那没办法在代码层面处理。如果收发双方距离适当,检查接收方是否真的“丢包”,就需要查看一些底层参数。蓝牙mesh不走连 阅读全文
posted @ 2022-10-27 19:13 JayWell 阅读(3002) 评论(0) 推荐(0)
摘要: 目录 沁恒的组网方式主要有2.4G私有协议组网和BLE mesh组网两大类。2.4G私有协议组网灵活性相对较高,对开发者的要求也相对较高。mesh组网本身有一系列规范,考虑到了可靠性、安全性、功能性等等方面,分了网络层、上下传输层、接入层、模型层,层层封装,各司其职,但同时也是一种限制,发包速率远不 阅读全文
posted @ 2022-10-25 14:21 JayWell 阅读(3938) 评论(0) 推荐(0)
摘要: 目录 CH582的官方EVT在22年7月更新后,修改了手机配网代码以支持wch mesh手机app。使用该app可以保存手动配网信息,设置订阅地址分组,OTA升级,极大方便了用户管理节点。 老版本的EVT中也有对手机配网的支持,但是只有一条指令,即向节点配置net key、节点主元素地址,并没有涉及 阅读全文
posted @ 2022-08-11 19:40 JayWell 阅读(4418) 评论(0) 推荐(1)
摘要: 目录 在22年7月版本的CH583EVT更新之后,582芯片的adv_vendor_self_provision_with_peripheral例程,适配了wch mesh手机app,支持了OTA,成为功能最全的一个例程。但是默认例程适合常供电的节点,改为wch mesh配网的低功耗节点,需要做一些 阅读全文
posted @ 2022-08-09 20:43 JayWell 阅读(2232) 评论(0) 推荐(0)
摘要: 目录 沁恒的蓝牙系列芯片,有映射硬件模块去其他引脚的功能,可以配置各芯片的功能引脚重映射寄存器(R16_PIN_ALTERNATE),或者使用函数GPIOPinRemap函数进行配置。 比如说想要配置串口2重映射到PB22、23,可以调用如下代码↓ GPIOPinRemap(ENABLE, RB_P 阅读全文
posted @ 2022-07-29 16:44 JayWell 阅读(887) 评论(0) 推荐(0)
摘要: 目录 用现有的资源,去实现本应该用更多资源来实现的需求,是一件很有意思的事情。不是说提倡这样使用,而是换一种思路解决问题比较新奇,或是在很多限制既定的情况下可以应急。 比如说,582m芯片,默认用32位计算,而无符号32位二进制数据,最多可以存放的十进制数为4,294,967,295,是个4开头的1 阅读全文
posted @ 2022-07-28 09:51 JayWell 阅读(327) 评论(0) 推荐(0)
摘要: 目录 一、在工程中单独设置预编译宏 二、将变量存放到指定RAM地址 三、串口打印浮点数 四、添加64位数据打印 五、使用math数学库 六、关闭仿真时自动清dataflash功能 七、配置printf待打印数据不加\n换行 八、修改编译器输出hex文件的位置 RISC-V单片机集成开发环境(IDE) 阅读全文
posted @ 2022-07-21 17:53 JayWell 阅读(5935) 评论(0) 推荐(0)
摘要: 目录 笔者在接触以太网之前,先了解的是蓝牙mesh的各类信息。现翻看一本介绍TCP/IP协议的资料,发现应用层数据在以太网协议栈内的封装过程与蓝牙mesh协议栈内的封装过程异曲同工。下图左侧是手头这本TCP/IP协议中的分层图示,下图右侧是我能找到的蓝牙mesh协议中分层相关的结构表示得比较清晰的图 阅读全文
posted @ 2022-07-06 20:11 JayWell 阅读(731) 评论(0) 推荐(0)
摘要: 目录 参考调试MPU6050与EEPROM的经验,整合了目标内存/寄存器地址是否为16位的情况,合并了单字节与多字节间的操作,添加了返回值与读写超时功能:硬件IIC的7位从机地址查询方式读写参考代码 - JayWell - 博客园 (cnblogs.com) 根据手上这片EEPROM的型号,24LC 阅读全文
posted @ 2022-06-22 10:09 JayWell 阅读(1098) 评论(0) 推荐(1)
摘要: 目录 参考调试MPU6050与EEPROM的经验,整合了目标内存/寄存器地址是否为16位的情况,合并了单字节与多字节间的操作,添加了返回值与读写超时功能:硬件IIC的7位从机地址查询方式读写参考代码 - JayWell - 博客园 (cnblogs.com) 很久以前听说过硬件IIC的“难用”,也在 阅读全文
posted @ 2022-06-03 15:09 JayWell 阅读(2379) 评论(0) 推荐(2)
摘要: 目录 使用配网器配网方式: 在之前的文章中介绍了CH582单片机在蓝牙mesh组网中的两种配网方式,有介绍到:未配网设备不能选择被哪个配网器配网,配网器可以选择给哪个未配网设备配网。接下来介绍在哪里可以有选择配网。 BLE中有相对完善的黑白名单机制,可惜蓝牙mesh并没有沿用或是发展黑白名单,只能在 阅读全文
posted @ 2022-05-20 15:30 JayWell 阅读(2632) 评论(0) 推荐(0)
摘要: 目录 CH582的官方EVT中,除了代理节点例程和天猫精灵例程外都提供了厂商定义的透传模型。 模型位于蓝牙mesh网络协议中的最上层,负责标准化用户应用场景的实例,比如说开关模型、亮度模型、风速模型。由于蓝牙mesh网络中所有数据都经由广播承载层传输,根据网络地址来区分节点,判断数据来源,也就缺少了 阅读全文
posted @ 2022-05-19 10:46 JayWell 阅读(2782) 评论(0) 推荐(0)
摘要: 目录 1.12版本规范的GamePad参考报表描述符,报表格式如下图。 用CH582模拟GamePad,在电脑上显示的HID接口↓ 报表描述符↓,其他描述符可以直接参考JoyStick相关一文,改一下HID类描述符中的一个长度值即可,见文章最后。 const uint8_t GamePadRepDe 阅读全文
posted @ 2022-05-18 11:16 JayWell 阅读(1623) 评论(4) 推荐(0)
摘要: 目录 未配网设备在配好网,被纳入网络后,可称之为节点。 蓝牙mesh网络中,节点可以有选择地支持四大功能——朋友、低功耗、转发、代理功能,可以复用多个功能(由于单片机硬件限制,ch582除了复用转发功能外不建议复用其他功能),或者作为边缘节点或者说普通节点——不启用任何一个功能,做好用户自定义的工作 阅读全文
posted @ 2022-05-16 14:17 JayWell 阅读(2971) 评论(0) 推荐(0)
摘要: 目录 本测试基于CH582m单片机,尝试进行简单的组网。 沁恒官方EVT中提供了两种配网方式——配网器配网和自配网。 ①配网器配网:用一个设备(一块582开发板)作为配网器,也就是沁恒蓝牙mesh软件开发参考手册中的“中心节点”。配网器可以管理网络,进行配网、设置订阅地址、删除节点等操作。 ②自配网 阅读全文
posted @ 2022-05-13 17:05 JayWell 阅读(5923) 评论(0) 推荐(2)
摘要: 目录 51单片机的串口并没有配置FIFO硬件,故收发数据时只能一字节一字节地收发。最近接触了FIFO(先进先出)的硬件缓存,这样串口的配置就更多了一个维度。 以CH58x系列单片机为例,在CH583的手册中(笔者手头的是CH582m的板子,与CH583用法一致,只有部分硬件不同),有关于串口和FIF 阅读全文
posted @ 2022-03-02 15:32 JayWell 阅读(1533) 评论(0) 推荐(0)
摘要: 目录 本程序改编自沁恒官网2022年1月更新的CH583EVT中的CompoundDev例程。这里只贴了main.c中的程序。能够实现:①直接接电脑,在设备管理器中能够查到被电脑识别为HID-compliant game contorller;②在CH582m单片机中自定义了回包内容,通过USB抓包 阅读全文
posted @ 2022-03-02 15:05 JayWell 阅读(1510) 评论(0) 推荐(1)
摘要: 目录 应用程序改自沁恒官网的CH583EVT包中的CompoundDev工程,配合下方的描述符能够实现①直接接电脑,在设备管理器中能够查到被电脑识别为HID- compliant game contorller;②在CH582m单片机中自定义了回包内容,通过USB抓包工具可以抓到单片机模拟的JoyS 阅读全文
posted @ 2022-03-01 21:31 JayWell 阅读(2759) 评论(0) 推荐(2)
摘要: 目录 先前在582上实现了“上位机通过串口1发送指令规定串口2和3的波特率,实现串口2和3之间的数据透传”的功能,其实更普遍的用法就是串口间的透传,没有前提条件,故笔者在573上又用结构体封了一下相关变量,看上去更规整些,并加上了查询发送与中断发送切换的宏。接收方向上,都是中断接收的没有区别。 复制 阅读全文
posted @ 2022-03-01 15:54 JayWell 阅读(2604) 评论(0) 推荐(0)