背景
       在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

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

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

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

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