打印
[Kinetis]

【读书笔记4 探索定时器模块之PDB】

[复制链接]
2715|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
springvirus|  楼主 | 2013-10-23 15:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 springvirus 于 2013-10-23 16:26 编辑

书上的定时器模块这部分,讲的少了点,简单介绍后接着就是代码,感觉有些仓促。 对照书,看参考手册,认识上有了大致轮廓,也有了疑问。

先说下PDB特征点
1. 最多到15个触发输入源和1个软件触发源
2. 最多到8个PDB通道供给ADC硬件触发
2-1. 一个PDB通道对应一个ADC
2-2. 对于ADC转换触发来说,每个PDB通道有最多8个预触发输出和一个触发输出
2-3. 触发输出可以独自使能或禁止
2-4. 对于每个预触发输出有一个16位的延时寄存器
2-5. 可以选择将延时寄存器旁路掉
2-6. 一次性和连续,2种工作方式
2-7. 选择背靠背模式操作,使得ADC转换完成可以触发下一个PDB通道
2-8. 一个可编程的延时中断
2-9. 一个顺序错误中断
2-10. 对于预触发,有一个通道标志位和一个顺序错误标志位
2-11. 支持DMA
3. 最多到8个DAC间隔触发
3-1. 对于每个DAC,有一个间隔触发输出
3-2. 对于每个触发输出有一个16位的延时间隔寄存器
3-3. 可以选择将延时寄存器旁路掉
3-4. 可以选择外部触发
4. 最多到8路的脉冲输出
4-1. 脉冲输出可以独自使能或禁止
4-2. 可编程脉冲宽度

总结了几个关键点: input source event, ch0 pre-trigger, ch0 trigger, ADC conversion

从参考手册得到的这4个重要时间节点的信息
PDB0_CH0DLY0: 当计数器到达此值,预触发变有效
PDB0_CH1DLY1: 当计数器到达此值,同样是预触发变有效
PDB0_IDLY: 若PDB中断使能,当计数器到达此值,会产生PDB中断
PDB0_MOD: 当计数器到达此值,计数器会清零,若在连续模式,则会重新开始从0计数

开始计数后,计数器会和以下4个寄存器的值进行比对,那么在这4个节点时刻,PDB中到底发生了什么, 对后续的进程产生了哪些影响,ADC何时开始采样,何时完成转换,用时多长?

从Figure 38-54,Figure 38-56和文字叙述可以看出, 从有触发输入事件开始,启动计数器, 若PDB0_CH0DLY0和PDB0_CH0DLY1都没有被旁路的话,那么当计数器值等于 PDB0_CH0DLY0时,CH0的预触发0变有效,此时CH0触发变有效,当计数器值等于 PDB0_CH0DLY1时,CH0的预触发1变有效,此时CH0触发同样变有效,即CH0中的任何一个预触发有效,都会使得触发有效,从而触发ADC进行转换。
若一次ADC转换在过程进行中时,此时再来一次PDB通道的触发(假设相关控制位已设置成允许sequence error),那么此时就会产生sequence error。
当计数器到达PDB0_IDLY时,可以认为是ADC转换完成。 当计数器到达PDB0_MOD时,计数器值清零,若在连续模式,则会重新开始从0计数,否则会停止计数 直到下一个触发输入事件发生。
【注意,SC[LDMOD]和SC[LDOK]的设置,尤为关键】

写代码时,整个过程最关键的这4个关于时间的寄存器,根据什么要素,计算合适的时间值?

相关帖子

沙发
FSL_TICS_Jeremy| | 2013-10-23 15:38 | 只看该作者
楼主学习很认真啊,确实《嵌入式系统原理与实践》对PDB的介绍很简单粗暴,我对读书笔记中的“当计数器到达PDB0_IDLY时,可以认为是ADC转换完成”有些不同意见,计数器中的值等于PDB0_IDLY是触发ADC转换的触发源,即促使ADC开始采样转换,你觉得呢?
PDB的功能其实挺强大的,可能书中粗略的介绍使读者对其功能的了解也大打折扣不少,建议楼主可到《手把手系列之官方例程讲解大全-Kinetis系列》下载K60的ADC乒乓模式实现例程介绍文档,就是;利用PDB加ADC实现的,相信对你会有帮助的。
手把手系列之官方例程讲解大全-Kinetis系列链接如下:
https://bbs.21ic.com/icview-620864-1-1.html

