硬汉嵌入式论坛

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

[SPI/QSPI] STM32H7是否能用SPI的DMA驱动AD7616

[复制链接]

19

主题

62

回帖

119

积分

初级会员

积分
119
发表于 2021-12-15 22:12:26 | 显示全部楼层 |阅读模式
AD7616的spi读数据时序图如下:

AD7616 SPI 读数据

AD7616 SPI 读数据

大概解释一下:
     CONVST是需要cpu发起的启动采样的启动信号,AD7616在采样过程中会一直将BUSY拉高,在BUSY下降沿出现后,可以拉低CS进行n个16bit的clk输出来获得n个ADC通道的采样值(AD7616是16通道并发采样,一次可以获得全部通道的数据)

请问能否实现:
         定时器按指定间隔发出CONVST并通过输入捕获触发DMA完成spi的数据收发,将数据缓冲到内存中,完成n次触发后,cpu取出数据来进行处理?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2021-12-16 09:01:40 | 显示全部楼层
这个可以做。楼主可以试试。

如果是循环转换模式,就需要PWM一直开启着,来一路INT信号,触发DMA读取一次8路数据。

针对这个问题,就可以使用DMAMUX的事件触发方式来实现,可以选择的主要是:
HAL_DMAMUX1_REQ_GEN_EXTI0
HAL_DMAMUX2_REQ_GEN_EXTI0
HAL_DMAMUX2_REQ_GEN_EXTI2

回复

使用道具 举报

19

主题

62

回帖

119

积分

初级会员

积分
119
 楼主| 发表于 2021-12-16 21:24:37 | 显示全部楼层
感谢硬汉的指导,在请教一下:

对于smt32的spi一直有一个疑惑,就是每一次发送结束后spi的硬件cs都无法成功变位,而是用于保持不变,最后只能用把cs设置成软件模式,导致DMA没法连续使用,不知道STM32H750是否能解决这个问题,还是说其他版本的STM32,是我的驱动方式不对?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2021-12-17 12:02:45 | 显示全部楼层
mojinpan 发表于 2021-12-16 21:24
感谢硬汉的指导,在请教一下:

对于smt32的spi一直有一个疑惑,就是每一次发送结束后spi的硬件cs都无法成功 ...

没问题啊,我做的SPI DMA驱动DAC853,DAC8501就是用的硬件片选,很好用,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 02:08 , Processed in 0.161560 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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