This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2745R10-Q1:RTC 调节

Guru**** 2419530 points
Other Parts Discussed in Thread: CC2340R5

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1543845/cc2745r10-q1-rtc-adjust

器件型号:CC2745R10-Q1
主题中讨论的其他器件:CC2340R5

工具/软件:

尊敬的专家:

 我建议客户按照以下说明操作: software-dl.ti.com/.../debugging-index-cc23xx.html。 但他们无法通过 GPIO 输出 32k 波形。

以下是代码:

静态空洞 LF_DEBUG (void)

   Uint8_t clockSrc = 0xE;//C;//(对于 HF 晶体时钟除以 8)

    // uint8_t clockSrc = 0xF;//对于 LF 晶体时钟

 

    //先将输出驱动为低电平

    GPIO_setConfig (19、GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);

 

    //配置 IOC.IOC19.PORTCFG MMR 以选择 DTB

    HWREG (IOC_BASE + IOC_O_IOC19) 且=~IOC_IOC19_PORTCFG_M;

    HWREG (IOC_BASE + IOC_O_IOC19)|= IOC_IOC19_PORTCFG_DTB;

 

    //确保在 IOC 中选择 DTB 多路复用器(如果在中需要)

    //源时钟 ip) 重置为零、即 DTB0 上驱动为零。

    // ULLSEL 多路复用器选择(选择 CKMD)

    HWREG (IOC_BASE + IOC_O_DTBCFG) 且=~IOC_DTBCFG_ULLSEL_M;

    HWREG (IOC_BASE + IOC_O_DTBCFG)|= 0x1 << IOC_DTBCFG_ULLSEL_S;// 0x1 用于将 CKMD 路由到 DTB0

 

    //启用 IOC.DTBOE.EN0

    HWREG (IOC_BASE + IOC_O_DTBOE)&= 0x10;//~IOC_DTBOE_EN0_M;

    HWREG (IOC_BASE + IOC_O_DTBOE)|= 0x10;//IOC_DTBOE_EN0_EN;

 

    //选择在 DTB0 (DTB[0]) 上输出哪个时钟 (CKMD)

    HWREG (CKMD_BASE + CKMD_O_DTBCTL)&=~CKMD_DTBCTL_CLKSEL_M;

    HWREG (CKMD_BASE + CKMD_O_DTBCTL)|=(clockSrc)<< CKMD_DTBCTL_CLKSEL_S;

 

    //启用 DTB 输出

    HWREG (CKMD_BASE + CKMD_O_DTBCTL) 且=~CKMD_DTBCTL_EN_M;

    HWREG (CKMD_BASE + CKMD_O_DTBCTL)|= CKMD_DTBCTL_EN;

}

 根据以下代码、当高速晶体振荡器频率降低 8 倍 时、它可以在 DIO27 引脚上输出 6M、但切换到内部时钟时、无法输出 6M。 如何 匹配?

