我想让4MHz时钟使用GPIO.;;我能用任何定时器来取吗?
嗨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
非常感谢:))
我现在可以发出4MHz的脉冲了。顺便说一下,我也想用I2C。但我不能使用I2C当我产生4MHz脉冲..请给我提些建议。
我附上了一个文件,包括一些波形根据不同的timer0设置。当我产生160kHz脉冲时,我可以使用i2c。但是频率越高,我的脉冲越不稳定,我不能使用i2c.;;请检查文件。高频脉冲纹波电压太高
我不认为同时使用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销上的负载引起的,或许这也是由你使用示波器的探头。
非常感谢!!
现在我可以使用I2C与PWM。问题是启用IRQ功能。当我去掉那个函数时,代码正常工作。
嗨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
非常感谢:))
我现在可以发出4MHz的脉冲了。顺便说一下,我也想用I2C。但我不能使用I2C当我产生4MHz脉冲..请给我提些建议。
我附上了一个文件,包括一些波形根据不同的timer0设置。
当我产生160kHz脉冲时,我可以使用i2c。但是频率越高,我的脉冲越不稳定,我不能使用i2c.;;
请检查文件。高频脉冲纹波电压太高
嗨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
非常感谢!!
现在我可以使用I2C与PWM。问题是启用IRQ功能。当我去掉那个函数时,代码正常工作。