使用特权

评论回复
板凳
springvirus|  楼主 | 2013-10-23 15:54 | 只看该作者
FSL_TICS_Jeremy 发表于 2013-10-23 15:38
楼主学习很认真啊,确实《嵌入式系统原理与实践》对PDB的介绍很简单粗暴,我对读书笔记中的“当计数器到达P ...

我会深入学习,并争取实践反哺理论,来加深理解~~,谢谢!

使用特权

评论回复
地板
springvirus|  楼主 | 2013-10-23 16:25 | 只看该作者
FSL_TICS_Jeremy 发表于 2013-10-23 15:38
楼主学习很认真啊,确实《嵌入式系统原理与实践》对PDB的介绍很简单粗暴,我对读书笔记中的“当计数器到达P ...

看了ping-pong例程
对MOD设置了65535,对IDLY设置了0,对CH0的触发A和B都进行了赋值,只是对根据什么赋这些数值,以及
开始工作后,PDB和ADC内的具体变化,还是无从得知啊

使用特权

评论回复
5
springvirus|  楼主 | 2013-10-23 16:35 | 只看该作者
手把手学习官方例程Kinetis100MHz+ADC.pdf  中有个图不错,发上来

使用特权

评论回复
6
KuMo_2011| | 2013-10-23 20:30 | 只看该作者
初学者望尘莫及

使用特权

评论回复
7
KuMo_2011| | 2013-10-23 21:03 | 只看该作者
PDB具体有什么用,楼主能否赐教

使用特权

评论回复
8
KuMo_2011| | 2013-10-23 21:39 | 只看该作者
分享一下

K60(Rev6-Ch38-PDB)(中文).pdf

1.23 MB

使用特权

评论回复
9
cxz_00| | 2013-10-24 08:48 | 只看该作者
楼主很认真,值得我等学习

使用特权

评论回复
10
FSL_TICS_Jeremy| | 2013-10-24 10:22 | 只看该作者
springvirus 发表于 2013-10-23 16:35
手把手学习官方例程Kinetis100MHz+ADC.pdf  中有个图不错,发上来

是的,这幅图很形象,有助于理解

使用特权

评论回复
11
shiyue0415| | 2013-10-25 00:02 | 只看该作者
今天抽空看了一下PDB模块,在触发AD、DA转换时确实挺方便的

使用特权

评论回复
12
生无所息1| | 2013-10-25 15:54 | 只看该作者
,我是小菜鸟!!!想变老鸟啊!!

使用特权

评论回复
13
motodefy| | 2013-10-25 16:22 | 只看该作者
看了下楼主发的,也有了个大致的了解,觉得这东西好方便啊。
不过觉得还是靠写例程会让自己更了解这个东西的工作原理啊

使用特权

评论回复
14
springvirus|  楼主 | 2013-10-25 16:25 | 只看该作者
motodefy 发表于 2013-10-25 16:22
看了下楼主发的,也有了个大致的了解,觉得这东西好方便啊。
不过觉得还是靠写例程会让自己更了解这个东西 ...

是啊,不过现在是学习理论阶段,期待实践~

使用特权

评论回复
15
hzp123hzp| | 2013-10-27 11:24 | 只看该作者
好高深啊!

使用特权

评论回复
16
bawuju| | 2013-10-27 15:38 | 只看该作者
东西不错

使用特权

评论回复
17
YDCMAN| | 2013-10-27 19:39 | 只看该作者
不错,支持!

使用特权

评论回复
18
KuMo_2011| | 2013-10-27 21:44 | 只看该作者
2-2. 对于ADC转换触发来说,每个PDB通道有最多8个预触发输出和一个触发输出
其中预触发输出和一个触发输出有啥区别呢?

使用特权

评论回复
19
secbcde1| | 2013-11-1 23:19 | 只看该作者
请教楼主 如果我只想触发ADC0中的5个通道怎么办呢

使用特权

评论回复
20
youluo235| | 2013-11-3 14:12 | 只看该作者
东西不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

4414

帖子

13

粉丝