abcd
abcd
我只是个路过的老年人~

注册于 2年前

回答
35
文章
6
关注者
1

和其他外部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模式

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

发布
问题