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.

[参考译文] MSP432E401Y:使用 DIVSCLK 作为时钟源

Guru**** 2538930 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1069844/msp432e401y-using-divsclk-as-a-a-clock-source

部件号:MSP432E401Y

您好,

我正在尝试将 DIVSCLK 用作外部设备的时钟源。  但是,我无法从针脚获得输出信号,我不确定代码中缺少什么内容。  我希望得到一些反馈!

谢谢你。   

//此代码用于从 DIVSCLK 输出时钟信号


#include "msp.h"(#include "msp.h"
易失性 UINT32_t msTicks;/*计数1ms timeTicks */
/*-----------------
Systick_Handler
------------- *
无效的 Systick_Handler (void){
msTicks++;
}
/*-----------------
延迟刻度系统数(每1毫秒发生一次)
------------- *
无效延迟(UINT32_t dllyTicks ){
UINT32_t 卷曲;
CurTicks = msTicks;
同时((msTicks - curTicks)< dlyTicks);
}

无效初始化(无效)

//启用 GPIO 端口 Q 外围设备-输出
sysctl->RCGCGPIO |= sysctl_RCGCGPIO _R14;

//DIVSCLK 寄存器
sysctl->DIVSCLK |= sysctl_DIVSCLK_DIV_M;//除数值
sysctl->DIVSCLK |= sysctl_DIVSCLK_SRC_PIOSC;//时钟源为 PIOSC
sysctl->DIVSCLK |= sysctl_DIVSCLK_EN;//时钟输出已启用


//GPIO Q:在 DIVSCLK 上注册输出所需(希望!)
GPIOQ->DR2R |= BIT4;//设置驱动强度(2mA)


//设置引脚类型
GPIOQ->ODR |=(BIT4);
GPIOQ->PUR |=(BIT4);
GPIOQ->DEN |= BIT4;//设置此位
GPIOQ->DIR |= BIT4;//*方向为输出
GPIOQ->AFSEL |= BIT4;//*需要此引脚上的替代函数
GPIOQ->PCTL |= 0xF0000000;//PMC7:端口 mux 控制7,可以使用 DIVSCLK

}

无效延迟(UINT32_t dllyTicks ){
UINT32_t 卷曲;
CurTicks = msTicks;
同时((msTicks - curTicks)< dlyTicks);
}


Int main (无效)

Systick_Config (SystemCoreClock /1000);/* Systick 中断(每1毫秒)*/
初始化();
While (1)(同时)

GPIOQ->数据|= BIT4;
}

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

    你(们)好

    请勿配置漏极开路并将其拉起。 它是一种备用外围设备功能,我认为它不应该配置为漏极开路。

    GPIOQ->ODR |=(BIT4);
    GPIOQ->PUR |=(BIT4);

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

    你好,艾伦,

    不幸的是,这种情况不起作用。  感谢您的建议!

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

    你(们)好  

    您可以在调试模式下检查相关寄存器配置,以查看这些寄存器是否正确配置为外围设备功能。 我想确认 这些配置是否正确。

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

    您好,Allen 这里是 GPIO 寄存器。  这里的一切似乎都很好。

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

    我不太确定 sysctl 寄存器。  为什么 sysctl_DIVSCLK_SRC 寄存器值为00-,该值的含义是什么?  感谢您抽出时间来这里!

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

    你好,Mome,

    它未按您的需要进行配置。 DIVSCLK 现在已禁用,其来源是 SMCLK 而不是 PIOSC。 检查您的代码以查看其是否按您的需要执行。

    [引用 userid="501303" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1069844/msp432e401y1-使用型剥离器 clk-a-a-a-a-clock-source"的模块->DIVSK_DIV_DIV_N
    sysctl->DIVSCLK |= sysctl_DIVSCLK_SRC_PIOSC;//时钟源为 PIOSC
    sysctl->DIVSCLK |= sysctl_DIVSCLK_EN;//已启用时钟输出

    有关每个寄存器和外围设备的详细信息,请参阅《技术参考手册》。

    www.ti.com/.../slau723a.pdf

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

    你好,艾伦,

    是否有三条线路启用时钟,设置除数和时钟源?   

    //DIVSCLK 寄存器
    sysctl->DIVSCLK |= sysctl_DIVSCLK_DIV_M;//除数值
    sysctl->DIVSCLK |= sysctl_DIVSCLK_SRC_PIOSC;//时钟源为 PIOSC
    sysctl->DIVSCLK |= sysctl_DIVSCLK_EN;//时钟输出已启用

    我相信 DIVSCLK 可以有多个时钟源,其中一个可以是 PIOSC。  

    图4-5:主时钟树

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

    你好,Mome,

    我已再次检查您的代码。 这是一个错误。

    配置如下。 您将看到 PINQ4的时钟

    GPIOQ->PCTL |= 0x00070000;//PMC7:端口 mux 控制7,可以使用 DIVSCLK  

    [引用 userid="501303" url="~ë/support/icros/arm-based 微处理器组/基于 ARM 的微控制器/f/基于 ARM 的微控制器-forum/1069844/msp432e401y1-使用型剥离器 clk-a-a-a-a-a-cock-source" GPIOQ->PCTL | 0xDIV000控制/能够控制 DIV7端口[+00007端口]

    您可以看到如下所示的详细信息

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

    是的,我看到了我的错误并修复了代码。  感谢您的参与和帮助!