最近遇到acc on/off的蓝牙初始化失败:
所以总结下整个蓝牙初始化的流程(基于CSR 8811 module通过uart 和车机连接):
一.芯片上电成功后拉下8811 module reset pin ->不是每个moudule都需要这么做
二.设置uart band rate为115200,,CSR一般先低速写出错率比较少,通过这个speed 芯片会自动识别出band rate
三.持续发送BCSP link establish建立过程,直到成功(分三个阶段),类似于三次握手
四.如果3 BCSP建立成功后,需要向芯片中写pskey
列举一些常用的pskey:
1.PSKEY_ANA_FTRIM 设置芯片晶振,根据不同芯片制造厂商来决定
2.CSR_PSKEY_ANA_FREQ 配置蓝牙核心固件与一个特殊的始终同一频率
3.PSKEY_UART_CONFIG_BCSP CSR 默认就是走的BCSP,但是要通过配置uart control flow也是通过此pskey
4.CSR_PSKEY_UART_BAUDRATE 此pskey要着重说一下,为什么前面都有了band rate,还需要重新设置呢?原因是:开始芯片会自动识别band rate,但是如果你想改芯片的pskey芯片还会认为是115200(之前的),所以你需要拉高速度,要重新配置pskey
各个速度可以参照我的另一篇文章
http://blog.csdn.net/xiaoxiaopengbo/article/details/50434721
pskey还有很多,不同的功能需要配置不同的pskey
五.写pskey成功后,暂时不会起作用,需要执行一下BCCMD protocol的warm reset command,chip回应ack后才能奏效
六.这时候芯片接受的data speed就按照921600去接收了,所以uart也要重新配置,设置为相应的波特率
七.做好步骤六后还需要重新建立BCSP linker
八.事已至此,下面就是一些交互的过程了
顺序可以自己看着调整,还有一堆HCI command的交互,就不在本文章讨论之内了
OK,做完一系列工作,OK,初始化成功