背景
       在RTT的技术沙龙上,郭在鑫有分享在PSOC62适配CYW43012的过程。其中提到了两个点,一是公版的psoc62工程,已经支持了该模块,也就是说,使用modbustoolbox可以直接生成cyw43012代码。而这次申请这模块的测评,其实本质上也是想看看公版上此模块功能如何。但目前看,在我个人环境这么操作的机会不大了。也就是说,只能使用RTT去体验CYW43012的效果了。另一个点是,在沙龙中,有提到CYW43012支持蓝牙,蓝牙音频走的串口,但拿到模块后发现此模块其实蓝牙音频走的是常规的PCM,并不是串口,因此蓝牙音频的体验只能通过外挂codec的方式体验了。
硬件准备
       硬件准备上,很简单,仅仅需要将CYW43012模块插在板卡预留的插座上即可(座子规格很明显,不怕找错),另外,需注意方向,模块座子端靠底板的typec座子端,芯片端靠触摸条侧。
体验工程生成
       挺巧的,在rtstudio中,发现psoc62工程已经集成了wifi的demo,因此体验中,我并不需要再去创建基础工程,打开lwip,打开wifi模块相关配置,并编写wifi模块测试代码。仅仅需要使用demo便可体验该模块的wifi功能。
2.jpg 3.jpg

效果验证
    对生成的工程进行编译下载后,进行如下操作:
  1. \ | /
  2. - RT -     Thread Operating System
  3. / | \     5.0.1 build Jul 11 2024 23:17:36
  4. 2006 - 2022 Copyright by RT-Thread team
  5. lwIP-2.1.2 initialized!
  6. msh >whd_bus_sdio_cmd53:959 cyhal_sdio_bulk_transfer failed
  7. Function whd_bus_sdio_cmd53 failed at line 976 checkres = 101580800
  8. Function whd_bus_transfer_backplane_bytes failed at line 379 checkres = 101580800
  9. whd_bus_sdio_download_resource: Failed to write firmware image
  10. Bus common resource download failed, whd_bus_write_wifi_firmware_image failed at 265
  11. Failed to load wifi firmware
  12. SDIO firmware download error, whd_bus_sdio_init failed at 470
  13. Interface is not up/NULL and failed in function whd_deinit at line 182
  14. [I/WLAN.dev] wlan init success
  15. Interface is not up/NULL and failed in function whd_wifi_get_mac_address at line 2765
  16. [I/WLAN.lwip] eth device init ok name:w0
  17. [I/WLAN.dev] wlan init success
  18. (( pxQueue )) assertion failed at function:xQueueSemaphoreTake, line number:504
       很不幸,我的板卡跑demo工程直接提示wifi配置传输异常,而经过进一步查代码,发现此部分是SDIO通信异常。
1.jpg

        而基于之前坛子里(RTT论坛)有人已经用一样得分方法跑通了wifi,基本上可以确定,此问题属于硬件层面的问题,需检修完硬件后再进一步体验功能了。经过一系列的检查后,发现有个开关未未启动到位,即主板上有个拨码开关,默认拨到3.3V,如果需使用wifi模块,就需要将此开关拨到1.8V挡位。断电后把开关拨至1.8V挡,wifi初始化完成。此时体验如下:
  1. \ | /
  2. - RT -     Thread Operating System
  3. / | \     5.0.1 build Jul 11 2024 23:17:36
  4. 2006 - 2022 Copyright by RT-Thread team
  5. lwIP-2.1.2 initialized!
  6. msh >WLAN MAC Address : CC:47:40:11:1F:F5
  7. WLAN Firmware    : wl0: Dec 12 2022 18:42:34 version 13.10.271.293 (9974213 CY) FWID 01-e2162f9b
  8. WLAN CLM         : API: 18.2 Data: 9.10.0 Compiler: 1.36.1 ClmImport: 1.34.1 Creation: 2022-08-16 03:35:21
  9. WHD VERSION      : 2.6.1.20115 : v2.6.1 : GCC 5.4 : 2023-06-28 02:01:23 +0000
  10. [I/WLAN.dev] wlan init success
  11. [I/WLAN.lwip] eth device init ok name:w0
  12. [I/WLAN.dev] wlan init success
  13. Function whd_wifi_get_mac_address failed at line 2776 checkres = 33556433
  14. [I/WLAN.lwip] eth device init ok name:w1

  15. : command not found.
  16. msh >wifi scan
  17.              SSID                      MAC            security    rssi chn Mbps
  18. ------------------------------- -----------------  -------------- ---- --- ----
  19. USER_1901                       2c:b2:1a:5f:6f:aa  WPA2_MIXED_PSK -52   10    0

  20. msh >wifi join USER_1901 1234567890
  21. [I/WLAN.mgnt] wifi connect success ssid:USER_1901
  22. msh >
  23. msh >
  24. msh >[I/WLAN.lwip] Got IP address : 192.168.2.109
  25. msh >ping www.baidu.com
  26. 60 bytes from 182.61.200.7 icmp_seq=0 ttl=47 time=48 ms
  27. 60 bytes from 182.61.200.7 icmp_seq=1 ttl=47 time=53 ms
  28. 60 bytes from 182.61.200.7 icmp_seq=2 ttl=47 time=51 ms
  29. 60 bytes from 182.61.200.7 icmp_seq=3 ttl=47 time=54 ms
  30. msh >
结论
        虽然此模块RTT已经移植完毕,但老实说,并没有任何资料说明模块使用方法,很多地方还得靠自己去摸索才能整明白,在此,个人把摸索过程记录下来,以便后续不再踩同样的坑。
        另外,由于模块座子规格比较少见,蓝牙音频体验需动硬件和找齐资料(目前唯一已知的是蓝牙音频走pcm,但找到的开源资料并未提及该部分)后才能体验,可预见的短期内无法体验。