zoukankan      html  css  js  c++  java
  • 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:

     

  • 相关阅读:
    Leetcode 回溯法 典型例题
    LeetCode 回溯法 别人的小结 八皇后 递归
    回溯算法 LEETCODE别人的小结 一八皇后问题
    python学习 面向对象高级编程
    python 学习 面向对象编程
    python 学习 模块
    python 学习 map /reduce
    pyhton 学习 函数式编程
    python学习 函数
    使用dict和set
  • 原文地址:https://www.cnblogs.com/zym0805/p/5949494.html
Copyright © 2011-2022 走看看