88W8801程序移植到STM32H743的SDMMC2(不带DMA)
巨大八爪鱼吧
全部回复
仅看楼主
level 9
测试时不要使用杜邦线,一定要把PCB板画出来之后再调试。时钟线长度必须要是数据线长度的两倍。
wifi.h里面,WIFI_CLOCK_FREQ设为1000000(也就是1MHz),WIFI_USEDMA设为0。
wifi_lowlevel.c里面,SDIO全部替换成SDMMC。
WiFi_LowLevel_WriteData(CMD53发送函数)不用改。
只需要改WiFi_LowLevel_ReadData(CMD53接收函数)。
原本STM32F1的程序里面写的是:if (__SDIO_GET_FLAG(SDIO, SDIO_FLAG_RXDAVL) != RESET)
但是STM32H7里面没有RXDAVL位。
RXDAVL(data available)的反义词是RXFIFOE(FIFO empty),我们只需要改成:
if (__SDMMC_GET_FLAG(SDMMC2, SDMMC_FLAG_RXFIFOE) == RESET)
就可以了!这个接收函数能完美兼容SDIO 4线模式,以及Stream+Block混合模式(WIFI_RWDATA_ALLOWMULTIBYTE)。
2021年12月15日 15点12分 1
level 9
移植的很完美!
2021年12月15日 15点12分 2
level 9
WiFi_LowLevel_CheckError里面有一个判断SDIO_FLAG_STBITERR的语句块。
STM32H7里面没有STBITERR位,把那个if块删掉就行了。
2021年12月15日 15点12分 3
level 9
RXFIFOE的方法,不是我发现的,是qq网友“一个人”发现的。
2021年12月15日 15点12分 5
1