从左到右确实是按OPT1-4、OPT6来排序的,OPT5是GPIO功能,这里代码里写的是OPT2也没错,MMC那一组就是对应的SDIO MASTER功能,OPT4的SDIO功能这里没表达清楚,对应的是SDIO SLAVE功能。
从左到右确实是按OPT1-4、OPT6来排序的,OPT5是GPIO功能,这里代码里写的是OPT2也没错,MMC那一组就是对应的SDIO MASTER功能,OPT4的SDIO功能这里没表达清楚,对应的是SDIO SLAVE功能。
固件加密用的是key.txt里的秘钥,也就是30~66,这个是需要用户自己设定的值,改的时候需要改三个地方,1.把key.txt文件里改了;2.在aft_build_project.sh替换用到的地方;3.在烧录工具里的文件夹里有个AvoidCopyTestCases.xml里也有用到这个值,需要修改替换掉。
capub_1.pem和capub_1_N.dat这两个文件是用来加密key.txt的,不需要修改,目前固定使用这组值。
cakey.pem和capub.pem是用来做签名和解签名用的,也是需要用户自己修改的值,直接改这两个文件的内容就可以,aft_build_project.sh里不用改,因为是直接引用的文件名。烧录工具文件夹下的capub.pem需要同步修改。同事,如果烧录工具文件夹下的文件修改后,需要关闭烧录工具重新打开。
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);
}
可以这样改下,把这些宏都去掉,我这试了可以了
测试可以进中断,因为设置的打印延时时间是1s,远远大于定时器定时时间5ms,所以打印出来的值只能看到4和5很正常。
收发的最大长度是双方协商的mtu值,可以在ble_gap_evt_cb连接成功BLE_GAP_EVENT_CONNECT调用tls_bt_async_proc_func(BleServerConnExchangeMtu, NULL, 600);主动发起mtu协商,然后看下协商的结果是多少。
片选软控制,并不是用任何一个IO来拉高拉低,需要用__HAL_AFIO_REMAP_SPI_CS配置有片选功能的pin脚为cs后,调用__HAL_SPI_SET_CS_LOW、__HAL_SPI_SET_CS_HIGH来使用。
底层代码改了之后需要执行make lib编译才会生效,然后再make
问 W801 SDIO端口复用与资料不一致