[讨论] 关于stm32输出PWM方波的同步问题

cxpph007   2014-11-18 17:30 楼主
各位前辈们好,我最近打算调用一款ADC,遇到了一些不懂的问题,需要求教!
问题是这样的,adc需要一个10MHz的CLK信号,同时需要单片机给一个CONV信号。这个CONV信号是每4760个clk跳变一次,就是高低电平跳转,但是它要求这个conv跳变要在第4760个clk上升沿左右10ns之内跳变,这就要求clk和conv的相位几乎同步。网上有人说用TIM1的CH1产生10M的clk信号,ch2产生conv信号,可具体怎样能使conv跳变的时候能每次都在clk上升沿10ns范围内呢?求高手解答!谢谢!
还有就是如果ADC外接10M晶振,然后也把晶振信号引入stm32计数器,等数到第4760个clk上升沿的时候马上让CONV跳变,这样在72M的stm32频率下,反应时间大概是多少ns呢?按照指令周期的概念是不是一下子几十个ns就出去了?

我还是个学生,大神们多多赐教,非常感谢!

回复评论 (6)

2推荐 无奇不有 

用定时器的比较和捕获模块可以进行,但是需要把单片机内部的pll输出频率提到高一点。用定时器的一个捕获模块输出10MHz的信号,用定时器的另外一个捕获模块输出使能信号,因为两个模块同用一个计数器,所以应该没有什么问题。
点赞  2014-11-18 18:57
一个指令周期应该就1us。。
我的博客
点赞  2014-11-18 17:59
你用时钟输出10M然后用定时器每分4076个时钟出一个跳变能实现的.
点赞  2014-11-18 20:05
引用: zhaojun_xf 发表于 2014-11-18 17:59
一个指令周期应该就1us。。

你好,请问1us是怎么算出来的呢?不是能达到几十mips的速度么?
点赞  2014-11-20 17:43
引用: 无奇不有 发表于 2014-11-18 18:57
用定时器的比较和捕获模块可以进行,但是需要把单片机内部的pll输出频率提到高一点。用定时器的一个捕获模 ...

你好,感谢你的帮助!就是用同一个计数器的话相位会是相同的是么?具体这个程序大概该怎么写呢
点赞  2014-11-20 17:45
引用: cxpph007 发表于 2014-11-20 17:45 你好,感谢你的帮助!就是用同一个计数器的话相位会是相同的是么?具体这个程序大概该怎么写呢
用同一个计数器的话,采用边沿对其的模式,相位肯定是相同的,差别很小,因为比较器的比较动作不是通过cpu的,是硬件自动比较的,所以速度还是挺快的,不过最好不要用中断去处理,因为进入中断以后就是CPU动作了,这个就很慢了,你可以打开pwm输出,这样已经是能做到的最快的,你用示波器看看波形是不是满足要求,我想应该没问题。 关于程序怎么写,你去看看库函数 里面有什么东西,基本上就是初始化定时器和输出模块,这个挺简单的。不过我手头上现在没有现成的代码。。。而且我之前用的是dsp和430,刚刚入手stm对这个东西还不是很熟悉,所以,你如果确实自己写不出来了,我再给你下功夫,如果你弄出来了就很好了。 本帖最后由 无奇不有 于 2014-11-21 11:06 编辑
点赞  2014-11-21 11:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复