智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3736|回复: 13
打印 上一主题 下一主题

【跟我学OSKinetis】第9课-PDB从了解到使用

[复制链接]

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15127

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11058
贡献
1409
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
跳转到指定楼层
#
发表于 2013-11-25 13:54:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 洋葱圈 于 2013-11-25 13:58 编辑

PDB是什么意思,英文全称是Programmable Delay Block,即可编程延时模块。从中文字面意思上看,每个字都那么熟悉,但是就是无法理解是什意思,很正常,但是再仔细看下技术文档中对该模块的简要介绍,应该就略知一二了吧。下面是文档中英文介绍的翻译:
可编程延时模块(PDBADC输入的硬件触发DAC生成的间隔触发提供可控制的内部或外部触发可编程的间隔时间以便能使ADC的转换或者DAC的更新达到精准定时
上面的介绍是一整句话,但是已经阐释了PDB的整个功能。别看它这么长,说白了就是为ADC或DAC提供硬件触发的,再具体点就是提供什么触发呢,可以提供来自单片机内部模块的触发、外部的触发或者软件可编程的触发。来自单片机内部的模块的触发可以是CMP、PIT、FTM等等。也就是说PDB可以理解为一个桥梁,它接受不同来源的触发,转而再去触发ADC或DAC模块,相当于ADC、或DAC的管家一样


PDB工作原理

之前的废话

要讲清楚PDB的工作原理,真的不是一件简单的事情,如果按照技术文档的流程来看,你会越看越晕。技术文档的流程是先介绍特点、再介绍具体的寄存器最后进行功能描述。虽然符合书写原则,但是对于新手来讲确实如同天书一般。我是如何看的呢,如果我对这个模块不了解,那么我会先看一些关于该模块的简要介绍、特点,再去看章节最后一部分的功能描述(Functional Description)。这些功能描述往往会捎带上寄存器的初始化流程、模块的运行流程等信息,这样我就对这个模块有了大体上的了解,最后再去逐一攻破细节。


看懂PDB模块图

说了这么多看技术文档的心得,其实是为我接下来的描述找后路,因为很可能你会看不懂我的描述,呵呵。如果真是这样,那就赶紧去啃技术文档吧。我接下来也只是说说PDB的重点需要描述的地方,告诉大家我对于PDB工作方式的理解。首先看下PDB的模块图解,改图描述了整个模块内部的关系机理。

图中两个关键的部分分别是绿框和红框部分,没有这两部分,PDB的工作无从谈起。
绿框部分是PDB的计数器部分,和大部分涉及到时间的外设模块一样,PDB也有计数器、MOD模寄存器等等。有了计数器,就有了基本的定时功能,也就可以控制触发的时间了。由“PDB Counter”框出来的引线,分别引向了橙色框“控制逻辑”部分、蓝色框“中断延时”部分和黄色框“ADC通道触发”部分。也就是说,PDB计数器分别会向这几部分提供计数支持。
蓝框部分是PDB的中断延时功能,当PDB计数器“PDB Counter”的值等于蓝框中“PDBIDLY”寄存器的值时,PDB会根据TOEx位来判断是否产生PDB中断。有了这个功能,PDB就可以被当做一个普通的周期中断定时器来使用了。
橙色框部分是控制逻辑模块,该模块可以理解为是用来控制PDB寄存器复位的。那么那些事件可以引起“PDB Counter”的复位呢?首先看绿框,当“PDBCNT”寄存器的值等于“PDBMOD”模寄存器的值时就会告诉“Control Logic”模块计数器到达预设上限了。如果“CONT”位为1表示PDB为连续工作模式,则“Control Logic”通知“PDB Counter”复位重新计数,如果果“CONT”位为0表示PDB为单次转换模式,则“Control Logic”等待触发事件的到来,这个触发事件就是红框表示出来的部分。当触发事件发生,则“Control Logic”通知“PDB Counter”复位重新计数。
红框部分就是上面说的触发模块了,触发源由“TRIGSEL”位进行选择,触发源可以是Trigger-In 0~14或“SWTRIG”软件触发中的任意一个。从图中还可以看出,触发源出来的引向不止用来控制PDB的复位,还引向了“DAC interval trigger x”DAC间隔触发器,也就是说,触发源可以触发DAC间隔触发器产生DAC触发,当“DAC Interval Counter x”间隔计数器的值等于“DACINTx”的值的时候,就会输出DAC触发事件。另外触发源还引向了黄框的部分,即ADC。
黄色框是通道n的预触发m模块,什么n呀m啊估计你已经荤菜了。简单理解就是n代表ADC的0或1模块,m为ADCx的A或B组通道。也就是说“Ch0 pre-trigger 0”用来触发ADC0的A组通道,同理“Ch0 pre-trigger 1”用来触发ADC0的B组通道。名字理解了,但是这个黄框内的复杂关系估计还是会让你晕菜,没关系,我们从已知的部分开始看。当触发源控制计数器复位开始计时后,“PDB Counter”的值就一直和“PDBCHnDLYm”的值进行对比,当相等后就会最终输出“Pre-trigger m”事件,这个就是ADC的硬件触发信号。图中的什么Ack、BB等等信号,是Back to Back模式中需要用到的,这个我们会在以后讲到,今天大家能消化这些就不错了。


什么是预触发

可能有朋友会问了,触发就触发呗,怎么还搞个预触发,太复杂了。其实仔细想想就不难理解,从上图的模块图中不难看出,触发源只能选择一个,而相对来说ADC0模块有两组通道A和B,如果PDB在收到触发后就就立即触发A和B组是不可能的,因为ADCx的每组通道是不可能同时进行转换的,必定有一个先后顺序,有了先后顺序就必定需要有延时等待,因此就需要了上面讲到的“PDBCHnDLYm”通道延时寄存器,而这个延时计数的过程就是预触发过程,当“PDBCHnDLYm”的值等于“PDB Counter”的值时所导致的触发就是预触发。我们还可以从下面的示例图中看出这个过程:


当PDB接收到了触发源的输入事件后(红色线开始),“PDB Counter”就会开始计数,持续“PDBCHnDLY0”的时间后,也就是黄色线的长度,会产生“Ch n pre-trigger 0”预触发信号,与此同时,对应产生“Ch n trigger”通道n的触发事件。以此类推,当等待“PDBCHnDLYm”的时间后,产生“Ch n pre-trigger m”预触发信号和对应的触发信号。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

1

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
429
威望
219
贡献
120
兑换币
139
注册时间
2016-10-18
在线时间
45 小时
毕业学校
天津大学
13#
发表于 2017-1-18 12:23:41 | 只看该作者
多谢版主分享,学到了很多
回复 支持 反对

使用道具 举报

0

主题

770

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
9280
威望
5224
贡献
3388
兑换币
3559
注册时间
2016-9-1
在线时间
334 小时
毕业学校
西南某校
12#
发表于 2016-11-17 13:02:35 | 只看该作者
学习了,好帖,赞一个,顶楼主
回复 支持 反对

使用道具 举报

4

主题

60

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1234
QQ
威望
607
贡献
365
兑换币
394
注册时间
2016-10-5
在线时间
131 小时
毕业学校
厦门大学嘉庚学院
11#
发表于 2016-11-15 22:11:21 | 只看该作者
优秀的老师往往能考虑到学生的感觉感受。赞!
回复 支持 反对

使用道具 举报

0

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1577
威望
805
贡献
464
兑换币
503
注册时间
2014-3-9
在线时间
154 小时
毕业学校
中南民族大学
10#
发表于 2015-1-23 14:31:08 | 只看该作者
Stan克 发表于 2014-12-23 15:50
顶一个啊,解释的相当易懂啊,有个问题,就是pit和pdb一起用的那一段 不知道这个时候打的pdb定时周期有什么 ...

完全可以不需要PIT嘛,用了也没影响
回复 支持 反对

使用道具 举报

22

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1068
威望
519
贡献
299
兑换币
308
注册时间
2014-10-15
在线时间
125 小时
毕业学校
zucc
9#
发表于 2014-12-23 15:50:10 | 只看该作者
顶一个啊,解释的相当易懂啊,有个问题,就是pit和pdb一起用的那一段 不知道这个时候打的pdb定时周期有什么用,不管pdb周期比pit短还是长都是按照pit的周期算的为什么
回复 支持 反对

使用道具 举报

6

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
895
威望
385
贡献
306
兑换币
242
注册时间
2013-9-27
在线时间
102 小时
毕业学校
河北理工大学
8#
发表于 2013-11-29 21:56:20 | 只看该作者
终于等到PDB了 呼哈哈
回复 支持 反对

使用道具 举报

59

主题

1029

帖子

0

精华

版主

有什么需帮助的?

Rank: 9Rank: 9Rank: 9

积分
15127

热心会员奖章论坛元老奖章优秀会员奖章在线王奖章

威望
11058
贡献
1409
兑换币
1728
注册时间
2011-12-18
在线时间
1330 小时
7#
 楼主| 发表于 2013-11-26 22:14:28 | 只看该作者
刘小涛 发表于 2013-11-26 21:56
老师,我用的的IAR中,我看有的程序中在工作空间一栏有的写的是debug有的写的是release有的写的是RAM有的写 ...

你用的不是拉普兰德OSKinetis固件库的例程,固件库地址在本帖结尾处下载。
回复 支持 反对

使用道具 举报

20

主题

259

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5644
威望
2695
贡献
1597
兑换币
1729
注册时间
2013-1-5
在线时间
677 小时
6#
发表于 2013-11-26 21:56:17 | 只看该作者
老师,我用的的IAR中,我看有的程序中在工作空间一栏有的写的是debug有的写的是release有的写的是RAM有的写的是flash,可是我的工程里只有debug和release,这几个有什么区别啊?如果我要下载到单片机中要用哪种?我的工程里只有debug和release哦。求教啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

10

主题

74

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2177
威望
1005
贡献
588
兑换币
662
注册时间
2013-11-2
在线时间
292 小时
5#
发表于 2013-11-26 12:30:28 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

5

主题

171

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3616
QQ
威望
1742
贡献
1148
兑换币
1163
注册时间
2013-8-5
在线时间
363 小时
4#
发表于 2013-11-26 11:04:03 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-7-2 00:24 , Processed in 0.109297 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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