前言

基本概述
CH9141K是沁恒微电子推出的一款低功耗蓝牙(BLE4.2)串口透传芯片,支持主/从机模式和广播模式,主要用于实现蓝牙与串口数据的双向透明传输。其核心特点包括:
- 封装形式:ESSOP10(紧凑型封装,适合小型化设计)。
- 工作电压:2.0V~3.6V(典型3.3V),支持低功耗设计(待机电流<1μA)。
- 通信接口:UART串口(波特率1200bps~1Mbps),集成MODEM流控信号(CTS/RTS)。
- 附加功能:提供GPIO控制、ADC采集、蓝牙名称/厂商信息配置等。
主要功能与模式
- 透传模式:无需二次开发,直接通过串口或蓝牙指令配置参数(如AT指令)。
- 多模式支持:
- 从机模式:可被手机/PC等蓝牙主机发现并连接。
- 主机模式:主动扫描并连接其他蓝牙设备。
- 广播模式:单向发送数据(如传感器数据广播)。
- 虚拟串口驱动:兼容Windows/Linux/Android/iOS系统,支持串口调试工具直接使用。
CH9141K.JS文件示例
示例文件CH9141K.js内容如下
function serialize(str) {
// 检查是否为十六进制格式 [xx xx xx]
if (str.match(/^\[([\da-fA-F]{2}\s*)+\]$/)) {
// 移除[]并分割成数组
const hexValues = str.slice(1, -1).trim().split(/\s+/);
// 转换为Uint8Array
return new Uint8Array(hexValues.map(hex => parseInt(hex, 16)));
}
// 普通字符串处理
str = str.replace(/\\r/g, '\r')
.replace(/\\n/g, '\n')
.replace(/\\t/g, '\t')
.replace(/\\f/g, '\f')
.replace(/\\b/g, '\b')
.replace(/\\v/g, '\v');
const data = new TextEncoder('gbk').encode(str);
return data;
}
function deserialize(array) {
let len = array.findIndex(item => item == 10);
len += len >= 0 ? 1 : 0;
return len > 0 ? len : array.length;
}
function arrayShow(array) {
let log = '';
let logTip = '[' + array.length + '] ';
console.log(array);
// 生成HEX字符串
array.forEach(hex => {
logTip += hex.toString(16).padStart(2, '0') + ' ';
});
// 创建一个新的Uint8Array来存储数据
const data = new Uint8Array(array.slice(0, array.length + 1));
try {
// 使用TextDecoder解码Uint8Array
log = new TextDecoder().decode(data);
} catch (error) {
console.error('解码错误:', error);
log = '';
}
return {
log: log,
logTip: logTip,
};
}
async function custom(port) {
alert("自定义执行例子,发送一个'hello'")
const writer = port.writable.getWriter();
try {
await writer.write(serialize("hello"));
// return true;
} finally {
writer.releaseLock();
}
}
function customJson() {
return [
{
name: "进入 AT 配置",
str:"AT...\\r\\n"
},
{
name: "复位芯片",
str:"AT+RESET\\r\\n"
},
{
name: "获取芯片版本号",
str:"AT+VER\\r\\n"
},
{
name: "查询开机语",
str:"AT+HELLO?\\r\\n"
},
{
name: "设置开机语123",
str:"AT+HELLO=123\\r\\n"
},
{
name: "重置所有参数",
str:"AT+RELOAD\\r\\n"
},
{
name: "显示芯片信息",
str:"AT+SHOW\\r\\n"
},
{
name: "保存当前参数",
str:"AT+SAVE\\r\\n"
},
{
name: "退出 AT 配置",
str:"AT+EXIT\\r\\n"
},
{
name: "查询串口参数",
str:"AT+UART?\\r\\n"
},
{
name: "设置串口参数115200,8,n,1",
str:"AT+UART=115200,8,1,0,50\\r\\n"
},
{
name: "查询本地 MAC 地址",
str:"AT+MAC?\\r\\n"
},
{
name: "查询发射功率",
str:"AT+TPL?\\r\\n"
},
//设置蓝牙发射功率,x 支持的参数:0(0DB)、1(1DB)、2(2DB)、3(3DB)、4(-3DB)、5(-8DB)、6(-14DB)、7(-20DB)
{
name: "设置发射功率(3DB)",
str:"AT+TPL=3\\r\\n"
},
{
name: "设置发射功率(0DB)",
str:"AT+TPL=0\\r\\n"
},
{
name: "设置发射功率(-3DB)",
str:"AT+TPL=4\\r\\n"
},
//广播模式 主机模式 从机模式
//状态码 含义 状态码 含义 状态码 含义
//00 未初始化 00 未初始化 00 未初始化
//01 设备初始化完成 01 扫描 01 设备初始化完成
//02 广播 02 连接中 02 广播
// 03 连接成功 03 准备广播状态
// 04 断开连接中 04 连接超时
// 05 连接成功
//07 错误 07 错误
{
name: "查询蓝牙状态",
str:"AT+BLESTA?\\r\\n"
},
{
name: "查询蓝牙工作模式",
str:"AT+BLEMODE?\\r\\n"
},
{
name: "设置蓝牙工作模式(广播)",
str:"AT+BLEMODE=0\\r\\n"
},
{
name: "设置蓝牙工作模式(主机)",
str:"AT+BLEMODE=1\\r\\n"
},
{
name: "设置蓝牙工作模式(从机)",
str:"AT+BLEMODE=2\\r\\n"
},
{
name: "获取当前连接 MAC 地址",
str:"AT+CCADD?\\r\\n"
},
{
name: "主机扫描",
str:"AT+SCAN=ON\\r\\n"
},
{
name: "查询主机默认连接",
str:"AT+CONADD?\\r\\n"
},
{
name: "新增主机默认连接",
str:"AT+CONADD=05:DF:39:4C:99:B4,123456\\r\\n"
},
{
name: "清空主机默认连接",
str:"AT+CLRCONADD\\r\\n"
},
{
name: "查询从机密码",
str:"AT+PASS?\\r\\n"
}
];
}