從左到右確實是按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端口複用與資料不一致