Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
wifi
RT-Thread一般讨论
Wi-Fi Host Driver (WHD) 英飞凌WiFi驱动
5.00
发布于 2024-05-19 19:08:32 浏览:941
订阅该版
[tocm] ## RT-Thread Wi-Fi Host Driver (WHD) ### 概述 WHD是一个独立的嵌入式Wi-Fi主机驱动程序,它提供了一组与英飞凌WLAN芯片交互的api。WHD是一个独立的固件产品,可以很容易地移植到任何嵌入式软件环境,包括流行的物联网框架,如Mbed OS和Amazon FreeRTOS。因此,WHD包含了RTOS和TCP/IP网络抽象层的钩子。 有关Wi-Fi主机驱动程序的详细信息可在[Wi-Fi Host Driver readme](https://github.com/Infineon/wifi-host-driver/blob/master/README.md)文件中找到。
[release notes](https://github.com/Infineon/wifi-host-driver/blob/master/RELEASE.md)详细说明了当前的版本。您还可以找到有关以前版本的信息。 该存储库已将WHD适应于RT-Thread系统,目前仅支持SDIO总线协议,并使用RT-Thread的mmcsd进行SDIO总线操作。
欢迎大家`PR`支持更多总线接口和芯片。 ### 使用 **在软件包选中`Wifi-Host-Driver(WHD) for RT-Thread`** ``` RT-Thread online packages ---> # 在线软件包 IoT - internet of things ---> # IOT菜单栏中 [*] Wifi-Host-Driver(WHD) for RT-Thread. ---> # 选中该软件包 ``` **软件包配置** ``` --- Wifi-Host-Driver(WHD) for RT-Thread Select Chips (CYW43438) ---> # 选择相应的芯片 [*] Using resources in external storage(FAL) ---> # 使用FAL组件加载资源 [ ] Using custom nvram files # 使用自定义nvram头文件 [ ] Default enable powersave mode # 默认启用低功耗模式 (8) The priority level value of WHD thread # 配置WHD线程的优先级 (5120) The stack size for WHD thread # 配置WHD线程的堆栈大小 Select the pin name or number (Number) ---> # 选择引脚名称或引脚编号 (-1) Set the WiFi_REG ON pin number # 设置模块的WL_REG_ON引脚 (-1) Set the HOST_WAKE_IRQ pin number # 设置模块的HOST_WAKE_IRQ引脚 Select HOST_WAKE_IRQ event type (falling) ---> # 选择“唤醒主机”的边沿 (2) Set the interrput priority for HOST_WAKE_IRQ pin # 设置外部中断优先级 [ ] Using thread initialization # 创建一个线程来初始化驱动 (500) Set the waiting time for mmcsd card scanning # 设置mmcsd设备驱动扫卡的等待时间 ``` **注意**
SDIO驱动需要支持数据流传输,在RT-Thread的bsp中,大多数芯片都未适配数据流传输的功能。
多数`Cortex-M4`内核的芯片需要软件来计算`CRC16`并在数据后面发送它,参考 [数据流传输解决方案](https://github.com/Evlers/rt-thread_wifi-host-driver/blob/master/docs/SDIO%E6%95%B0%E6%8D%AE%E6%B5%81%E4%BC%A0%E8%BE%93.md)。
对于`Cortex-M7`内核如STM32H7系列,只需要修改`drv_sdio.c`文件的一处地方即可,示例如下:
``` SCB_CleanInvalidateDCache(); reg_cmd |= SDMMC_CMD_CMDTRANS; hw_sdio->mask &= ~(SDMMC_MASK_CMDRENDIE | SDMMC_MASK_CMDSENTIE); hw_sdio->dtimer = HW_SDIO_DATATIMEOUT; hw_sdio->dlen = data->blks * data->blksize; hw_sdio->dctrl = (get_order(data->blksize)<<4) | (data->flags & DATA_DIR_READ ? SDMMC_DCTRL_DTDIR : 0) | \ /* 增加数据流标志的检测 */ ((data->flags & DATA_STREAM) ? SDMMC_DCTRL_DTMODE_0 : 0); hw_sdio->idmabase0r = (rt_uint32_t)sdio->cache_buf; hw_sdio->idmatrlr = SDMMC_IDMA_IDMAEN; ``` ### 资源下载(该项目默认使用内部资源,可跳过这一步骤) WiFi固件储存到代码区域中,固件会变的很大,烧录很慢,影响调试进度! 通过FAL组件外部加载固件以及CLM文件,这样MCU固件就能缩减很多,烧录也会快很多! 可以通过`ymodem`协议下载资源文件。驱动会使用FAL组件来加载资源文件。
资源下载功能依赖于`ymodem`组件,请确保打开`RT_USING_RYM`和`WHD_RESOURCES_IN_EXTERNAL_STORAGE`宏定义。
- 在终端上执行`whd_res_download`命令开始下载资源。 - 该命令需要输入资源文件的分区名。 - 下载资源文件的示例(使用默认分区名,输入自己的分区名): ![screenshot_5c69a1c80aa0dc880e284e8b14a8192.png](https://oss-club.rt-thread.org/uploads/20240628/5ecc128a7fa9e02e12c009749af3cc52.png) - `ymodem`可以使用`xshell`工具,在完成命令输入后,等待`xshell`启动文件传输。 ``` msh >whd_res_download whd_firmware Please select the whd_firmware file and use Ymodem to send. ``` - 此时,在`xshell`中右键单击鼠标,选择`文件传输`到`使用ymodem发送`。 - 在`whd`的`resources(wifi-host-driver/WiFi_Host_Driver/resources)`目录下,选择对应芯片的资源文件。 - 传输完成后,msh将输出如下日志: ``` Download whd_firmware to flash success. file size: 419799 ``` - 下载完固件和clm资源文件后,复位重启即可正常加载资源文件。 ### 芯片支持 | **CHIP** |**SDIO**|**SPI**|**M2M**| |-----------|--------|-------|-------| | CYW4343W | * | x | x | | CYW43438 | o | x | x | | CYW4373 | * | x | x | | CYW43012 | o | x | x | | CYW43439 | * | x | x | | CYW43022 | * | x | x | 'x' 表示不支持
'o' 表示已测试和支持
'*' 理论上支持,但未经过测试 ### ART-PI测试 ART-PI使用的是正基的AP6212模组也可以使用该驱动做测试
所有该驱动可以使用ART-PI开发板进行测试,可以参考[ART-PI RT-Thread WiFi-Host-Driver](https://github.com/Evlers/art-pi_rt-thread)项目 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240628/f2890487bd89f8ad06476eb808f5fda8.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240628/9993951f10393356fe0c61527cb69710.png) ### HPM6880和GD32F470的测试 GD32的测试代码后期我会上传至GitHub仓库 HPM6880可参考先辑官方的bsp仓库:[HPMicro GitHub](https://github.com/hpmicro) - GD32F470 + CYWL6208模组(芯片CYW43438) - GD32F470 + CYWL6302模组(芯片CYW43012) - HPM6880 + CYWL6302模组(芯片CYW43012) ![screenshot_1719556806498.png](https://oss-club.rt-thread.org/uploads/20240628/840c3778074533299ac14ff6b3b0ffbd.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240628/45fe209cef05e4e69062c872a53960d3.png) ![screenshot_1b9210299ef2555ac16fae2b2f3eff9.jpg](https://oss-club.rt-thread.org/uploads/20240628/20f434a281382997f4664d2f29c3b218.jpg) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240628/2a53837c556d214d8d80eed2907593fc.png) ### 更多信息 * [rt-thread_wifi-host-driver](https://github.com/Evlers/rt-thread_wifi-host-driver) * [Wi-Fi Host Driver API Reference Manual and Porting Guide](https://infineon.github.io/wifi-host-driver/html/index.html) * [Wi-Fi Host Driver Release Notes](./wifi-host-driver/RELEASE.md) * [Infineon Technologies](http://www.infineon.com) ### 联系方式&支持 - 邮箱: 1425295900@qq.com - GitHub & 微信:Evlers - 如果驱动上有什么问题欢迎提交PR或者联系我一起交流 - 后续将继续添加蓝牙功能,敬请期待~! - 如果你觉得这个项目不错,并且能够满足您的需求,请打赏打赏我吧~ 感谢支持!!
### 致谢 - 感谢先辑半导体的杨工帮忙测试 - 感谢新联鑫威(杭州)科技有限公司提供WiFi模组的支持
22
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Evlers
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部