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

注册于 3 年前

回答
138
文章
10
关注者
2

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 模式

wm_psram_config (1) ; psram_init (PSRAM_QPI) ; 初始化只需要调用这两个接口就行了, wm_psram_config 根据实际使用的 io 选择哪一组, 使用的时候, 起始地址是 0x30000000, 由于没有做到内存管理里, 所以无法向普通内存一样动态申请释放, 需要单独指定地址, 自己管理, 其他的操作就和普通内存一样了, 比如 memcpy, memset 之类的.

如果使用的是 W806 可以参考这个, 如果使用的是 W800 或者 W801 的 SDK, 也可以参考这个修改, 如果不是用的 CDK 编译就不是修改 aft_build_project. sh 文件, 得修改 tools/w800/rules. mk 文件.

发布
问题