你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G070CBT6使用硬件SPI无法读出W25Q128的ID

[复制链接]
愿净一清 提问时间:2025-3-27 19:27 / 未解决

我使用以下代码在STM32F103CBT6,可以正常读出W25Q128的id。就是同样的读ID代码,同样的hal库,同样的硬件,但是在STM32G070CBT6就无法读出,显示FFFFFF.

STM32CubeMx,也是同样的配置。还有我尝试过软件SPI,也能读出ID.实在找不到哪里有问题了,求助大佬们!🚀️

屏幕截图2025-03-27194509.png屏幕截图2025-03-27194417.png

uint32_t W25Q128_ReadID(void)
{
    uint8_t cmd = 0x9F;       // JEDEC ID指令
    uint8_t rcv_data[3] = {0};
    uint32_t id = 0;

    // 拉低CS选通芯片
    HAL_GPIO_WritePin(W25Q128_CS_GPIO_Port, W25Q128_CS_Pin, GPIO_PIN_RESET);

    // 发送读ID指令
    if (HAL_SPI_Transmit(&hspi2, &cmd, 1, 100) != HAL_OK)
    {
        // 传输错误处理(可选:添加日志或错误标志)
        HAL_GPIO_WritePin(W25Q128_CS_GPIO_Port, W25Q128_CS_Pin, GPIO_PIN_SET);
        return 0;
    }

    // 接收3字节ID数据(HAL_SPI_Receive会发送哑元数据0xFF生成时钟)
    if (HAL_SPI_Receive(&hspi2, rcv_data, 3, 100) != HAL_OK)
    {
        HAL_GPIO_WritePin(W25Q128_CS_GPIO_Port, W25Q128_CS_Pin, GPIO_PIN_SET);
        return 0;
    }

    // 释放CS引脚
    HAL_GPIO_WritePin(W25Q128_CS_GPIO_Port, W25Q128_CS_Pin, GPIO_PIN_SET);

    // 组合ID:Manufacturer(ID0) + Device(ID1 << 8 | ID2)
    id = (rcv_data[0] << 16) | (rcv_data[1] << 8) | rcv_data[2];
    return id;
}
image.png
image.png
收藏 评论8 发布时间:2025-3-27 19:27

举报

8个回答
xmshao 回答时间:5 天前
从你描述来看,代码本身应该没啥问题。重点怀疑SPI的配置和硬件链接。


配置方面保证跟其它系列的配置一样,无非SPI模式的选择。


硬件连接的话,检查是否接对了、然后是否接好了。
butterflyspring 回答时间:5 天前
直接一点,用逻辑分析仪看一看发送的数据是否是期望的,符合协议的或者缺少了什么?


有时候一些硬件问题会比较直观反映出来。

命令不长,也可以用示波器看一下。
愿净一清 回答时间:5 天前

xmshao 发表于 2025-3-28 09:51
从你描述来看,代码本身应该没啥问题。重点怀疑SPI的配置和硬件链接。</p>
<p>

是的,我和其他系列配置的一模一样,硬件也连接的没有错,因为用软件模拟SPI,就能读出,然后STM32CubeMx也是配置的一模一样。是否是STM32 HAL库有问题呀??确实找不到什么原因了

还有就是我发现MISO 线在STMG070是配置的输出模式。是否会影响

愿净一清 回答时间:5 天前

butterflyspring 发表于 2025-3-28 09:54
直接一点,用逻辑分析仪看一看发送的数据是否是期望的,符合协议的或者缺少了什么?</p>
<p>

没有逻辑分析仪,哥。就是配置的一模一样的HAL库,也是同样的代码。在STM32F103上就能读出W25Q128的ID.

愿净一清 回答时间:5 天前

xmshao 发表于 2025-3-28 09:51
从你描述来看,代码本身应该没啥问题。重点怀疑SPI的配置和硬件链接。</p>
<p>

image.png

这是硬件连接。检查十几遍了。没有问题。

image.png
STMWoodData 回答时间:5 天前

愿净一清 发表于 2025-3-28 12:17
是的,我和其他系列配置的一模一样,硬件也连接的没有错,因为用软件模拟SPI,就能读出,然后STM32Cub ...

[md]MISO线在STMG070是配置的输出模式,这个肯定不行啊

xmshao 回答时间:4 天前

愿净一清 发表于 2025-3-28 12:17
是的,我和其他系列配置的一模一样,硬件也连接的没有错,因为用软件模拟SPI,就能读出,然后STM32Cub ...

[md]你不是说SPI配置跟其它系列一样吗? 一般来讲,复用功能脚多配置成了PP模式,你手动将MISO配置输入模式也是可以的。

保证MOSI MISO 还有 片选脚别接错了,片选脚能起作用。

butterflyspring 回答时间:前天 10:43
xmshao 发表于 2025-3-29 20:27
[md]

[md]你不是说SPI配置跟其它系列一样吗? 一般来讲,复用功能脚多配置成了PP模式,你手动将MISO配置输 ...

用示波器看一下几个脚的信号,就知道配置是否正常。


否则检查代码,很难看出外部是否有异常。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版