9260的TC应用案例--配置红外发送38K PWM波形(1/2占空比)

1.  AT91SAM9260EK-38k产生原理

9260内部有5个内部计数器,分别为TIMER_CLOCK1 --- TIMER_CLOCK5。通过这5个时钟可以为各种内部设备提供时钟基准。

其中,红外发射38K方波,是通过CLOCK1计数产生。

配置寄存器如下

//选择TC通道

        __sys_reg(AT91_PMC_PCER) = 1 << AT91SAM9260_ID_TC1;

        //设置对外接口

        at91_set_A_periph(AT91_PIN_PC7, 0);

        TC_CCR(tc1_io_base) = AT91_TC_CLKDIS;

        TC_CMR(tc1_io_base) =

                            //挑选时钟源

                            AT91_TC_TIMER_CLOCK1

                            //选择waveform

                            | AT91_TC_WAVESEL_UP_AUTO

                            //选择RC比较器是对外接口清零

                            | AT91_TC_BCPC_CLEAR

                            //选择RB比较器是对外接口置位

                            | AT91_TC_BCPB_SET

                            //设置为waveform

                            | AT91_TC_WAVE

                            //the last num set the port tiob to output

                            | AT91_TC_EEVT_XC0;

        TC_IDR(tc1_io_base) = ~0;

                            //确定RC计数器的值

        TC_RC(tc1_io_base) = MAIN_CLK / 2 / 38000;

                            //确定RB计数器的值

        TC_RB(tc1_io_base) = MAIN_CLK / 2 / 76000;

                            //时钟使能

        TC_CCR(tc1_io_base) = AT91_TC_CLKEN | AT91_TC_SWTRG;

因此,方波的频率多少取决于MAIN_CLK,即系统允许的频率。

 

2.  25K方波的产生

1.  之前的驱动程序采取把系统允许频率MCK写死的方式,进行处理,即MCK=99328000Hz,算出的RC=1306, RB=RC/2。NOTE:占空比1/2

2.  因此,如果核心板是降频处理的话,主频是665600000。如果搭配之前的驱动,即RC= 2*RB = 1306,算出的输出的方波即25KHz。

3.  如果更新最新的驱动,MCK是根据系统的寄存器配置动态生成的话,驱动会自动调整RB RC 值,以匹配38K PWM波的产生。

 

3.  附录A

TC Channel mode register:

 

Meaning:

AT91_TC_TIMER_CLOCK1 |

TIMER_CLOCK1 =  MCK/2

AT91_TC_WAVESEL_UP_AUTO |  2<<13

WAVSEL = 10

AT91_TC_BCPC_CLEAR | 2<<26

RC Compare Effect on TIOB = CLEAR

AT91_TC_BCPB_SET |    1<<24

RB Compare Effect on TIOB = SET

AT91_TC_WAVE |  1<<15

WAVEFORM

AT91_TC_EEVT_XC0   1<<10

TIOB  output

 

Example:

 

Interpretation:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值