hi,你好:
看到你那个移植RTL8189WIFI模块的文章,我最近也自己在移植,貌似也遇到了电压的问题。
不知道是不是跟你一样,我来描述一下:
买的正点原子的模块,VDDIO接了3.3V,整个模块的SDIO和数字IO工作在3.3V了:

但是我的开发板的SDIO和GPIO输出高都是1.8V的(万用表测的),所以我怀疑是电压差异的原因。
我这边的报错:

你那边的情况是否跟我一样呢,然后具体是怎么解决的呢?
我这边做软件的,由于这个移植是自己娱乐,没有硬件的帮忙。
期待回复~
hi,你好:
看到你那个移植RTL8189WIFI模块的文章,我最近也自己在移植,貌似也遇到了电压的问题。
不知道是不是跟你一样,我来描述一下:
买的正点原子的模块,VDDIO接了3.3V,整个模块的SDIO和数字IO工作在3.3V了:

但是我的开发板的SDIO和GPIO输出高都是1.8V的(万用表测的),所以我怀疑是电压差异的原因。
我这边的报错:

你那边的情况是否跟我一样呢,然后具体是怎么解决的呢?
我这边做软件的,由于这个移植是自己娱乐,没有硬件的帮忙。
期待回复~
上午好☀️☀️☀️️
本答案参考通义千问
你好!根据你的描述,确实可能是因为电压不匹配导致的问题。以下是对问题的分析以及解决方案:
电压差异:
可能导致的错误:
以下是几种可能的解决方案,你可以根据实际情况选择适合的方法:
调整开发板的电源管理芯片:
使用电平转换器:
开发板 GPIO/SDIO -----> 电平转换器 -----> RTL8189 GPIO/SDIO
确认模块的VDDIO设置:
尝试强制模块使用1.8V模式:
增加延时或降低频率:
// 增加延时
HAL_Delay(5); // 延时5ms
// 降低通信频率
SDIO_CLK_DIV = SDIO_CLK_DIV | 0x0F; // 设置更低的时钟频率
检查驱动程序配置:
sdio_host的相关配置。使用支持1.8V的模块:
更换支持3.3V的开发板:
如果你选择了使用电平转换器,以下是一个简单的示例代码,用于初始化电平转换器:
// 初始化电平转换器
void Init_Level_Shifter(void) {
// 启用电平转换器
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; // 假设使用PA0和PA1作为转换通道
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; // 开漏模式
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
根据你的描述,最可能的原因是电压不匹配导致的通信问题。建议优先尝试调整开发板的电压或使用电平转换器。如果这些方法不可行,再考虑其他方案。
希望以上内容对你有所帮助!如果还有疑问,请随时补充说明。