添加 dma 中断

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

如何实现 adc 六通道 dma 中断程序。

0 点赞
22 回复数
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,@SunshineQAQ

你现在用的是哪个主板? 如果您使用 XMC4000 系列,我建议您参考此附件。 希望这对你有所帮助 CAN 。

BR,

欧文

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

我使用的是 XMC7000 系列。

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,@SunshineQAQ

有两种方法 CAN 实现这一点:

1) 基于 “adc_Basic” 创建新应用程序,添加其他通道的定义,然后添加 DMA 中断。

Owen_Su_0-1691473596616.png

2) 构建一个空应用程序,使用设备配置器配置您的芯片,请参考下图:

Owen_Su_1-1691473700120.png

CAN 单击“打开SAR2文档”以获取更多详细信息。希望这对你有所帮助 CAN 。

BR,

欧文

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

配置完成后,我不知道该调用哪些函数,这些函数让我觉得启动起来太麻烦了。

最好的问候

 

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,@SunshineQAQ

我认为您 CAN 浏览此文档,然后再试一次。 本文档中提供了许多基本用例,因此在进行深入研究之前, CAN 熟悉SAR ADC的配置过程。 希望这对你有所帮助 CAN 。

BR,

欧文

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

读完这个文件后,我还是不知道如何配置 adc 的 dma 中断。 有详细的演示吗? CAN 你具体一点。

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

能否请您提供 ADC DMA 中断的所有配置屏幕截图和代码屏幕截图? 我真的需要这个。

最好的问候

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

您 CAN 先参考本文档,它包含相应的代码以实现ADC_DMA,在第 3.4 章中。 测试后我会把这个项目交给你,谢谢你的理解。

Owen_Su_0-1691998655062.png

BR,

欧文

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,@SunshineQAQ

您 CAN 引用附件并修改代码。 希望这对你有所帮助 CAN 。

BR,

欧文

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

使用MTB打开后,我下载并解压缩了您的程序,但是 CAN 没有编译显示错误,这是为什么。

SunshineQAQ_0-1692175304065.png

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

1) 你的 Modus 是什么版本?

2) 如何导入项目? 您应该按照以下步骤导入:

Owen_Su_0-1692175835914.png

Owen_Su_1-1692175877524.png

Owen_Su_2-1692175924633.png

3)导入后, CAN 编译项目,如果出现缺少“ADCDMA”定义的错误,则应在“main.c”中添加相应的定义:

Owen_Su_4-1692176383756.png

4)之后, CAN 使用“串行端口实用程序”来观察ADC转换的结果。

BR,

欧文

 

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

或者,如果您 CAN 在设备配置器中配置 DMA:

Owen_Su_0-1692176908226.pngOwen_Su_1-1692176932560.png

此步骤与 上一条评论中的步骤 3) 具有相同的效果。如果您不缺少相关定义,则 CAN 跳过此步骤。

BR,

欧文

 

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,@SunshineQAQ

1) 你现在使用的是哪个版本的 Modus,请将 Modus 更新到最新版本。

2) 对于上述问题,这是因为在导入过程中相关的 DMA 配置丢失。 因此,你应该在更新 Modus 后重新导入项目。

3) 替换 “design.modus” 在你的项目中存档

Owen_Su_0-1692240187956.png

Owen_Su_1-1692240197386.png

Owen_Su_2-1692240211570.png

导入后,你应该转到相应的文件并替换 “design.modus” 文件:

Owen_Su_4-1692240461938.png

Owen_Su_3-1692240428218.png

注意:第一个是我给你的文件,第二个是存储 Modus 项目的地方。

4) 然后打开 “设备配置器”,检查 DMA 是否已完全配置,单击 “保存”,然后重新生成项目。

Owen_Su_5-1692240882557.png

5) 对于采样率, CAN 更改事件触发器的设置。

BR,

欧文

 

 

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

如果我根据你的代码配置六个ADC通道的DMA中断,代码量就会非常大。 我的要求是通过DMA将六个ADC通道收集的数据存储到内存中,并在所有存储完成后生成中断。

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

1) 我根据你昨天发送的屏幕截图配置了第一种 DMA。

SunshineQAQ_0-1692243904763.png

SunshineQAQ_1-1692243968212.png

2) 第二种是你昨天发给我的文件,我没有在任何地方修改过。

SunshineQAQ_2-1692243996764.png

SunshineQAQ_3-1692244018062.png

这两个中哪一个是正确的,为什么我的和你的不一样?

最好的问候

 

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

1)为什么我有时会完成 dma 中断,有时却无法完成

SunshineQAQ_0-1692668069903.png

2)我用同样的配置为另一个 adc 通道配置 dma 中断,结果两个通道都不可用。为什么两个频道都卡住了?

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

1) 你应该检查这个值的定义:

Owen_Su_0-1692672916231.png

当没有中断或可能报告了其他错误时,test_complete = 0。 在我们的条件下,这意味着当时没有中断。

2) 我已经检查了你的项目,你只是在代码中添加了一些定义,但你没有为频道 1 添加中断,也没有配置频道 1。 你应该找出 “ADC_HW” 的定义,你会发现你只有 “CH0” 的定义。

Owen_Su_1-1692673573163.png

3) 您应该使用设备配置器,添加频道数量并对其进行配置,然后为其他通道添加中断。 我想你应该先看看我的例程,学习如何配置一个频道。

Owen_Su_2-1692673697349.png

BR,

欧文

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

我将 io 端口从 P6.0 更改为 P18.2,所有其他配置均未更改。 现在 ADC 无法读取数据,而且 DMA 无法传输数据。 这是为什么?

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

现在这只是一个 adc 通道的 dma 中断,如果我需要对六个 adc 通道使用 dma 中断,我该如何实现?

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

1) 我看到我的代码的定义在那里,我不知道你为什么要打开它。

SunshineQAQ_0-1692683071404.png

2) 我发现 dma 中断接收效率非常低

最好的问候

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,欧文,

我发现只有第一张打印是 test_complete=0x88,随后的 test_complete=0,而且 adc 采样率有点慢。

SunshineQAQ_1-1692180851447.png

最好的问候

 

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

我已经查看了你附件中的代码,你没有设置与 DAM 相关的内容,但你使用了 “ADCDMA” 作为判断你的 “if” 陈述的基础。 而且您的代码已更改,如果您使用我发送给您的代码并且只是简单地更改了 PIN,它 CAN 工作正常,我已经对其进行了测试(将 PIN 更改为 P18.2)。

Owen_Su_0-1692856518799.png

提醒一下,如果你的代码没有成功运行,你应该根据运行逻辑逐步检查。 例如,添加一个 'printf () '或使用断点并检查 ADC 中断是否已跳入,以及 ADC 中断是否已完成。 等等 同样,根据我之前告诉过的方法,您 CAN 轻松实现多通道传输。 希望这对你有所帮助 CAN 。

Owen_Su_3-1692857009891.png

 

Owen_Su_2-1692856968629.png

BR,

欧文

0 点赞