stm32f429+RW007 初始化一直失败???

发布于 2020-10-20 16:38:51

硬件使用的ALIENTEK的F429核心板,底板是自己画的板子
RW007在SPI4上总线上挂载
spi4通过cubmux配置IO口,KCONFIG里也修改了,list_device里也有spi4设备
初始化一直失败,感觉是SPI初始化的有问题,请大家帮我看看
SPI4 IO口配置(cubmux生成的)

  /* USER CODE END SPI4_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI4_CLK_ENABLE();
  
    __HAL_RCC_GPIOE_CLK_ENABLE();
    /**SPI4 GPIO Configuration    
    PE2     ------> SPI4_SCK
    PE5     ------> SPI4_MISO
    PE6     ------> SPI4_MOSI 
    */
    GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_5|GPIO_PIN_6;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF5_SPI4;
    HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

硬件连接图
1.png

2.png
3.png

rw007_stm32_port.c

#include <rtthread.h>

#ifdef RW007_USING_STM32_DRIVERS
#include <rtdevice.h>
#include <drv_spi.h>
#include <board.h>
#include <spi_wifi_rw007.h>

extern void spi_wifi_isr(int vector);

#define RW007_nCS_PIN       GET_PIN(E,4)
#define RW007_nBOOT0_PIN    GET_PIN(E,2)
#define RW007_nBOOT1_PIN    GET_PIN(E,4)
#define RW007_nINT_BUSY_PIN GET_PIN(E,3)
#define RW007_nRST_PIN      GET_PIN(I,11)

static void rw007_gpio_init(void)
{
    /* Configure IO */
    rt_pin_mode(RW007_nRST_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(RW007_nINT_BUSY_PIN, PIN_MODE_INPUT_PULLDOWN);

    /* Reset rw007 and config mode */
    rt_pin_write(RW007_nRST_PIN, PIN_LOW);
    rt_thread_delay(rt_tick_from_millisecond(100));
    rt_pin_write(RW007_nRST_PIN, PIN_HIGH);

    /* Wait rw007 ready(exit busy stat) */
    while(!rt_pin_read(RW007_nINT_BUSY_PIN))
    {
        rt_thread_delay(1000);
        rt_kprintf("WIFI BUSY...\n");
    }

    rt_thread_delay(rt_tick_from_millisecond(200));
    rt_pin_mode(RW007_nINT_BUSY_PIN, PIN_MODE_INPUT_PULLUP);
}

int wifi_spi_device_init(void)
{
    char sn_version[32];
    
    GPIO_TypeDef *cs_gpiox;
    uint16_t cs_pin;

    cs_gpiox = GPIOE;
    cs_pin = GPIO_PIN_4;

    rw007_gpio_init();
    rt_hw_spi_device_attach("spi4", "wspi", cs_gpiox, cs_pin);
    rt_hw_wifi_init("wspi");

    rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME, RT_WLAN_STATION);
    rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP);

    rw007_sn_get(sn_version);
    rt_kprintf("\nrw007  sn: [%s]\n", sn_version);
    rw007_version_get(sn_version);
    rt_kprintf("rw007 ver: [%s]\n\n", sn_version);

    return 0;
}
INIT_APP_EXPORT(wifi_spi_device_init);

static void int_wifi_irq(void * p)
{
    ((void)p);
    spi_wifi_isr(0);
}

void spi_wifi_hw_init(void)
{
    rt_pin_attach_irq(RW007_nINT_BUSY_PIN, PIN_IRQ_MODE_FALLING, int_wifi_irq, 0);
    rt_pin_irq_enable(RW007_nINT_BUSY_PIN, RT_TRUE);
}

#endif /* RW007_USING_STM32_DRIVERS */

串口输出内容:
49.png

检查了2天了没找到问题,请各位前辈指导,谢谢!

查看更多

关注者
1
被浏览
531
zailiy
zailiy 2020-11-23

是固件版本问题,升级RW007固件后可正常使用

6 个回答
shadowliang
shadowliang 2020-10-21

楼主使用的 RW007 软件包是最新的版本吗?

xiaoyu
xiaoyu 2020-10-21

我也遇到了你这个问题
你的解决了吗
image.png

hichard
hichard 认证专家 2020-10-23

波特率降低试试!

痞子hello
痞子hello 2020-11-23

楼主现在解决没,我的也是之前用不了,然后厂家帮忙将wifi芯片固件更新,应用驱动也升级到了2.0.0版本,但现在遇到了和楼主一模一样的问题。楼主解决了的话,还请分享下,谢谢!

aozima
aozima 2020-10-20
拒绝白嫖,拒绝键盘侠!

找客服确认下固件和驱动版本,然后SPI的时钟频率先降低一些,如1M或5M。
如果还有问题,建议上逻辑分析仪看下,把抓到的波形看下。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览