我想让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
非常感谢!
我现在可以发出4兆赫的脉冲。顺便说一下,我也想用I2C。但我不能使用I2C当我产生4MHz脉冲..;请给我一些建议
我附加了一个文件,包括一些波形根据不同的定时器0设置。当我产生160kHz脉冲时,我可以使用i2c。但是我越提高频率,我得到的脉冲就越不稳定,我不能使用i2c..;请检查一个文件。高频脉冲纹波电压过高..;
我不认为同时使用I2C和计时器之间有任何问题,使用SDK中的外围设备示例,并在p0_0上附加一个带有4MHz脉冲的计时器0功能。您附加的代码上的一些注释,我看到您还启用了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
非常感谢!
我现在可以发出4兆赫的脉冲。顺便说一下,我也想用I2C。但我不能使用I2C当我产生4MHz脉冲..;请给我一些建议
我附加了一个文件,包括一些波形根据不同的定时器0设置。
当我产生160kHz脉冲时,我可以使用i2c。但是我越提高频率,我得到的脉冲就越不稳定,我不能使用i2c..;
请检查一个文件。高频脉冲纹波电压过高..;
嗨posljh,
我不认为同时使用I2C和计时器之间有任何问题,使用SDK中的外围设备示例,并在p0_0上附加一个带有4MHz脉冲的计时器0功能。您附加的代码上的一些注释,我看到您还启用了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功能。当我去掉那个函数时,代码工作正确。