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

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
赞 收藏 评论9 发布时间:2025-3-27 19:27

举报

9个回答
xmshao 回答时间:2025-3-28 09:51:02
从你描述来看,代码本身应该没啥问题。重点怀疑SPI的配置和硬件链接。


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


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


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

命令不长,也可以用示波器看一下。
愿净一清 回答时间:2025-3-28 12:17:26

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

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

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

愿净一清 回答时间:2025-3-28 12:20:11

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

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

愿净一清 回答时间:2025-3-28 12:25:10

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

image.png

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

image.png
STMWoodData 回答时间:2025-3-28 17:37:46

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

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

xmshao 回答时间:2025-3-29 20:27:06

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

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

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

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

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

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


否则检查代码,很难看出外部是否有异常。
愿净一清 回答时间:2025-4-2 19:14:34

STMWoodData 发表于 2025-3-28 17:37
MISO线在STMG070是配置的输出模式,这个肯定不行啊

HAL库自动配置成复用推挽输出的,然后我手动配置成输入模式,也是没有反应

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版