RT-Thread论坛
直播中

李微波

7年用户 926经验值
私信 关注

STM32F407ZGT6 spi flash片选引脚无法被拉低的原因?怎么解决?

我用的芯片是STM32F407ZGT6,RTThread版本5.0.2,spi flash挂载在spi1总线,设备号是spi10


int w25qxx_init(void)
{
    struct rt_spi_device *spi_device = RT_NULL;
    spi_device = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device));
    if(RT_NULL == spi_device)
    {
      LOG_E("Failed to malloc the spi device.");
      return -RT_ENOMEM;
    }
    struct stm32_hw_spi_cs cs_pin =
    {
        .GPIOx = GPIOG,
        .GPIO_Pin = GPIO_PIN_6
    };
    if (RT_EOK != rt_spi_bus_attach_device_cspin(spi_device, "spi10", "spi1",rt_pin_get("PG.6"), &cs_pin))
    {
        LOG_E("Failed to attach the spi device.");
        return -RT_ERROR;
    }
    if (RT_NULL == rt_sfud_flash_probe("W25Q128", "spi10"))
    {
        LOG_E("Failed to probe the W25Q128.");
        return -RT_ERROR;
    };
}
INIT_COMPONENT_EXPORT(w25qxx_init);
通过手动输入sf probe spi10命令,并用逻辑分析仪观测,发现PG6引脚没有被拉低

1.png
这里应该是发送读flash ID命令0x9F

回帖(2)

林沧禄

2024-2-20 15:47:14
建议先使用 msh cmd 命令,写个简单的引脚函数,确认引脚是否受控。确认引脚是否正确配置(复用功能、时钟),然后代码跟进去,确认是否有拉高或者拉低的操作
举报

杨帆

2024-2-21 09:24:07
根据你提供的信息,可能有以下几种原因导致SPI flash片选引脚无法拉低:

1. 引脚配置错误:检查片选引脚的配置是否正确,包括引脚模式、速度、推挽/开漏等设置。

2. 软件操作错误:确认在发送数据前是否正确操作了SPI flash片选引脚,使其拉低。可以使用示波器检查引脚电平变化情况。

3. 物理连接问题:检查SPI flash片选引脚的连接是否正常,包括是否有短路、松动等问题。

解决方法可能包括:

1. 检查引脚配置:根据芯片手册和开发板资料,确保片选引脚的配置正确。

2. 检查软件操作:确认在使用SPI接口读写数据时,正确操作了SPI flash片选引脚,使其拉低。

3. 检查物理连接:检查SPI flash片选引脚的连接是否正常,确保没有短路、松动等问题。

如果以上方法仍然无法解决问题,可能需要进一步调试和分析,例如检查信号波形、查看芯片和外设的文档等。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分