abcd
abcd - 認證專家
我只是個路過的老年人~

注冊於 2年前

回答
93
文章
10
關注者
2

可以看下技術文檔下面的《WM_W800_SDK_DEMO使用指導_V1.5.pdf》,需要先打開聯網和mqtt的demo宏,編譯固件,然後需要先發送聯網的命令,聯網成功後再發送mqtt的命令。但是demo中的服務器是不可用的,需要換成自己的服務器地址、端口號、client id等相關的參數。或者用mqtt.isme.fun:1883試下。https://www.winnermicro.com/html/1/156/158/558.html

為什麼用w800給自己的串口發送AT指令的?AT指令是上位機通過串口控制W800工作的,如果是用代碼,那就是在W800上做二次開發,直接調用相關的接口來實現功能就可以了,不需要用到AT指令。如果用自己的APP藍牙配網,可以參考官網的APP代碼把藍牙配網的功能加到自己的APP中,這樣就不需要改動W800的代碼了。也可以開發自己的配網協議,只是需要在W800端配套實現對應的協議。

旋轉編碼器就是2~3個普通的IO口,用W800的GPIO設置為輸入模式連接就可以。剩下的就是讀GPIO的狀態,然後根據旋轉編碼器的時序來判斷旋轉方向。

聯網成功後,調用gethostbyname接口來獲取域名對應的IP地址。

SDK的doc目錄下有w800_apis.chm文件,裡面有各個模塊的接口。具體使用demo目錄下都有相關的demo參考。

DNS server是W801做softap模式時用到的,而且只是把dnsname和自己的IP地址對應,對於應用層來說,一般不會用到這裡的接口。

WIFI協議這部分是封在庫裡面的,沒有對外開放。按你的描述應該是需要改動庫裡面的代碼才能實現的。目前是沒有支持私有協商協議的方式的。

新建文件夾.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開啟藍牙配網服務,然後用手機小程序配網就行了。

發布
問題