微雪的STM32F407开发板+友善之背的wifi模块SDWIFI-YS09测试

时间:2022-09-13 22:29:52

在rt-thread的网站上看到他们使用自己开发的realtouch调通wifi的过程以及开源的代码,想拿过来试试,看能不能跑通。


手上有一块微雪电子的stm32F407的开发板,还有友善之背的wifi模块。


rtt网站上下了个3_networking_wifi.rar包,看内容和介绍是使用的G-SPI硬件连接。


把包里面的两个bin文件copy进TF卡里面,接到开发板上。


而手上的wifi模块接口如下图所示

微雪的STM32F407开发板+友善之背的wifi模块SDWIFI-YS09测试

以为图上的4路spi信号可以直接接到开发板上的SPI2口上,结果线程总是会死,后来发现不是这么回事。

在网上又找到一副图

微雪的STM32F407开发板+友善之背的wifi模块SDWIFI-YS09测试微雪的STM32F407开发板+友善之背的wifi模块SDWIFI-YS09测试

再加上万用表测量,发现wifi上的SPI四个脚是13、14、17、18,然后重新理清顺序,还是不行。


再看环隆电气的WM-G-MR-9-Ref-2的datasheet,主芯片是marvell8686

不太记得从哪看到的是要把ECSn这个脚悬空了,然后datasheet上

微雪的STM32F407开发板+友善之背的wifi模块SDWIFI-YS09测试

看到spi模式下需要把这两个脚下拉,接上100k电阻

然后硬件连接就这样完成了。

然后一切还比较顺利,固件也可以升级

打印如下

\ | /
- RT - Thread Operating System
/ | \ 1.1.0 build Aug 20 2013
2006 - 2012 Copyright by rt-thread team
finsh>>SD Card init OK
File System initialized!
Chip ID 0xb
download helper success!
.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................FW download successful !!!
HostCmd_RET_CMD_GSPI_BUS_CONFIG
RegionCode 40,set 0x10FW release number: 0x2e771409
HW version: 0x00000012
11D: BG-band NrCFP=14
HostCmd_RET_MAC_CONTROL
Current TxPower Level = 15,Max Power=15, Min Power=4
my address 0,1a,6b,a4,2f,37,ffffffff
wlan initialized
wlan did not connect
TCP/IP initialized!
Scan mode 3 numProbes = 0
Scan: Chan( 11), Radio(0), Mode(0,0), Dur(100)
SCAN_RESP: returned 0 APs before parsing
wlan_set_infrastructure
SNMP_RESP: value of the OID = 0, QueryType=1
HostCmd_RET_MAC_CONTROL

然后我把WlanScanProbe()函数加到finsh里面

每次执行都会

finsh>>wlan_scan()
all channels scan failed
0, 0x00000000
这是什么原因呢,不让搜索,然后到rtt的讨论群里也没人搭理,

以为是自己建立的无线AP不对,可能不是开放的,然后找个华为的无线路由器,设置完一看是802.11n的,不允许设置成b+g的,而rtt的程序里把wifi设置成b+g模式,会不会是这个原因呢。反正是对这一块还不是太懂,但是同事的2440上也是用这个模块,就可以scan到AP。感觉不是无线AP的问题。

研究代码吧,因为对协议也不是很懂,乱试试呗,rtt也没有相关方面的文档,也或许是我愚钝没有领悟。

然后我把rt_init_thread_entry()里面的WlanDirectConnect();注释掉,看是不是已经建立连接了,就不允许我再scan了

结果还真被我撞上了,万幸啊,还是我对这一块太不熟悉了。

程序跑起来后,我再执行WlanScanProbe

打印如下

finsh>>wlan_scan()
Scan mode 3 numProbes = 0
Scan: Creating full channel list
Scan: Chan( 1), Radio(0), Mode(0,0), Dur(100)
SCAN_RESP: Scanned 0
Scan: Chan( 2), Radio(0), Mode(0,0), Dur(100)
Scan: Chan( 3), Radio(0), Mode(0,0), Dur(100)
Scan: Chan( 4), Radio(0), Mode(0,0), Dur(100)
Scan: Chan( 5), Radio(0), Mode(0,0), Dur(100)
SCAN_RESP: Scanned 0
Scan: Chan( 6), Radio(0), Mode(0,0), Dur(100)
capability 421
Privacy 0
SSID rtthread
capability 431
Privacy 0
SSID iTV-uxvs
SCAN_RESP: Scanned 2
Scan: Chan( 7), Radio(0), Mode(0,0), Dur(100)
Scan: Chan( 8), Radio(0), Mode(0,0), Dur(100)
Scan: Chan( 9), Radio(0), Mode(0,0), Dur(100)
Scan: Chan( 10), Radio(0), Mode(0,0), Dur(100)
SCAN_RESP: Scanned 0
Scan: Chan( 11), Radio(0), Mode(0,0), Dur(100)
capability 411
Privacy 0
SSID dbstar_jl_2
SCAN_RESP: Scanned 1
AP totaly 3
AP[1]: rtthread BSSID:4c-1f-cc-c1-a4-df Channel:6 RSSI:0x16 [WEP ]
AP[2]: iTV-uxvs BSSID:52-1f-cc-c1-a4-df Channel:6 RSSI:0x16 [WPA ]
AP[3]: dbstar_jl_2 BSSID:0-e-e8-b2-3-ec Channel:11 RSSI:0x57 [WPA2]
0, 0x00000000
还真scan到了无线AP。原来真的是我猜到的那样,这个程序一开始就默认去连接一个无线AP,连接上就不让scan了,而这时我的无线AP又没有达到他们要求的那样是开放的,

没有密码的,所以也ping不通。