SPI DEMO 里有 DMA 的使用.
SPI DEMO 里有 DMA 的使用.
新建文件夹. rar
更新下这两个文件的改动试下, 然后初始化的时候 hpmu. ClkSource 选 PMU_CR_32KRCBYPASS, 这种情况下 32K 时钟是从 40M 分出来的, 会比较准确, 在 sleep 模式下可以用作时钟源, 而 PMU_CLKSOURCE_32RC 是用的 32K 震荡产生的, 会有误差.
我现在手头没有工程了, 就改那几个地方就行, 你目前的问题是卡在哪一步了, 具体描述下
从左到右确实是按 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 协商, 然后看下协商的结果是多少.
问 W806 SPI 设置 DMA 启动不了