目录
功能简介
通过封装串口AT指令,我们可以把8670作为一个蓝牙外设,通过串口的AT指令协议与外部mcu通讯。
比如当csr8670连接到pc端,再pc端通过串口工具发送指令,芯片内部去解析指令,并执行相应的操作
功能实现
8670内置有一套字符串解析工具,通过编写.parse文件,当项目编译时,会生成对应的.c和.h文件。首先我门可以参考hfp_parse.parse进行编写sink_parse.parse
如上图所示,第一部分为指令,第二部分为指令解析之后对应的回调函数,当指令后面跟有参数时,需要按照第三部的格式,可以对指令规定一个固定的结尾,如”\r\n”或”\r”等。
编写好.parse之后,添加到工程中进行编译,此时会报错,原因是找不到回调函数的实体,这个时候只需要在sink_parse.h中复制函数定义(注:函数定义会根据.parse自动生成),实现函数实体即可
以AT+GVER指令为例,void handleGetVersion(Task ),回调函数实现示例如下:
void handleGetVersion(Task t)
{
UartSendStr("+VER:");
UartSendStr("0.0.2");
UartSendStr("\r\n");
}
功能调试
将编译好的固件烧到板子中,板子连接到pc,用pc上的串口工具发送AT+GVER\r\n, 该指令会进入我们上篇博客所述的app_uart_handler()串口数据分发函数,后进入UartparseData()进行指令解析,最终调用上面实现的handleGetVersion()结果如下图所示:
我已经封装了一部分的AT指令,基本上包含了所有蓝牙功能的使用,具体可以参考我的《AT指令集.docx》。
上面我只贴出了部分代码,详细源码及相关的工具资料等,请到我的博客<csr867x入门笔记(序)>最下面的网盘链接或者github链接中下载。