S32K144(13)PDB
1、简介
开发板S32K144+S32DS+JLINK,裸机版的程序编写
首先,PDB肯定是一个定时器,但是它这个定时器傍上了大腿,所以就显得它尤其的重要,因为PDB->ADC是官方默认和建议的搭配,PDB触发器与ADC和TRGMUX互连:
PDB是可编程延迟模块,PDB可提供从内部或外部触发或可编程间隔信号到ADC硬件触发输入的可控制延迟。
PDB可以选择提供脉冲输出,用作CMP块中的采样窗口
PDB是由计数器+比较器+控制寄存器组成,对输入的triggger进行选择、延时等操作后输出trigger和中断。
因为PDB本质是一个延时模块,不可避免的对计数值进行比较,其中触发PDB计数的方式有三种:
- PDB_CHnDLYm和PDB counter比较触发计数
- TRIGSEL触发源(比较TRGMUX)触发计数
- 开启Back to Back模式,上一个PDB计数完成后,由上一个PDB通道的Ackm触发计数
PDB的触发源:内部触发、软件触发、外部触发
其中Back to Back模式是:使ADC转换完成后触发下一个PDB通道预触发和触发输出。
- PDB0 CH0 back-to-back chain
- PDB1 CH1 back-to-back chain
- PDB back-to-back chain forming PDB0-PDB1 ring
pre-trigger:主要用来触发ADC的不同通道进行采样,以PDBCHn pre-trigger0为例:当计数器计数到达定义的值后,经过(BB TOS EN),触发器产生上升沿:Pre-trigger 0。任何一个pre-trigger的触发都会伴随产生一个channel trigger的触发。
- TOS:PDB Channel Pre-Trigger Output Select (CHnC1[TOS[m]]),把它置0则延时直接被忽视掉,trigger信号经过2个外设周期后直接触发pre-trigger.
- BB:back-to-back模式:用ADC转换完成信号(Ack)触发pre-trigger,此时延时也是直接被忽视掉的。也就是可以通过这个寄存器的设置使得ADC的不同通道进行轮询采样
当pre-trigger被触发后,会激活相应的锁,只有与它相关联的 ADCnSC1[COCO]的上升沿可以解除pre-trigger的触发锁。ADC转换完成后ADCnSC1[COCO]会自动置1,读取相应的ADC转换结果后它会自动置0 。当然也可以通过disable PDB pre-trigger或者disable PDB 来解除pre-trigger的触发锁。每个pre-trigger都有各自的锁,每个通道的的任何一个pre-trigger锁都会激活channel trigger上锁。如果在锁未解除的情况下产生新的trigger,会触发PDB序列错误中断( PDB Channel Sequence Error Flag :CHnS[ERR[m]])。因此在设置trigger delay时要注意ADC的转换周期,不可delay<ADC转换周期。
2、原理图
无
3、寄存器
3.1、PDB_SC:Status and Control register
0 |
LDOK |
1:更新MOD,IDLY,CHnDLYm和PoyDLY寄存器的值 |
1 |
CONT |
连续模式使能
|
2-3 |
MULT |
为分频器选择倍增因子,选择计数器的分频器的乘法器。 00乘系数是1。 01乘数是10。 10的乘数是20。 11的乘数是40 |
5 |
PDBIE |
PDB中断使能 |
6 |
PDBIF |
PDB中断标志
|
7 |
PDBEN |
PDB启用 0 PDB禁用。计数器关闭。 1 PDB启用 |
8-11 |
TRGSEL |
触发输入源选择选择,。触发输入源可以是内部的,也可以是外部的,或软件触发器 0000-1110:触发源0—14 1111:选择软件触发 |
12-14 |
PRESCALER |
预定标器分频器选择 000计数使用外围时钟除以MULT(乘数)。 001计数使用外围时钟除以2 × MULT(乘法系数)。 010计数使用外围时钟除以4 × MULT(乘法系数) 011计数使用外围时钟除以8 × MULT(乘法系数) 100计数使用外围时钟除以16 × MULT(乘法系数) 101计数使用外围时钟除以32 × MULT(乘法系数) 110计数使用外围时钟除以64 × MULT(乘法系数) 111计数使用外围时钟除以128 × MULT(乘法系数) |
15 |
DMAEN |
DMA使能 |
16 |
SWTRIG |
软件触发,启用PDB,选择软件触发器作为触发器输入源,向SWTRIG写入1,重置并重新启动计数器 |
17 |
PDBEIE |
PDB序列错误中断使能 使能PDB序列错误中断。当PDBEIE设置时,PDB的任何通道序列错误标志产生一个PDB序列错误中断。 0 PDB序列错误中断禁用。 1 PDB序列错误中断使能 |
18-19 |
LDMOD |
加载模式选择 |
3.2、 Modulus register (PDB_MOD)
计数器的重载值
3.3、Counter register (PDB_CNT)
0-15 |
CNT |
PDB计数器 包含计数器的当前值 |
3.4、Interrupt Delay register (PDB_IDLY)
0-15 |
IDLY |
指定调度PDB中断的延迟值 |
3.5、Channel n Control register 1 (PDB_CHnC1)
1每个PDB通道有一个控制寄存器CHnC1。这个寄存器中的位控制,每个PDB通道操作的功能
EN |
PDB通道的Pre-Trigger使能 |
|
8-15 |
TOS |
PDB通道Pre-Trigger输出选择,这些位选择PDB ADC Pre-Trigger输出 |
16-23 |
BB |
PDB通道Pre-Trigger Back-to-Back操作启用 |
3.6、Channel n Status register (PDB_CHnS)
ERR |
PDB通道序列错误标志 |
|
16-23 |
CF |
PDB通道标志 |
3.7、Channel n Delay 0-7 register (PDB_CHnDLY0-7)
0-15 |
DLY |
PDB通道的延迟值 |
3.8、Pulse-Out n Enable register (PDB_POEN)
0-7 |
POEN |
PDB Pulse-Out启用 使能脉冲输出。在这个MCU中只实现了较低的8位。 0 PDB脉冲输出禁用 1 PDB脉冲输出启用 |
3.9、Pulse-Out n Delay register (PDB_POnDLY)
0-15 |
DLY2 |
PDB脉冲输出延迟2 |
16-31 |
DLY1 |
PDB脉冲输出延迟1 |
4、代码编程
此处只是展示PDB定时器的功能,在后面ADC章节后,会在那使用PDB+ADC例程,也会使用LPIT+ADC
4.1、pdb.h
#ifndef PDB_H_
#define PDB_H_#include "common.h" //公共要素头文件void pdb_init(void);
#endif
4.2、pdb.c
#include "pdb.h"
#include "led.h"void pdb_init(void)
{PCC->PCCn[PCC_PDB0_INDEX] |= PCC_PCCn_CGC_MASK;PDB0->SC |= PDB_SC_PRESCALER(0b111) |PDB_SC_MULT(0b11)|PDB_SC_CONT(1)|PDB_SC_TRGSEL(0b1111)|PDB_SC_LDOK_MASK|PDB_SC_PDBEN_MASK;PDB0->MOD = 15625;PDB0->IDLY = 15625;//置位LDOK,超级重要,寄存器有说明,值先写在缓冲区,需要LDOK才加载到对应的寄存器PDB0->SC |= PDB_SC_LDOK_MASK;PDB0->SC |= PDB_SC_SWTRIG_MASK;PDB0->SC |= PDB_SC_PDBIE_MASK;S32_NVIC_EnableIRQ(PDB0_IRQn,10);
}
void PDB0_IRQHandler(void)
{if(PDB0->SC & PDB_SC_PDBIF_MASK){//清中断标志位PDB0->SC &= ~PDB_SC_PDBIF_MASK;LED3_TOGGLE;}
}
S32K144(13)PDB相关推荐
- CADD课程学习(13)-- 研究蛋白小分子动态相互作用-I(GROMACS)
CADD课程学习(13)-- 研究蛋白小分子动态相互作用-I(GROMACS) 分子动力学基本原理 分子动力学(Molecular Dynamics-MD)一门结合物理,数学和化学的综合技术. 分子动 ...
- FPGA逻辑设计回顾(13)RAM以及ROM的IP核定制以及关键参数
文章目录 前言 RAM IP的定制 Xilinx的IP定制位置 Block RAM的定制过程 第一页 第二页 第三页 第四页 第五页 Block RAM的延迟讨论 ROM IP核的定制 总结 前言 本 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(13)-系统日志和异常的处理③ 参考文章: (1)构建ASP.NET MVC4+EF5+EasyUI+Unity ...
- Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表
Xamarin图表开发基础教程(13)OxyPlot框架支持的其它图表 除了以上提到的图表外,OxyPlot组件还包含了6种类型的其它图表,分别为等高线图.箱线图.饼图.热图.散点图和散点误差图,如图 ...
- python 简单图像处理(13) 二值图腐蚀和膨胀,开运算、闭运算
原文:http://www.cnblogs.com/xianglan/archive/2010/12/29/1921211.html python 简单图像处理(13) 二值图腐蚀和膨胀,开运算.闭运 ...
- C# 学习笔记(13)自己的串口助手
C# 学习笔记(13)自己的串口助手 UI界面 界面部分参考野火串口助手,自己拖控件拖一个即可 功能实现 扫描串口 方法一 使用串口自带的get函数 比较简单实用 SerialPort.GetPort ...
- C# 视频监控系列(13):H264播放器——控制播放和截图
C# 视频监控系列(13):H264播放器--控制播放和截图 前言 本该把这部分和上一篇合成一篇的,无奈挣扎半天,还是想对称起来,客户端3篇.服务器端3篇--所有播放器也勉强凑3篇吧(封装API的文章 ...
- Android菜鸟的成长笔记(13)——异步任务(Async Task)
Android菜鸟的成长笔记(13)--异步任务(Async Task) 原文: [置顶] Android菜鸟的成长笔记(13)--异步任务(Async Task) Android的UI线程主要负责处 ...
- 深度学习之卷积神经网络(13)DenseNet
深度学习之卷积神经网络(13)DenseNet Skip Connection的思想在ResNet上面获得了巨大的成功,研究人员开始尝试不同的Skip Connection方案,其中比较流行的就是D ...
最新文章
- keras构建前馈神经网络(feedforward neural network)进行回归模型构建和学习
- 反射应用--取得类的结构
- 面试:如何快速过滤出一次请求的所有日志?
- RP2836 OUT0-OUT7 对应关系
- 浅析微软的网关项目 -- ReverseProxy
- Android--Facebook Login without LoginButton
- javascript变量声明语法的应用和分号讲究适用性
- 数据结构与算法之-----图(代码实现)
- 米线店结账程序 装饰着模式_真实数据:外卖销售9999+ 长沙米线万单店 它究竟是怎么做到的?...
- python修改文件名_【Python沙龙】批量修改文件名称
- LabVIEW在Windows10下调出软键盘的说明与例程
- 禁止搜索引擎收录网站内容,百度,谷歌,所有等...
- 5G,仅仅是更快的网速吗?
- layout-v21透明主题不生效的bug
- 一个DDD指导下的实体类设计案例
- 整理springmvc+mybatis+velocity的整合一
- python中使用virtualenv库创建虚拟环境的问题
- Echarts给折线图给横竖坐标轴添加箭头与标签文字过长显示不全处理
- 煮酒论开源语音工具包
- snmp同步端口号_SNMP端口号教程及其示例
热门文章
- 子之错父之过什么意思_生活|为什么子不教,父之过,这是什么意思?
- 利用多时间无人机数据和时空深度学习模型的作物产量预测
- 物联网开放平台:三种实践模式
- 计算机辅助技术学什么课,《CADCAM》课程导学计划
- 长沙学院计算机专业老师李彬,长沙学院2007-2008模具CADCAM_04机本教案【荐】.doc...
- 深度学习之yolov5目标识别全过程记录(纯小白)
- 政策东风,助推万亿智能家居产业,2022各地智能家居政策大盘点
- java项目-第127期SpringBoot+vue的智慧养老手表管理系统-java毕业设计_计算机毕业设计
- 最好网络推广软件-Skycc组合营销软件
- oracle rac 火星舱_火星高科数据保护技术使火星舱助用户完全解决相关需求