我想使用GPIO制作4MHz时钟.. ;;我可以使用任何计时器吗?
嗨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.
太感谢了:))
我现在可以制作4MHz脉冲。顺便说一下,我也想要使用I2C。但是当我生成4MHz脉冲时,我不能使用I2C .. ;;Plz给了我一些adivse .. ;;
我附上了一个文件,该文件根据不同的Timer0设置包括一些波形。当我生成160kHz脉冲时,我可以使用I2C。但我提高了频率越多,我越过于不稳定的脉冲,我不能使用i2c .. ;;PLZ检查文件。高频脉冲的纹波电压太高。
我在使用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引脚上的负载引起,或者也许这也是由此引起的您正在使用的示波器的探针。
太感谢了!!:)
现在我能用PWM使用I2C。问题是启用IRQ的功能。当我摆脱该函数时,代码正确地工作。
嗨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.
太感谢了:))
我现在可以制作4MHz脉冲。顺便说一下,我也想要使用I2C。但是当我生成4MHz脉冲时,我不能使用I2C .. ;;Plz给了我一些adivse .. ;;
我附上了一个文件,该文件根据不同的Timer0设置包括一些波形。
当我生成160kHz脉冲时,我可以使用I2C。但我提高了频率越多,我越过于不稳定的脉冲,我不能使用i2c .. ;;
PLZ检查文件。高频脉冲的纹波电压太高。
嗨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.
太感谢了!!:)
现在我能用PWM使用I2C。问题是启用IRQ的功能。当我摆脱该函数时,代码正确地工作。