查看: 10497|回复: 12

[已解决] PIT,ADC,DMA如何有机结合组成一个数据流采集 (已解决)

[复制链接]

该用户从未签到

6

主题

41

帖子

0

注册会员

Rank: 2

积分
137
最后登录
1970-1-1
发表于 2014-4-7 16:34:02 | 显示全部楼层 |阅读模式
PIT-ADC-DMA.jpg
  有很多工业控制的应用场合,需要用到定时采样多路信号,然后按顺序存放在SRAM,形成数据流。假设用KL25来实现,描绘出如上图。
 如上框图:
1.有4路信号INa,INb,INc,INd。
2.PIT,ADC,DMA为KL25片内的资源。
3.INa,INb,INc,INd分别接到KL25片内ADC的Ch0,Ch1,Ch2,Ch3,单端输入。
4.PIT产生一个1ms定时触发ADC采集转换,那么为1000Hz的采集频率,
从KL25的参考手册(RM),ADC可以接受PIT作为硬件触发源。
5.从KL25的参考手册(RM)中看到DMA控制器有4个独立的Ch,那么这4个通道可以配置成,源地址分别为ADC—Ch0 ADC0_R0, Ch1 ADC0_R1, Ch2 ADC0_R2, Ch3 ADC0_R3, 目的地址分别为 @ INa_ADResult[ina][0],@ INb_ADResult[inb][0],@ INc_ADResult[inc][0], @ INd_ADResult[ind][0]; 而且DMA目的地址计数器 DMA_DCRn. DINC=1, 为自增模式。
每个AD转换结果数组为20个AD转换值,到第20个值后循环覆盖之前的第1个值。
 
欢迎FAE各位版主给点建议,如何能很好配置PIT,ADC,DMA使各个模块间有机结合。本人想立此帖,来激励自己作为一个pre-study。
 

 
我知道答案 目前已有12人回答
回复

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2014-4-8 10:08:19 | 显示全部楼层

回复:PIT,ADC,DMA如何有机结合组成一个数据流采集 (已解决)

基本思路是对的,但是由于KL25的ADC模块只有一个,对应的DATA寄存器应该也只有一个,不是上文列出的四个。AD通道的切换是一个重要的方面,可以使用两个DMA通道,一个用于通道切换,一个用于ADC数据的搬移,而且此处可以使用DMA的link触发通道切换,当然也可以要放到DMA中断或者ADC中断进行通道切换,但是可能比较占用CPU的资源。
至于时序上的配合,假设输入为50HZ,每周波采集1024点。在一个ADC模块上4路同时采集,采集一个点需要的时长为1/50/1024/4=4.8us,与ADC的最高转换速率接近。那么这样就计算出PIT的定时周期了。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

41

帖子

0

注册会员

Rank: 2

积分
137
最后登录
1970-1-1
 楼主| 发表于 2014-4-8 14:06:16 | 显示全部楼层

回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

回复第 2 楼 于2014-04-08 10:08:19发表:
基本思路是对的,但是由于KL25的ADC模块只有一个,对应的DATA寄存器应该也只有一个,不是上文列出的四个。AD通道的切换是一个重要的方面,可以使用两个DMA通道,一个用于通道切换,一个用于ADC数据的搬移,而且此处可以使用DMA的link触发通道切换,当然也可以要放到DMA中断或者ADC中断进行通道切换,但是可能比较占用CPU的资源。
至于时序上的配合,假设输入为50HZ,每周波采集1024点。在一个ADC模块上4路同时采集,采集一个点需要的时长为1/50/1024/4=4.8us,与ADC的最高转换速率接近。那么这样就计算出PIT的定时周期了。
 
多谢版主的指导,有三点疑问在KL25 参考手册《KL25P80M48SF0RM[size=13.333333969116211px] 》中,1. Chater 28 的28.3 ADC memory map给出了 
ADC0_SC1A及ADC0_SC1B 在上下文中对ADC0_SC1B解释并不多,从“The SC1B–SC1n registers indicate potentially multiple SC1 registers for use only in hardware trigger mode.(page 462-463)”和“Writing any of the SC1n registers while that specific SC1n register is actively controlling a conversion aborts the current conversion. None of the SC1B-SC1n registers are used for software trigger operation and therefore writes to the SC1B–SC1n registers do not initiatea new conversion” 看出ADC0_SC1B和硬件(内部外设及IO)触发相关,单是手册没有给出 更多的信息。怎么理解这个ADC0_SC1B
2. 还是 Chater 28 的28.3 ADC memory map给出了ADC0_RA及ADC0_RB这个两个结果寄存器怎么理解,是存放一样的转换结果值么?输入的通道是由ADCx_SC1n. ADCH指定的通道么?
3. 如下图,手册截取的ADC 模块框图,框图中的ADHWTSA。。。ADHWTSn
  New Bitmap Image.jpg
相对对应的描述信息在哪里? 是否为Chater 3 的 3.2.1 Module to Module Interconnects Table 3-1
 
