修订时间:2024-10-29
频段 | 频率范围 | Ndiv | REG2<15:13> |
---|---|---|---|
Band1 | 384MHz~512MHz | 4 | 0 |
Band2 | 128MHz~170MHz | 12 | 1 |
Band3 | 43MHz~57MHz | 36 | 4 |
Band4 | 35MHz~46MHz | 44 | 5 |
Band5 | 24MHz~32MHz | 64 | 6 |
指令格式为AT+{指令}[=参数1,参数2,...]
单条命令最大长度为255字节,最大参数个数为128
16进制数据使用16进制字符串表示,例如"0x0400","0400","400"均为16进制的0x0400
* 仅型号LXB可用
指令 | 说明 | 参数 | 示例 | 响应示例 | 备注 |
---|---|---|---|---|---|
AT+EEPR=<addr> | 读取EEPROM数据 | <addr> 数据地址 | AT+EEPR=0x0400 | 01 | |
AT+EEPE=<addr> | 擦除EEPROM数据 | <addr> 数据地址 | AT+EEPE=0x0400 | 以512字节为单位擦除,0x0400/0x0434/0x0500/0x05FF均表示擦除0x0400~0x05FF这512字节 | |
AT+EEPW=<addr>,<data> | 写入EEPROM数据 | <addr> 数据地址 <data> 要写入的数据 |
AT+EEPW=0x0400,0xFF | ||
AT+BKR=<reg> | 读取BK4802寄存器 | <reg> 寄存器地址 | AT+BKR=27 | 4802 | |
AT+BKW=<reg>,<data> | 写入BK4802寄存器 | <addr> 寄存器地址 <data> 要写入的数据 |
AT+BKR=23,0xAED0 | ||
AT+OLEDC=<cmd> * | OLED写命令 | <cmd> 要写入的命令 | AT+OLEDC=0xAF | ||
AT+OLEDD=<x>,<y>,<data> * | OLED写数据 | <x> 横坐标0~127 <y> 纵坐标0~7 <data> 要写入的数据 |
AT+OLEDD=64,1,0xFF | ||
AT+SETR | 读取设置 | 0C1300015500019923284D21C17F4D285B8E000003000C04F140ED0017E0E0E485430700A066FFFFFFE0061F9E3C1F00D1D1200F01FFE0000340ACD001FF7C000004AED0 | 读取基本设置+BK4802寄存器设置,数据结构参考基本设置数据说明、BK4802寄存器设置数据说明 | ||
AT+SETW=<setting> | 写入设置 | <setting> 逗号分隔的字节数据 | AT+SETW=0C,13,00,01,55,00,01,99,23,28,4D,21,C1,7F,4D,28,5B,8E,00,00,03,00,0C,04,F1,40,ED,00,17,E0,E0,E4,85,43,07,00,A0,66,FF,FF,FF,E0,06,1F,9E,3C,1F,00,D1,D1,20,0F,01,FF,E0,00,03,40,AC,D0,01,FF,7C,00,00,04,AE,D0 | 写入基本设置+BK4802寄存器设置,数据结构参考基本设置数据说明、BK4802寄存器设置数据说明 | |
AT+FREQ=<setting> | 自定义频率/写频 | <setting> 逗号分隔的字节数据 | AT+FREQ=01,99,23,28,4D,21,C1,7F,4D,28,5B,8E,00,00 | 频率显示文本数据+BK4802频率寄存器,数据结构参考频率显示文本数据说明、BK4802频率寄存器计算 | |
AT+BR=<value> * | 设置OLED亮度 | <value> 亮度值,0-0x00 1-0x33 2-0x66 3-0x99 4-0xCC 5-0xFF | AT+BR=0 | ||
LXB: AT+VOL=<value> LXBE: AT+VOL |
LXB: 设置音量 LXBE: 读取音量 |
LXB: <value> 音量值,0-0x00 1-0x33 2-0x66 3-0x99 4-0xCC 5-0xFF | LXB: AT+VOL=5 | LXBE: 0~1023 | |
AT+LOCK=<value> * | 锁定/解锁SET键频率切换 | <value> 0-解锁 1-锁定 | AT+LOCK=1 | ||
AT+CH=<channel> * | 设置频道 | <channel> 频道索引,0开始 | AT+CH=0 | ||
AT+NEXTF * | 切换下一频率 | ||||
AT+PREVF * | 切换上一频率 | ||||
AT+RX | 设置为接收模式 | ||||
AT+TX | 设置为发射模式 | ||||
AT+TYPE | 读取设备型号 | LXB | |||
AT+VER | 读取固件版本 | 1.0 | |||
AT+RSTR | 重启设备 | ||||
AT+RST | 恢复默认设置并重启设备 |
STC8G1K17单片机程序空间为17KB,EEPROM大小为动态分配,本项目中分配大小为2KB,共4个扇区,每个扇区512字节,地址为0x0000~0x07FF,其中每个扇区存储数据说明如下:
扇区 | 地址 | 说明 |
---|---|---|
0~1 | 0x0000~0x03FF | 存放BK4802频率寄存器设置,单个频率存储接收模式REG0~REG1、发射模式REG0~REG1、REG2,占用10字节,设计为最多存储99个频率,数据结构参考BK4802频率寄存器计算 |
2 | 0x0400~0x05FF | 存放频率显示文本,单个频率占用4字节,设计为最多存储99个频率,数据结构参考频率显示文本数据说明 |
3 | 0x0600 | 标记是否为新设备需要写入默认设置,0x01-不需要写入 其他-需要写入 |
3 | 0x0601~0x063F | 存放基本设置,数据结构参考基本设置数据说明 |
3 | 0x0640~0x07FF | 存放BK4802寄存器设置,数据结构参考BK4802寄存器设置数据说明 |
字节 | 默认值 | 说明 |
---|---|---|
0 | 0x0C | B07~B00: 当前频率索引 |
1 | 0x13 | B07~B00: 最大频率索引 |
2 | 0x00 | B06~B04: 屏幕休眠时间,0-不休眠 1-15秒 2-30秒 3-1分钟 4-2分钟 5-5分钟 6-10分钟 7-30分钟 B02~B00: 射频休眠时间,0-不休眠 1-5分钟 2-10分钟 3-30分钟 4-60分钟 |
3 | 0x01 | B01~B00: 闪屏显示时间(秒) |
4 | 0x55 | B07~B04: 音量 B03~B00: 亮度 |
5 | 0x00 | B02: 1-使用自定义频率 0-使用内置频率 B01: 1-锁定SET键 0-解锁SET键 B00: 1-调试模式开 0-调试模式关 |
6~9 | 0x01, 0x99, 0x23, 0x28 | 自定义频率的显示文本,数据结构参考频率显示文本数据说明 |
10~19 | 0x4D, 0x21, 0xC1, 0x7F, 0x4D, 0x28, 0x5B, 0x8E, 0x00, 0x00 | 自定义频率的寄存器REG0~REG2设置,数据结构参考BK4802频率寄存器计算 |
字节 | 默认值 | 对应BK4802寄存器 |
---|---|---|
0~1 | 0x0300 | REG4 |
2~3 | 0x0C04 | REG5 |
4~5 | 0xF140 | REG6 |
6~7 | 0xED00 | REG7 |
8~9 | 0x17E0 | REG8 |
10~11 | 0xE0E4 | REG9 |
12~13 | 0x8543 | REG10 |
14~15 | 0x0700 | REG11 |
16~17 | 0xA066 | REG12 |
18~19 | 0xFFFF | REG13 |
20~21 | 0xFFE0 | REG14 |
22~23 | 0x061F | REG15 |
24~25 | 0x9E3C | REG16 |
26~27 | 0x1F00 | REG17 |
28~29 | 0xD1D1 | REG18 |
30~31 | 0x200F | REG19 |
32~33 | 0x01FF | REG20 |
34~35 | 0xE000 | REG21 |
36~37 | 0x0340 | REG22 |
38~39 | 0xACD0 | REG23 |
40~41 | 0x01FF | REG32 |
42~43 | 0x7C00 | REG4(发射模式) |
44~45 | 0x0004 | REG5(发射模式) |
46~47 | 0xAED0 | REG23(发射模式) |
BK4802频率由REG0~REG2三个寄存器决定,假设要计算的频率为fwanted,首先计算出Frac-N:
其中fXTAL为晶振频率,在本项目中为21.25MHz,公式简化为:
注意,IF、fwanted、fXTAL的单位均为MHz
其中IF为中频,固定取值137KHz即0.137MHz;Ndiv为频率对应的分频比,参考频段说明
得到Frac-N后,Frac-N的高16位为REG0,低16位为REG1,REG2的B15~B13为Ndiv分频比对应的寄存器值,其余位为0,即
REG0 = Frac-N >> 16
REG1 = Frac-N & 0xFFFF
REG2 = REGNdiv << 13
以下给出计算接收模式中频率409.9000MHz的完整过程:
计算Frac-N:Frac-N = ( fwanted - IF ) * Ndiv * 224 / fXTAL = ( 409.9 - 0.137 ) * 4 * 224 / 21.25 = 1294057855.9638588,向下取整为1294057855,16进制表示为0x4D21C17F
计算REG0:REG0 = Frac-N >> 16 = 0x4D21C17F >> 16 = 19745,16进制表示为0x4D21
计算REG1:REG1 = Frac-N & 0xFFFF = 0x4D21C17F & 0xFFFF = 49535,16进制表示为0xC17F
计算REG2:REG2 = REGNdiv << 13 = 0 << 13 = 0,16进制表示为0x0000
本项目中频率使用单位为MHz,精确到小数点后4位,分辨率为0.0001MHz即100Hz,频率显示文本使用两个整数分别存储整数部分和小数部分
以频率409.9000MHz为例,将其拆分为整数部分409和小数部分9000后,分别使用2字节存储,则可表示为16进制0x0199和0x2328
语音质量提升到一定程度时,自动打开喇叭,开喇叭条件如下:
NOISE_LEVEL_AVG < ( SQ_THRESHOLD * SQ_N ) 且 RSSI > RSSI_THRESHOLD
其中NOISE_LEVEL_AVG为平均带外噪声,从REG26<12:00>获得
SQ_THRESHOLD为带外噪声阈值,由REG23<07:00>设置
SQ_N为静噪阈值系数,由REG22<11:10>设置,0x0-2 0x1-4 0x2-8 0x3-16
RSSI为接收信号强度,从REG24<07:00>获得
RSSI_THRESHOLD为信号强度阈值,由REG22<07:00>设置