硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1698|回复: 1
收起左侧

[SPI/QSPI] spi 通信异常可能的问题

[复制链接]

2

主题

1

回帖

7

积分

新手上路

积分
7
发表于 2024-8-5 22:43:00 | 显示全部楼层 |阅读模式
最近在用stm32 与w5500做 spi通讯   纪录一下遇到较少见的问题(不专业纪录,有错在麻烦指点 谢谢)


•1 确认cs clk mosi miso 之间的相位(如下图 clk超过cs结束位置),所以要加上延迟

85.PNG
•2 若设定了传输期间关闭中断标志__set_PRIMASK(像是W5500范例代码) 须注意CS信号加上延迟会
    因无法产生中断而卡死(我用for loop 延迟)(不知有无更优雅的方法?)


•3 stm32 nucleo 中有些脚位像是H7的B14有接一个板上LED灯, 这时miso信号会不稳(示波器量几乎无讯号)
(这是真的坑,当初拔起来量miso是正常的,但没有插着量就以为没事)


•4 H7的SPI_2 有用到PC2_C  PC3_C 脚,这个脚是类比用的,但官方IDE还是可以选(经查询似乎也不是不能用 ?,只是处理起来感觉麻烦了点)


•5  管脚时钟跟SPI时钟要打开(这些IDE默认是会自动配好的,可以不管)
__HAL_RCC_SPIX_CLK_ENABLE();      SPI时钟打开
__HAL_RCC_GPIOX_CLK_ENABLE();   GPIO时钟打开
GPIO_InitStruct.Alternate = GPIO_AFX_SPIX;  引脚复用功能(参考手册如下图)(IDE也会自动配)

85_2.PNG
6 GPIO 管脚速度依需求设置(不能啥都设very high 会翻车)(我低速2M想说怎还无法通讯结果设回LOW就好了)

另外有一个奇怪的现象想问一下,   SPI CLK没有上拉电阻时CLK是下图这样,但是CS信号左右延迟设大设小这斜波就跟着缩放,
查了一下好像是信号容性有关,可是我是硬件SPI (只有CS是软件控制)照理说CLK这斜波持续时间不是应该固定的吗?怎么会
跟着沿时拉长呢?  CLK没上拉时是下面这样 (加了上拉后就是完美的高电平了 忘记截上拉后的图)
85_1.PNG

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-8-7 09:02:19 | 显示全部楼层
谢谢楼主分享。

实际测试硬件SPI配置内置的上拉还挺重要的,不配置,效果确实略差一些。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 17:35 , Processed in 0.040833 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表