静态空洞 LF_DEBUG (void)

   Uint8_t clockSrc = 0xC;//(对于 HF 晶体时钟除以 8)

 

    //先将输出驱动为低电平

    GPIO_setConfig (27、GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);

 

    //配置 IOC.IOC19.PORTCFG MMR 以选择 DTB

    HWREG (IOC_BASE + IOC_O_IOC27) 且=~IOC_IOC27_PORTCFG_M;

    HWREG (IOC_BASE + IOC_O_IOC27)|= IOC_IOC27_PORTCFG_DTB;

 

    //确保在 IOC 中选择 DTB 多路复用器(如果在中需要)

    //源时钟 ip) 重置为零、即 DTB0 上驱动为零。

    // ULLSEL 多路复用器选择(选择 CKMD)

    HWREG (IOC_BASE + IOC_O_DTBCFG) 且=~IOC_DTBCFG_ULLSEL_M;

    HWREG (IOC_BASE + IOC_O_DTBCFG)|= 0x1 << IOC_DTBCFG_ULLSEL_S;// 0x1 用于将 CKMD 路由到 DTB0

 

    //启用 IOC.DTBOE.EN0

    HWREG (IOC_BASE + IOC_O_DTBOE) 且=~IOC_DTBOE_EN0_M;

    HWREG (IOC_BASE + IOC_O_DTBOE)|= IOC_DTBOE_EN0_EN;

 

    //选择在 DTB0 (DTB[0]) 上输出哪个时钟 (CKMD)

    HWREG (CKMD_BASE + CKMD_O_DTBCTL)&=~CKMD_DTBCTL_CLKSEL_M;

    HWREG (CKMD_BASE + CKMD_O_DTBCTL)|=(clockSrc)<< CKMD_DTBCTL_CLKSEL_S;

 

    //HWREG (CKMD_BASE + CKMD_O_DTBCTL) 且=~DTBCTL_DSEL0_M;

    //HWREG (CKMD_BASE + CKMD_O_DTBCTL)|= 0x4 << IOC_DTBCFG_ULLSEL_S;

 

    //启用 DTB 输出

    HWREG (CKMD_BASE + CKMD_O_DTBCTL) 且=~CKMD_DTBCTL_EN_M;

    HWREG (CKMD_BASE + CKMD_O_DTBCTL)|= CKMD_DTBCTL_EN;

}

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    很抱歉耽误你的时间。 该代码中的引脚用于 CC2340R5、并针对 CC27xx 进行了更改。

    您是否介意尝试下面的代码:

     /*******************************************************************************
        * INCLUDES
        */
        #include <ti/drivers/GPIO.h>
        #include DeviceFamily_constructPath(inc/hw_types.h)
        #include DeviceFamily_constructPath(inc/hw_memmap.h)
        #include DeviceFamily_constructPath(inc/hw_ckmd.h)
        #include DeviceFamily_constructPath(inc/hw_ioc.h)
        #include DeviceFamily_constructPath(inc/hw_pmctl.h)
        
        // ...
        
        int main()
        {
            // ...
            
            /*
             * Add the following after Board_init();
             * Be sure IOID used below is not used by any entries in PIN or
             * GPIO tables from the board files.
             * The clock source can be switched with constant clockSrc.
             */
    
            //uint8_t clockSrc = 0xC; //for HF crystal clock divided by 8
            uint8_t clockSrc = 0xF; //for LF crystal clock// drive output low first
    
            // drive output low first
            GPIO_setConfig(27, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);
    
            // Configure the IOC.IOC19.PORTCFG MMR to select DTB
            HWREG(IOC_BASE + IOC_O_IOC27) &= ~IOC_IOC27_PORTCFG_M;
            HWREG(IOC_BASE + IOC_O_IOC27) |= IOC_IOC27_PORTCFG_DTB;
    
            // Make sure the DTB mux selects in IOC (and if required in
            // source clock IP) are reset that zero is driven on DTB0.
            // ULLSEL mux select (select CKMD)
            HWREG(IOC_BASE + IOC_O_DTBCFG) &= ~IOC_DTBCFG_ULLSEL_M;
            HWREG(IOC_BASE + IOC_O_DTBCFG) |= 0x1 << IOC_DTBCFG_ULLSEL_S; // 0x1 to route CKMD to DTB0// Enable IOC.DTBOE.EN0
    
            // Enable IOC.DTBOE.EN0
            HWREG(IOC_BASE + IOC_O_DTBOE) &= ~IOC_DTBOE_EN0_M;
            HWREG(IOC_BASE + IOC_O_DTBOE) |= IOC_DTBOE_EN0_ENABLE;// select which clock (CKMD) to output on DTB0 (DTB[0])
    
            // select which clock (CKMD) to output on DTB0 (DTB[0])
            HWREG(CKMD_BASE + CKMD_O_DTBCTL) &= ~CKMD_DTBCTL_CLKSEL_M;
            HWREG(CKMD_BASE + CKMD_O_DTBCTL) |= (clockSrc) << CKMD_DTBCTL_CLKSEL_S;// enable DTB output
    
            // enable DTB output
            HWREG(CKMD_BASE + CKMD_O_DTBCTL) &= ~CKMD_DTBCTL_EN_M;
            HWREG(CKMD_BASE + CKMD_O_DTBCTL) |= CKMD_DTBCTL_EN; 
            
            // ...
        }

    此致、

    Nima Behmanesh