abcd
abcd - 认证专家
我只是个路过的老年人~

注册于 3年前

回答
156
文章
12
关注者
3

fields这个变量的结构体定义struct ble_hs_adv_fields里除了uuids16外也有name,直接替换成name比较就可以,要注意的是,有些server的name是直接放在广播里的,这种用被动扫描就可以, 有些是放在response里的,这种就需要主动扫描来获取,tls_ble_gap_scan的第一参数来设置主动还是被动扫描。发送可以用ble_gattc_write_flat这个接口,在wm_ble_client_api_multi_conn_demo.c里就是一个client连接多个server的demo,可以参考。

和其他外部flash是一样的,理论值10万次擦写

可以,如果是测试可以用标准固件,然后通过串口0发送AT指令测试,AT+BTEN=1,0使能蓝牙系统,然后发送AT+ONESHOT=4开启蓝牙配网服务,然后用手机小程序配网就行了。

demo目录下wm_uart_demo.c
src/app/bleapp目录下wm_ble_server_api_demo.c

注释要表达的意思是,PB6~PB11在W800和W801上都有封装出来,所以都可以用作sdio功能,而PA9~PA14只有W801上封装出来了,在W800上没有,所以PA9~PA14对应的case1:情况只有在使用W801时才能生效。使用W801时具体用PA9~PA14还是PB6~PB11,可根据需求自行决定。

for(;;)
{

tls_bitband_write(HR_GPIO_DATA, 11, 0);
tls_bitband_write(HR_GPIO_DATA, 11, 1);

}

image.png
image.png
image.png

测试可以进中断,因为设置的打印延时时间是1s,远远大于定时器定时时间5ms,所以打印出来的值只能看到4和5很正常。

收发的最大长度是双方协商的mtu值,可以在ble_gap_evt_cb连接成功BLE_GAP_EVENT_CONNECT调用tls_bt_async_proc_func(BleServerConnExchangeMtu, NULL, 600);主动发起mtu协商,然后看下协商的结果是多少。image.png

片选软控制,并不是用任何一个IO来拉高拉低,需要用__HAL_AFIO_REMAP_SPI_CS配置有片选功能的pin脚为cs后,调用__HAL_SPI_SET_CS_LOW、__HAL_SPI_SET_CS_HIGH来使用。

底层代码改了之后需要执行make lib编译才会生效,然后再make

AT+BTEN=1,0,第一个参数1,代表的就是串口1,如果是用串口1发送的at指令,那发送后,串口1就被设置成蓝牙log输出口了,所以再发其他at指令就没办法识别了,可以试下AT+BTEN=255,0,或者其他串口号,只要不是1就行。

可以看下wm_ble_server_api_demo.c里wm_ble_server_demo_conn_param_update_slave这个接口,可以设置连接时间参数,另外如果只用到蓝牙而没用到wifi功能的情况下,还可以调用tls_bt_ctrl_sleep来使能蓝牙的sleep模式

发布
问题