从左到右确实是按 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 端口复用与资料不一致