1. 概述
本文档详细描述了富芮坤FR306x_SDK 中定义的AT指令及其功能。这些指令主要用于蓝牙(BLE)设备的控制和管理,涵盖了设备连接、断开、音频控制、媒体控制、网络配置等多个方面。
因为原厂没有AT指令功能详细说明文档,说来也奇怪,有了代码,还没有功能说明,不是先有功能需求说明,才开发代码吗?
指令分类
2. AT指令格式
所有AT指令以 AT# 开头,后跟具体的命令字符和参数。每个指令的具体格式如下:
AT#<Command><SubCommand>[Parameters]
<Command>:主命令字符(如A, B, C等)
<SubCommand>:子命令字符(如A, B, C等)
[Parameters]:可选参数,具体取决于命令
3. 主要AT指令分类及功能
3.1 命令组 A (app_at_recv_cmd_A)
处理与底层硬件或协议相关的命令。
A:发送厂商自定义命令。
参数:1个字节的地址值(16进制)
示例:AT#AA01 发送地址为0x01的厂商自定义命令。
B:发送厂商自定义命令。
参数:2个字节的数据(16进制)
示例:AT#BA0102 发送数据为0x01和0x02的厂商自定义命令。
C:发送厂商自定义命令。
参数:4个字节的地址值(16进制)
示例:AT#CA00000001 发送地址为0x00000001的厂商自定义命令。
D:发送厂商自定义命令。
参数:8个字节的数据(16进制)
示例:AT#DA0000000100000002 发送数据为0x00000001和0x00000002的厂商自定义命令。
E:发送特定厂商命令。
参数:无
示例:AT#AE 发送特定厂商命令。
G:打印 "hello world!"。
参数:无
示例:AT#AG 打印 "hello world!"。
H:读取指定地址的32位值并打印。
参数:8个字节的地址值(16进制)
示例:AT#AH00000001 读取地址为0x00000001的32位值并打印。
I:写入指定地址的32位值。
参数:8个字节的地址值和数据(16进制)
示例:AT#AI0000000100000002 写入地址为0x00000001的32位值为0x00000002。
J:读取外设寄存器值并打印。参数:2个字节的地址值(16进制)
示例:AT#AJ01 读取地址为0x01的外设寄存器值并打印。
K:写入外设寄存器值。
参数:2个字节的地址值和数据(16进制)
示例:AT#AK0102 写入地址为0x01的外设寄存器值为0x02。
L:读取指定地址的8位值并打印。
参数:8个字节的地址值(16进制)
示例:AT#AL00000001 读取地址为0x00000001的8位值并打印。
M:写入指定地址的8位值。
参数:8个字节的地址值和数据(16进制)
示例:AT#AM0000000102 写入地址为0x00000001的8位值为0x02。
U:内存转储。
参数:8个字节的起始地址和2个字节的长度(16进制)
示例:AT#AU0000000108 从地址0x00000001开始转储8个字节。
V:擦除闪存。
参数:8个字节的起始地址和8个字节的长度(16进制)
示例:AT#AV0000000100000008 从地址0x00000001开始擦除8个字节。
Y:打印内存使用情况。
参数:2个字节的类型(16进制)
示例:AT#AY01 打印类型为0x01的内存使用情况。
3.2 蓝牙连接管理命令组 B (app_at_recv_cmd_B)
处理蓝牙设备的基本操作,如连接、断开、扫描等。
A:创建音频链接。
参数:无
示例:AT#BA00 创建音频链接。
B:停止广播。
参数:1个字节的状态(16进制)
示例:AT#BB01 停止广播。
C:开始扫描。
参数:无
示例:AT#BC 开始扫描。
D:停止扫描。
参数:无
示例:AT#BD 停止扫描。
E:连接到指定设备。
参数:12个字节的MAC地址和1个字节的地址类型(16进制)
示例:AT#BE0123456789ab_01 连接到MAC地址为01:23:45:67:89:ab且地址类型为0x01的设备。
F:断开连接。
参数:无
示例:AT#BF 断开连接。
H:发起查询。
参数:无
示例:AT#BH 发起查询。
I:取消查询。
参数:无
示例:AT#BI 取消查询。
J:创建服务链接。
参数:12个字节的MAC地址(16进制)
示例:AT#BJ0123456789ab 创建服务链接。
K:创建编解码器连接。
参数:1个字节的类型(16进制)
示例:AT#BK01 创建编解码器连接。
L:删除Flash数据库中的链接密钥。
参数:无
示例:AT#BL 删除Flash数据库中的链接密钥。
N:连接到指定设备(HF+A2DP_SINK)。
参数:12个字节的MAC地址(16进制)
示例:AT#BN0123456789ab 连接到MAC地址为01:23:45:67:89:ab的设备(HF+A2DP_SINK)。
O:连接到指定设备(HFG+A2DP_SOURCE)。
参数:12个字节的MAC地址(16进制)
示例:AT#BO0123456789ab 连接到MAC地址为01:23:45:67:89:ab的设备(HFG+A2DP_SOURCE)。
P:断开连接(不保存连接信息)。
参数:12个字节的MAC地址(16进制)
示例:AT#BP0123456789ab 断开连接(不保存连接信息)。
Q:断开连接(保存连接信息)。
参数:12个字节的MAC地址(16进制)
示例:AT#BQ0123456789ab 断开连接(保存连接信息)。
R:连接到最后一个已连接设备。
参数:无
示例:AT#BR 连接到最后一个已连接设备。
S:进入配对模式。
参数:无
示例:AT#BS 进入配对模式。
T:退出配对模式。
参数:无
示例:AT#BT 退出配对模式。
U:断开配对并连接到指定设备。
参数:12个字节的MAC地址(16进制)
示例:AT#BU0123456789ab 断开配对并连接到MAC地址为01:23:45:67:89:ab的设备。
V:断开当前连接。
参数:无
示例:AT#BV 断开当前连接。
X:连接到指定设备(自定义配置文件)。
参数:12个字节的MAC地址和1个字节的配置文件(16进制)
示例:AT#BX0123456789ab01 连接到MAC地址为01:23:45:67:89:ab的设备(自定义配置文件)。
Y:断开音频链接。
参数:无
示例:AT#BY 断开音频链接。
Z:设置主角色。
参数:无
示例:AT#BZ 设置主角色。
3.3 电话和语音控制命令组 C (app_at_recv_cmd_C)
处理蓝牙电话相关的命令。
A:接听电话。
参数:无
示例:AT#CA 接听电话。
B:挂断电话。
参数:无
示例:AT#CB 挂断电话。
C:重拨。参数:无
示例:AT#CC 重拨。
D:拨打电话。
参数:最多15个字节的电话号码(ASCII)
示例:AT#CD1234567890 拨打号码为1234567890的电话。
E:列出当前通话。
参数:无
示例:AT#CE 列出当前通话。
F:切换SCO连接。
参数:无
示例:AT#CF 切换SCO连接。
G:发送DTMF音。
参数:1个字节的DTMF音(ASCII)
示例:AT#CG1 发送DTMF音为'1'。
H:报告扬声器音量。
参数:1个字节的音量值(16进制)
示例:AT#CH0a 报告扬声器音量为0x0a。
I:发送HF命令。
参数:无
示例:AT#CI 发送HF命令。
J:启用/禁用语音识别。
参数:1个字节的状态(16进制)
示例:AT#CJ01 启用语音识别。
K:检查语音识别状态。
参数:无
示例:AT#CK 检查语音识别状态。
Z:发送时钟命令。
参数:无
示例:AT#CZ 发送时钟命令。
3.4 其他杂项命令组 D (app_at_recv_cmd_D)
处理其他设备操作。
A:擦除闪存。
参数:8个字节的起始地址和4个字节的长度(16进制)
示例:AT#DA0000000100000004 从地址0x00000001开始擦除4个字节。
B:枚举记录。
参数:无
示例:AT#DB 枚举记录。
C:删除记录。
参数:12个字节的MAC地址(16进制)
示例:AT#DC0123456789ab 删除MAC地址为01:23:45:67:89:ab的记录。
D:发送HCI命令。
参数:无
示例:AT#DD 发送HCI命令。
3.5 蓝牙多媒体命令组 E (app_at_recv_cmd_E)
处理蓝牙媒体控制命令。
A:播放。
参数:无
示例:AT#EA 播放。
B:暂停。
参数:无
示例:AT#EB 暂停。
C:下一曲。
参数:无
示例:AT#EC 下一曲。
D:上一曲。
参数:无
示例:AT#ED 上一曲。
E:设置音量。
参数:1个字节的音量值(16进制)
示例:AT#EE0a 设置音量为0x0a。
F:获取媒体信息。
参数:无
示例:AT#E
F 获取媒体信息。G:获取播放状态。
参数:无
示例:AT#EG 获取播放状态。
K:启动A2DP流。
参数:无
示例:AT#EK 启动A2DP流。
L:暂停A2DP流。
参数:无
示例:AT#EL 暂停A2DP流。
M:启动双A2DP流。
参数:无
示例:AT#EM 启动双A2DP流。
3.6 网络通信命令组 P (app_at_recv_cmd_P)
处理网络相关命令(仅在BTDM_STACK_ENABLE_PAN启用时有效)。
A:打开PAN连接。
格式:AT#PA
功能:打开与最后一个已连接的蓝牙设备的PAN连接。
示例:AT#PA
B:创建UDP客户端并连接。
格式:AT#PB<IP地址>_<端口号>
功能:创建一个UDP客户端并连接到指定的IP地址和端口号。
示例:AT#PB192_168_001_100_8080
C:发送UDP数据。
格式:AT#PC
功能:通过已连接的UDP客户端发送数据。
示例:AT#PC
D:创建TCP客户端并连接。
格式:AT#PD<IP地址1>_<IP地址2>_<IP地址3>_<IP地址4>_<端口号>
功能:创建一个TCP客户端并连接到指定的IP地址和端口号。
示例:AT#PD192_168_000_071_02333
E:测试DNS解析。
格式:AT#PE
功能:测试DNS解析功能,尝试解析预定义的主机名。
示例:AT#PE
F:发送TCP数据。
格式:AT#PF<标志位>
功能:通过已连接的TCP客户端发送数据,并指定发送标志。
示例:AT#PF1
G:关闭TCP连接。
格式:AT#PG
功能:关闭已连接的TCP客户端。
示例:AT#PG
4. 其他函数说明
app_at_cmd_recv_handler:根据接收到的命令调用相应的处理函数。
功能:根据接收到的命令字符,调用相应的命令处理函数。
参数:
data:接收到的数据缓冲区。
length:数据长度。
app_at_recv_c:处理接收到的单个字符,构建完整的AT指令。
功能:逐字符接收数据,构建完整的AT指令,并在指令完成后调用事件处理函数。
参数:
c:接收到的字符。
app_at_rx_done:UART接收完成回调函数。
功能:在UART接收完成后调用,处理接收到的字符,并继续接收下一个字符。
参数:
handle:UART句柄。
app_at_init:初始化AT指令处理模块。
功能:初始化AT指令处理模块,启动UART接收中断。
参数:
handle:UART句柄。
5. 总结
上述AT指令提供了对蓝牙设备的全面控制,包括连接管理、音频控制、媒体控制、网络配置等功能。通过这些指令,用户可以方便地进行设备调试和功能测试。每个命令都有详细的格式和功能描述,便于开发者理解和使用。此外,其他辅助函数确保了AT指令处理模块的正常运行,使得整个系统更加健壮和可靠。
希望这份文档能够帮助您更好地理解和使用富芮坤FR306x_SDK的AT指令。