楼主: 萱蘇2015

[其他] PDB0触发ADC0 ADC2 ADC3同时采样,利用DMA1的其中6个通道搬运

[复制链接]
  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-9-15 18:24:31 | 显示全部楼层
    小恩GG 发表于 2017-9-15 18:12
    暂时不好判断,你可以创建一个简单的demo,可以复现你的问题的,然后通过以下链接创建一个技术申请,会有 ...

    好的  谢谢奥
    还有一个问题:我设置PIT0周期100us,但是设置DMA搬运2个采样点进入一次DMA中断,用PIT1计时发现
                         采样周期只有预设值一半大小。很是疑惑
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-9-18 09:45:38 | 显示全部楼层
    你的意思是你设置的PIT 周期是100us,但是其实是50us对吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-9-18 11:33:10 | 显示全部楼层
    小恩GG 发表于 2017-9-18 09:45
    你的意思是你设置的PIT 周期是100us,但是其实是50us对吗?

    您好:
            我发现问题是这样的:
    因为DMA的触发源没有区别ADC0_A通道还是ADC0_B通道
           DMA触发源.png
    所以当      PDB0_CH0_A触发ADC0_A后  
    ADC会把ADC0_A   ADC0_B对应的DMA通道都触发。
    这不是我想要的效果。


    我想要:ADC0_A    只触发对应的DMA通道
                  ADC0_B    只触发对应的DMA通道
    您觉得我如果避免这情况呢?

    附DMA触发源代码:
    DMAMUX_CHCFG_REG(DMAMUX1_BASE_PTR, (CHn - 16)) = (0   
                | DMAMUX_CHCFG_ENBL_MASK                     
                | DMAMUX_CHCFG_SOURCE(DMA_ADC0)               
                                               );



             

    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-9-18 14:16:04 | 显示全部楼层
    萱蘇2015 发表于 2017-9-18 11:33
    您好:
            我发现问题是这样的:
    因为DMA的触发源没有区别ADC0_A通道还是ADC0_B通道

    DMA不会区分ADC DMA request是由ADC0_A 和ADC0_B中哪一个引发的,你需要确保每次只有一个DMA channel是enable,才能避免两个channel一起被触发
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-9-18 18:59:55 | 显示全部楼层
    小恩GG 发表于 2017-9-18 14:16
    DMA不会区分ADC DMA request是由ADC0_A 和ADC0_B中哪一个引发的,你需要确保每次只有一个DMA channel是en ...

    是呢,问题确实是这样的。
    目前我没有研究出如何让ADC0_A  ADC0_B 与DMA通道一一对应的方法。
    不知道您有没有建议呢?

    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-9-19 09:46:57 | 显示全部楼层
    萱蘇2015 发表于 2017-9-18 18:59
    是呢,问题确实是这样的。
    目前我没有研究出如何让ADC0_A  ADC0_B 与DMA通道一一对应的方法。
    不知道您有 ...

    你可以设置单次传输DMA中断使能,然后暂时禁止对应的DMA channel,使得下次ADC DMA请求只有一个channel可以响应,当然, 另外的DMA channel也需要同样的操作。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-9-19 11:40:21 | 显示全部楼层
    小恩GG 发表于 2017-9-19 09:46
    你可以设置单次传输DMA中断使能,然后暂时禁止对应的DMA channel,使得下次ADC DMA请求只有一个channel可 ...

    我在手册K10P144M120SF3RM里面没有发现您说的这个中断呀。还是需要通过其他配置而来?
    中断.jpg
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-9-19 14:28:53 | 显示全部楼层
    小恩GG 发表于 2017-9-19 09:46
    你可以设置单次传输DMA中断使能,然后暂时禁止对应的DMA channel,使得下次ADC DMA请求只有一个channel可 ...

    如果按照您说的DMA每搬运一个点就进一次中断,如果采集点的数量比较少还能接受。如果采集点数量比较大,需要不断进入中断,必然会增加开销。不是很理想的方案
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24879
    最后登录
    2025-7-20
    发表于 2017-9-19 17:50:50 | 显示全部楼层
    萱蘇2015 发表于 2017-9-19 14:28
    如果按照您说的DMA每搬运一个点就进一次中断,如果采集点的数量比较少还能接受。如果采集点数量比较大, ...

    这是个取舍的问题,或者你使用分散/收集模式,当然这就更复杂了,一个TCD使用完,初始化另一个TCD,就像这样相互使能初始化,保证只有一个TCD是active的,但是这样代码就有点复杂了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-7 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    130

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    401
    最后登录
    2020-11-3
     楼主| 发表于 2017-9-19 17:58:40 | 显示全部楼层
    本帖最后由 萱蘇2015 于 2017-9-21 15:32 编辑
    小恩GG 发表于 2017-9-19 17:50
    这是个取舍的问题,或者你使用分散/收集模式,当然这就更复杂了,一个TCD使用完,初始化另一个TCD,就像 ...

    好的  谢谢
    我看咱们官方例程有类似的方案,但是源码和方案对不上。如下
    1.png 这个文档里面有如下方案:

    方案12.png

    1)有可能我源码没有找对,麻烦您帮我发一下这两个源码吧?
    2)不知道咱们官网有没有关于这种类似方案的文档等,分享些。


    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 20:40 , Processed in 0.117358 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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