本帖最后由 FSL_TICS_A 于 2014-10-21 15:40 编辑
ADC与PDB模块 ADC模块采用逐次逼近算法,最高可支持16位的解析度,支持差分信号或单端信号输入,内置硬件平均器,可支持1、4、8、16、32次平均采样。支持自动比较,可实现小于等于或大于等逻辑判断。 相对于采用Sigma Delta算法的ADC,该ADC在保持精确度的同时更提高了采样率,适用于采样变化快的信号,而且内嵌PGA模块,可用于小信号的采样。 从上图可见,以PGAxDP/M命名的端口都是支持PGA的ADC采样通道。目前Kientis只在channel2的差分输入端口集成了PGA。 除了外部的差分、单端输入信号,ADC还能采样一些内部的信号: 运放输出:OP1/2。大家可以在K53系列中找到运放单元 12位DAC的输出通常都会连接到ADC的某个channel 内置的温度传感器输出 Bandgap 参考电压VREFH和VREFL ADC在某些低功耗模式下是不供电的,以减少功耗,像VLLSx等模式。 LLS模式下虽然不掉电,但是模块保持静态,以减少功耗。 在STOP或VLPS模式下,ADC仍然正常工作,但是前提是使用它内部的参考时钟ADACK,如上图所示。 在其他模式下都可以正常工作。 在初始化ADC之前,首先要通过SIM模块使能模块时钟,这点和其他模式的初始化一致,不同的是ADC模块需要执行一次校验才能正常工作,飞思卡尔提供了校验的驱动,基本由硬件完成。 下图是两种初始化样例,分别注重采样速度和精度。 上图是ADC模块硬件设计时要遵循的一些原理: 首先是奈奎斯特定理,在进行模拟/数字信号的转换过程中,要保证采样频率大于信号中最高频率的2倍,这样采样之后的数字信号才能完整地保留了原始信号中的信息。因此当需要使用抗混叠滤波器来采样数据时,ADC模块的采样率决定了该系统的奈奎斯特频率。 其次在某些情况下,比方说有噪声的干扰,这时候需要在输入端并联一个电容,一般0.01uF的高频电容就可以了,可以提高ADC的采样性能。 并且可同时在输入端串联一个电阻,作为RC过滤电路的一部分。 在PCB layout时,尽量把模拟信号的电路靠近ADC输入管脚。 ADC可用于单相电表等应用,使用支持PGA的差分输入端口连接在电阻的两端,可采样流过极小电阻的电压(毫伏级),从而算出电流值,如果把其中一个端点连接在电阻的中点,还能扩大测量范围。 上面是一些有用的参考资料,可通过下列链接来访问:
Programmable Delay Block (PDB)模块
PDB可视为一个计数器模块,它的特殊之处在于它接收外部的触发信号,并且计数时会和多个数值进行比较,并在每次匹配的时间点输出相关的触发信号,从而触发ADC等模块或运行相关的中断服务程序。 上图可以看到一个PDB通道只有一个trigger信号,却有多个pre-trigger信号,其实两者之间的延迟只有一个peripheralclock,pre-trigger的作用可以理解为选中对应的ADC模块配置,从前文我们知道ADC模块有多个SC1n的寄存器,目前的版本支持SC1A和SC1B,pre-trigger 0 可以理解为选中SC1A对应的ADC,pre-trigger 1可以理解为选中SC1B对应的ADC,选中配置后再由trigger信号触发对应的ADC采样。 上图的Trigger A/B可以看做pre-trigger和trigger的组合逻辑。这里要注意的是pre-trigger的周期设置要大于ADC的转换时间,否则不但无法触发ADC采样,反而会产生一个PDBsequence error的中断。 利用PDB的特性,可以在极短的时间内触发两次ADC采样,即上图的ping-pong模式。这里PDB的计数器会和三个数进行比较,当计数器累加到triggerA的设定时间时,会触发ADCA的转换,当计数器累加到triggerB的设定时间时,会触发ADCB的转换,最后计数到PDB的MOD值时,产生中断,并在中断服务程序里清楚ADC的COCO标志。
|