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

如何用TIM外部触发模式,去触发SPI_DMA传输

[复制链接]
Tiramisu_ 提问时间:2023-2-9 11:39 / 未解决

用在AD7767(ADC采集芯片)。这个芯片有个数据就绪引脚DRDY,DRDY为电平时,SPI可以读取AD7767数据。我原本用的是外部中断去检测DRDY引脚,在外部中断函数里触发SPI_DMA传输。但由于频率太高,进入外部中断太频繁。现在现在想改成把DRDY引脚接到TIM某个通道,用TIM外部触发模式,来触发SPI_DMA,请问这样行得通吗?如果不行,不用外部中断有什么好办法?

用的是STM32H743

收藏 评论6 发布时间:2023-2-9 11:39

举报

6个回答
xmshao 回答时间:2023-2-9 13:20:50
基于外部中断再来触发DMA传输有时可能对CPU资源是个挑战。


你的确可以考虑将DRDY信号接到TIMER的输入捕获管脚,通过定时器的捕获事件来触发DMA,进而实现SPI的数据收发。


可以肯定这个思路是可行的。 我这里有个公开的应用分享建议你阅读下,应该有参考价值。它是通过TIMER事件触发DMA完成SPI的收发。


STM32定时器触发SPI逐字收发之应用示例

https://mp.weixin.qq.com/s?__biz=MzA3OTIxMjQyNQ==&mid=2650948888&idx=1&sn=5da2562d48cfa8f6a4c11f9be3c3019d&chksm=84401ffeb33796e8e642e12aa4235c179b1a83976eafabb2324e6ecbbfc579b159fbb28de9bc&token=226105126&lang=zh_CN#rd





你现在是使用的H7系列,提醒两点:


1、安排内存时,注意是你选择的DMA可以访问得到的;
2、因为H7系列往往涉及到D-CACHE,注意数据一致性方面的问题;
3、代码实现有些地方需要自行组织,没法简单调用库API;
骑猪看世界 回答时间:2023-2-9 13:25:22

xmshao 发表于 2023-2-9 13:20
基于外部中断再来触发DMA传输有时可能对CPU资源是个挑战。</p>
<p>

为什么说用外部中断会对cpu资源造成挑战呢

Tiramisu_ 回答时间:2023-2-9 14:49:10

xmshao 发表于 2023-2-9 13:20
基于外部中断再来触发DMA传输有时可能对CPU资源是个挑战。</p>
<p>

你好有这个链接的源代码吗

Tiramisu_ 回答时间:2023-2-9 14:50:00

xmshao 发表于 2023-2-9 13:20
基于外部中断再来触发DMA传输有时可能对CPU资源是个挑战。</p>
<p>

你好有这个链接的源代码吗

xmshao 回答时间:2023-2-10 15:59:35

骑猪看世界 发表于 2023-2-9 13:25
为什么说用外部中断会对cpu资源造成挑战呢

我是有时,主要指频繁的外部中断让CPU忙于应付它而又没时间去做别的意思。

xmshao 回答时间:2023-2-10 16:00:24

Tiramisu_ 发表于 2023-2-9 14:50
你好有这个链接的源代码吗

抱歉,我找不到源代码了。

那个链接里把需要贴的代码都贴出来了。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版