在PSoC5中,芯片拥有两个SARADC,用户可以方便的实现同步采样/测量。但是在PSoC3中,只有一个DelSigADC, 要实现多路信号的同步/测量需要使用一些特殊的办法。下面是一个简单的PSoC3中实现两路同步测量的案例,是出自个人之手,仅供参考。
设计需要使用的模块有:
两个Analog输入管脚
– 被测量信号输入。
2个采样/保持模块(Sample_Hold) – 模块在clock上升沿时采样模拟信号,在clock信号维持高电平时保持所采信号。
1个PWM8模块
–提供S/H模块的clock信号。
DelSigADC – A/D 转换
两路AMUX – 切换输入信号
ADC eoc 中断
– 触发AMUX切换通道。
设计框图如下:
在每次PWM产生上升沿时,两路信号被S/H采样并保持。在PWM保持高电平的阶段,需要完成对两路保持信号的测量,这就需要建立一个特殊的时序来规定PWM输出和ADCSOC信号之间的关系(如图中时序)。时序产生最简单的办法是创建一个PLDBased Verilog Components(具体可以看教程http://www.cypress.com/?rID=40330)。模块有两个输入一个输出,clock提供模块工作时钟,pwm_trigger连接PWM输出端来检测上升沿。检测到以后output输出两个有一定宽度的脉冲来触发ADC转换并切换测量通道。两路信号的切换由ADCEOC中断来控制,每次转换完成,产生中断来切换通道。设计除了AD转换和中断函数,几乎不需要其他代码,有兴趣的可以自己写一下。 |