使用GPIO的4MHz时钟

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
posljh.
离线
最后一次露面:3年4个月前
加入:2016-12-23 05:47
使用GPIO的4MHz时钟

我想使用GPIO制作4MHz时钟.. ;;我可以使用任何计时器吗?

设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨posljh,

嗨posljh,

是的,您可以使用定时器和PWM功能,以生成4MHz脉冲。您可以查看Timer0和Timer2示例中的Peripheral_examples文件夹。

为了实现4MHz脉冲,您可以将定时器分隔线设置为2,以便生成8MHz的时钟(SET_TMR_DIV(CLK_PER_REG_TMR_DIV_2);)并将定时器的高低计数器设置为0(timer0_set_pwm_high_counter(pwm_high);,timer0_set_pwm_low_counter(PWM_LOW);),这些设置将产生4MHz脉冲。

谢谢mt_dialog.

posljh.
离线
最后一次露面:3年4个月前
加入:2016-12-23 05:47
太感谢了:))

太感谢了:))

我现在可以制作4MHz脉冲。顺便说一下,我也想要使用I2C。但是当我生成4MHz脉冲时,我不能使用I2C .. ;;Plz给了我一些adivse .. ;;

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

我附上了一个文件,该文件根据不同的Timer0设置包括一些波形。
当我生成160kHz脉冲时,我可以使用I2C。但我提高了频率越多,我越过于不稳定的脉冲,我不能使用i2c .. ;;
PLZ检查文件。高频脉冲的纹波电压太高。

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨posljh,

嗨posljh,

我在使用SDK中使用外围示例并在P0_0上使用4MHz脉冲附加定时器0函数,在同时看到使用I2C和计时器之间的任何问题。有些评论你所附的代码,我看你也在启用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交互代码的时间。关于您所观察到的令人讨厌的振铃,我无法在增加频率时看到在我的主体主筒上,因此,这可能是一个电气问题,由PWM引脚上的负载引起,或者也许这也是由此引起的您正在使用的示波器的探针。

谢谢mt_dialog.

posljh.
离线
最后一次露面:3年4个月前
加入:2016-12-23 05:47
太感谢了!!:)

太感谢了!!:)

现在我能用PWM使用I2C。问题是启用IRQ的功能。当我摆脱该函数时,代码正确地工作。