硬汉嵌入式论坛

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

[SPI/QSPI] 使用SPI硬件片选NSS,完美解决SPI DMA双机通信第1次数据传输的错误问题

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107144
QQ
发表于 2022-4-9 02:41:28 | 显示全部楼层 |阅读模式
ST官方提供的例子是这样的:
[C] 纯文本查看 复制代码
_________________________                        _____________________________
|           ______________|                      |______________________       |
|          |     SPI1     |                      |        SPI1          |      |
|          |              |                      |                      |      |
|          |     CLK(PB3) |______________________|(PB3)CLK              |      |
|          |              |                      |                      |      |
|          |    MISO(PB4) |______________________|(PB4)MISO             |      |
|          |              |                      |                      |      |
|          |    MOSI(PB5) |______________________|(PB5)MOSI             |      |
|          |              |                      |                      |      |
|          |______________|                      |______________________|      |
|      __                 |                      |                             |
|     |__|                |                      |                             |
|     USER                |                      |                             |
|                      GND|______________________|GND                          |
|                         |                      |                             |
|_STM32H7 Master _________|                      |_STM32H7 Slave ______________|


这种方式有个比较明显的缺点,主从机上电次序不同,很容易造成从机CLK识别错误,即高低电平变化导致数据传输错位。

改成加入硬件SPI片选NSS引脚后,完美解决了这个问题。即如下接线方式:

[C] 纯文本查看 复制代码
 _________________________                        _____________________________
|           ______________|                      |______________________       |
|          |     SPI1     |                      |        SPI1          |      |
|          |              |                      |                      |      |
|          |     CLK(PB3) |______________________|(PB3)CLK              |      |
|          |              |                      |                      |      |
|          |    MISO(PB4) |______________________|(PB4)MISO             |      |
|          |              |                      |                      |      |
|          |    MOSI(PB5) |______________________|(PB5)MOSI             |      |
|          |              |                      |                      |      |
|          |    NSS(PG10) |______________________|(PG10)NSS             |      |
|          |______________|                      |______________________|      |
|                         |                      |                             |
|                         |                      |                             |
|                         |                      |                             |
|                      GND|______________________|GND                          |
|                         |                      |                             |
|_STM32H7 Master _________|                      |_STM32H7 Slave ______________|


主机:
image.png

从机:
image.png



回复

使用道具 举报

4

主题

144

回帖

156

积分

初级会员

积分
156
发表于 2022-4-9 09:33:36 | 显示全部楼层
老大,可以参考下你的H7的SPI主从机DMA代码吗,昨天调了一天从机要不就报错,要不就收不到数据
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107144
QQ
 楼主| 发表于 2022-4-9 09:53:33 | 显示全部楼层
浴火重生 发表于 2022-4-9 09:33
老大,可以参考下你的H7的SPI主从机DMA代码吗,昨天调了一天从机要不就报错,要不就收不到数据

本周发布教程。
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2022-4-9 12:34:49 | 显示全部楼层
浴火重生 发表于 2022-4-9 09:33
老大,可以参考下你的H7的SPI主从机DMA代码吗,昨天调了一天从机要不就报错,要不就收不到数据

SPI 主从双机通讯的实现

这是我之前做的实验,非常简单的实现,可以参考一下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107144
QQ
 楼主| 发表于 2022-4-9 15:32:52 | 显示全部楼层
继续更新,下午焊接了好点的线,看看是不是能再提提速。
回复

使用道具 举报

4

主题

144

回帖

156

积分

初级会员

积分
156
发表于 2022-4-12 14:36:22 | 显示全部楼层
王海靖 发表于 2022-4-9 12:34
SPI 主从双机通讯的实现

这是我之前做的实验,非常简单的实现,可以参考一下

谢谢分享,已调通
回复

使用道具 举报

4

主题

144

回帖

156

积分

初级会员

积分
156
发表于 2022-4-20 10:58:55 | 显示全部楼层
偶尔从机SPI DMA会出现无法进入完成中断的情况,可能会是哪方便原因,主spi每次都可以正常进入完成中断
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107144
QQ
 楼主| 发表于 2022-4-20 11:17:37 | 显示全部楼层
浴火重生 发表于 2022-4-20 10:58
偶尔从机SPI DMA会出现无法进入完成中断的情况,可能会是哪方便原因,主spi每次都可以正常进入完成中断

是不是杜邦线飞线的,可以降低主机速度试试
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 10:56 , Processed in 0.263671 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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