紧接上一篇wifi移植,BT与wifi是二合一模块ap6745,首先要确保硬件的配置正确
通讯上使用uart接口,以及BT_REG_ON控制,另外两个host_wake,wake_bt如果平台不关注功耗影响,一般可以不用配置。
软件主要是做这些配置,由于bt使用的是uart的接口,驱动代码平台默认都有路径为:
kernel-source/drivers/bluetooth/hci_h4.c hci_ldisc.c 以及kernel-source/net/bluetooth下的文件
如果dts配置正确的话,就可以执行蓝牙上电操作了,由于imx6ull 的rfkill 默认并没有蓝牙的上电操作,所以需要自己添加相关驱动代码,刚好之前v3平台用过,就将这部分接口代码复制过来。
这个文件主要是添加rfkill的蓝牙节点,通过这个节点控制bt的reg_on上电操作。
有了这个节点,就可以上电了。
brcm_patchram_plus 这个可执行文件可以从网上下载源代码然后交叉编译到自己的平台上,bcmdhd.hcd固件 模组厂会提供。
后面的ttyms0根据实际硬件接口来配置。
这些执行完之后,我们板子上并没有出现后面的hci正常交互的输出命令,而是
出现这儿就卡住了,说明uart初始化交互就失败了。我查了上电动作,gpio 上电能正常控制,也查了蓝牙的32k时钟也有,测量uart波形,模块端的tx、rx,cts高电平,rts低电平,cts为高说明cpu端一直没有准备好开始接收数据,查了gpio配置没有发现问题,直接硬拉rts管脚,发现数据就通讯正常了。但是查看硬件连接没有发现啥问题,百度上有人说IMX6平台UART的rts、cts不能交叉接,我就cpu的rts、cts交换,发现uart通讯正常了。
到了这一步就可以执行蓝牙的扫描工作了。
rfkill unblock bluetooth
hciconfig hci0 up
hcitool scan 扫描BT设备
hcitool lescan 扫描ble设备
gatttool -t random -b D2:24:84:60:01:95 -I 连接到ble设备
输入 connect 命令,就一直提示 connection refused信息,
这时候需要执行
btmgmt le on
表示打开ble功能,默认ble功能是关闭的
在yocot 项目中,blue5.37默认是已经集成了的,但是gatttool以及btmgmt需要单独install到bin目录中,至于如何instal我会在下篇中讲述。
执行完之后再连接就显示 connection successful了
执行primary 打印当前连接的ble设备支持的服务信息。
参考链接:https://www.cnblogs.com/zzb-Dream-90Time/p/7605201.html
http://shaocheng.li/post/blog/2015-10-22
https://blog.csdn.net/qq_33433070/article/details/78668105
http://59.110.0.194/article/u013129593/53010878
https://blog.csdn.net/gatieme/article/details/48751743
https://www.cnblogs.com/zjutlitao/p/9589661.html
https://blog.csdn.net/pengrui18/article/details/53747562