Zephyr在NordicSemi贡献后有controller和全栈开发方式,前者给出射频rcp,外接host去控制;后者是整个应用开发。应用由controller(RCP)+host(linux bluez)组成,host和controller可以通过UART、SPI、USB、SDIO等公有接口或厂家私有接口来通信,其中controller提供外部的是HCI接口。
一、controller
本次以UART H4(5线制)为例,例程在ncs\v3.2.4\zephyr\samples\bluetooth\hci_uart,配置见prj.conf,
CONFIG_BT_HCI_RAW=y
CONFIG_BT_HCI_RAW_H4=y
CONFIG_BT_HCI_RAW_H4_ENABLE=y
串口zephyr,bt-c2h-uart = &uart20(nrf54l_05_10_15_cpuapp_common.dtsi),波特率为1000000带流控(nrf64l15dk_nrf54l15_cpuapp.overlay),编译烧录进nRF54L15,自此RCP协处理器准备完毕。
二、host
将烧录hci_uart的nRF54L15DK插到ubuntu系统PC或虚拟机中,可以看到出现2个串口“/dev/ttyACM0”、“/dev/ttyACM1”,这里第2个串口才是通信通道,输入“sudo btattach -B /dev/ttyACM1 -S 1000000”开启hci0通道,
开启另外一终端输入“sudo btmgmt info”或“sudo hciconfig”可以看到host分配的MAC地址、PHY配置等,
再“sudo btmon”可以看到controller显示为Nordic Semiconductor ASA监控HCI事件、状态。
打开第3个终端输入“sudo bluetoothctl”进入设置菜单如这里设置广播设备名为“nRF54L15”依次敲击“menu advertise”“name nRF54L15”“back”“advertise on”就能看到host发HCI命令控制controller(nRF54L15DK)工作,
通信记录在第2个终端“sudo btmon”都能看到,