使用GPIO的4MHz时钟

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support。我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
posljh
离线
最后看到:3年4个月前
加入:2016-12-23 05:47
使用GPIO的4MHz时钟

我想让4MHz时钟使用GPIO.;;我能用任何定时器来取吗?

设备:
MT_dialog
离线
最后看到:2个月3个星期前
工作人员
加入:2015-06-08 34
嗨posljh,

嗨posljh,

是的,你可以使用定时器和PWM功能来产生4MHz的脉冲。您可以查看timer0和timer2示例中的peripheral_examples文件夹。

为了达到4 mhz脉冲可以设置定时器分配器2为了产生一个时钟的8 mhz (set_tmr_div (CLK_PER_REG_TMR_DIV_2);)并设置定时器为0的高和低柜台(timer0_set_pwm_high_counter (PWM_HIGH);, timer0_set_pwm_low_counter (PWM_LOW);),这些设置将生成一个4 mhz脉冲。

由于MT_dialog

posljh
离线
最后看到:3年4个月前
加入:2016-12-23 05:47
非常感谢:))

非常感谢:))

我现在可以发出4MHz的脉冲了。顺便说一下,我也想用I2C。但我不能使用I2C当我产生4MHz脉冲..请给我提些建议。

posljh
离线
最后看到:3年4个月前
加入:2016-12-23 05:47
我附上了一个文件

我附上了一个文件,包括一些波形根据不同的timer0设置。
当我产生160kHz脉冲时,我可以使用i2c。但是频率越高,我的脉冲越不稳定,我不能使用i2c.;;
请检查文件。高频脉冲纹波电压太高

MT_dialog
离线
最后看到:2个月3个星期前
工作人员
加入:2015-06-08 34
嗨posljh,

嗨posljh,

我不认为同时使用I2C和定时器之间有任何问题,使用SDK的外围示例并在p0_0上附加一个定时器0功能和4MHz脉冲。在你附加的代码上的一些注释,我看到你也启用了TIMER_ON,这意味着取决于计时器运行的频率,你也会得到相应的中断,我想,您看不到任何I2C活动的原因是因为来自计时器的中断如此之快,以至于它们不允许处理器到达I2C交互,所以简单地没有I2C交互,因为代码没有到达那一点。你不需要使用中断定时器为了有PWM功能,而不是使用timer0_set(TIMER_ON, PWM_HIGH, PWM_LOW);你可以使用timer0_set_pwm_high_counter(PWM_HIGH);和timer0_set_pwm_low_counter (PWM_LOW);并且不开启定时器的IRQ。当降低频率时,您可以看到I2C交互的原因是中断发生的频率降低了,因此ARM有时间执行I2C交互代码。关于你观察到的响,我无法看到osciloscope当频率增加,所以也许这都是某种电子问题,由PWM销上的负载引起的,或许这也是由你使用示波器的探头。

由于MT_dialog

posljh
离线
最后看到:3年4个月前
加入:2016-12-23 05:47
非常感谢!!

非常感谢!!

现在我可以使用I2C与PWM。问题是启用IRQ功能。当我去掉那个函数时,代码正常工作。