最后版主有没有一些补充资料来帮忙理解ADC,毕竟片内的16 bit ADC还是比较复杂的一个外设,手册的描述还是不够深入。
 
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-4-8 17:10:53 | 显示全部楼层

回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

这边有一篇AN,希望能帮到你:

AN4639-How to Configure DMA Periodic Trigger Function on Kinetis Devices.pdf

308.82 KB, 下载次数: 174, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6031
    最后登录
    2025-8-21
    发表于 2014-4-8 17:29:09 | 显示全部楼层

    回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

    Q1:怎么理解这个ADC0_SC1B
    A1:ADC0从memory map可以看出有ADC0_SC1A及ADC0_SC1B这两组寄存器。
    手册中“28.3.1 ADC Status and Control Registers 1 (ADCx_SC1n)”提到了ADC模块可以有多个状态控制寄存器(其实就是SC1A和SC1B)。SC1A可以软、硬件触发,而SC1B只支持硬件触发。
    SC1A SC1B.jpg
     
    这种一个ADC模块配2种状态控制寄存器(ADCx_SC1n)以及2种结果寄存器(ADCx_Rn)在我看来其目的是:使得ADC模块使用更为灵活便利。
    比如你想用定时器轮流采样两路ADC输入通道,那么用PIT的channel0和channel1分别硬件触发ADCx_SC1A、ADCx_SC1B的两种配置就能实现。不再需要你完成一种ADC配置的转换后,软件修改状态控制寄存器以切换ADC输入通道。(当然还有其他应用,这仅供你理解)
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6031
    最后登录
    2025-8-21
    发表于 2014-4-8 17:34:17 | 显示全部楼层

    回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

    Q2:还是 Chater 28 的28.3 ADC memory map给出了ADC0_RA及ADC0_RB这个两个结果寄存器怎么理解,是存放一样的转换结果值么?输入的通道是由ADCx_SC1n. ADCH指定的通道么?
    A2:两种配置的ADC转换,其结果放入对应的结果寄存器。ADC0_SC1A这种配置的转换结果将放入ADC0_RA,而ADC0_SC1B这种配置的转换结果将放入ADC0_RB。
    由于输入通道ADCH是在ADCx_SC1n寄存器中配置的,所以正如上面提到的ADC0_SC1A配置的ADC转换将会把该输入通道采样结果存入ADC0_RA。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6031
    最后登录
    2025-8-21
    发表于 2014-4-8 17:44:15 | 显示全部楼层

    回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

    Q3:如下图,手册截取的ADC 模块框图,框图中的ADHWTSA。。。ADHWTSn相对对应的描述信息在哪里? 是否为Chater 3 的 3.2.1 Module to Module Interconnects Table 3-1?
    A3:ADC模块硬件触发源及相关信息的确可以在Table 3-1的上半部分看到,在Comment列中也提到了触发源的ch0、ch1 和 ADC模块SC1A、SC1B两种配置的对应关系。
    Module to Module Interconnects.jpg
     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    459

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    303
    最后登录
    2024-10-24
    发表于 2014-4-8 19:13:24 | 显示全部楼层

    回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

     5#的解释很有道理,但是对于“PIT的channel0和channel1分别硬件触发ADCx_SC1A、ADCx_SC1B的两种配置就能实现”这点倒是有点疑问,借此帖问出来,希望大家一块讨论。
    个人倒是觉得如果使用ADCx_SC1A、ADCx_SC1B轮流进行ADC的触发采集,只能用到TPM1的channel0和channel1,因为如第三幅截图在硬件触发Alternate trigger selected中只能选择PIT 的 PIT trigger 0或者PIT trigger 1。不知理解是否正确,欢迎大家提出自己的意见!
    Capture1.PNG
    Capture2.PNG
    3.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6031
    最后登录
    2025-8-21
    发表于 2014-4-9 10:11:48 | 显示全部楼层

    回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

    这个还真没测试过,感觉有点奇怪明明PIT和TPM1那么类似却偏要改成A or B.
    那么是否可以通过操作两遍SIM_SOPT7寄存器实现呢?
    1st:ADC0ALTTRGEN=1;   ADC0PRETRGSEL=0;   ADC0TRGSEL=0x0100;  //PIT trigger 0
    2st:ADC0ALTTRGEN=1;   ADC0PRETRGSEL=1;   ADC0TRGSEL=0x0101;  //PIT trigger 1
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    459

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    303
    最后登录
    2024-10-24
    发表于 2014-4-9 10:23:02 | 显示全部楼层

    回复:PIT,ADC,DMA如何有机结合组成一个数据流采集

     对比一下K60 100M的版本,在使用Back to back 模式时,它只支持PDB来完成触发两个ADC模块,下图是K60的ADC1的截图,对比可以发现ADC1ALTTRGEN的0对应的是PDB,而不是KL25的TPM
    Capture.PNG
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-14 05:20 , Processed in 0.114162 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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