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.

[参考译文] TMS320F28388S:PHERIPHRAL FREQENCY

Guru**** 2465890 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1492913/tms320f28388s-pheriphral-freqency

器件型号:TMS320F28388S
Thread 中讨论的其他器件:C2000WARE

工具与软件:

我正在使用器件库、因此我只能使用外设频率选项、即(OSC 为25MHz 时为125MHz)

但我需要180MHz 频率  

您能指导我获得180MHz 吗

请检查我编写的代码、但它无法正常工作  

请为我提供此解决方案  

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

    尊敬的 Tejashri:

    XTAL 默认在20 MHz 上运行、因此需要将 IMULT 修改为18。 也可以使用乘法器和除法器的其他组合。  

    此致、

    Aishwarya.

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

    您好、Aishwarya、

      您能检查并检查我的 代码吗  

    #include "driverlib.h"
    #include "device.h"
    #include "board.h"

    //
    // Globals (全局变量)
    //
    uint16_t myADC0Result0;
    uint16_t myADC0Result1;
    uint16_t myADC1Result0;
    uint16_t myADC1Result1;

    //
    // Main (主菜单)
    //
    void main (void)

    //
    //初始化器件时钟和外设
    //
    device_init();

    //
    //禁用引脚锁定和启用内部上拉。
    //
    device_initGPIO();

    //
    //初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
    //
    Interrupt_initModule();

    //
    //使用指向 shell 中断的指针初始化 PIE 矢量表
    //服务例程(ISR)。
    //
    interrupt_initVectorTable();

    Pin_Init ();

    //
    //设置 ADC、初始化 SOC 以由软件触发
    //信号模式:单端
    //转换分辨率:12位;
    //
    board_init();

    //
    //启用全局中断(INTM)和实时中断(DBGM)
    //
    EINT;
    ERTM;


    /// initCPUTimersinit ();

    configureSystemClock();

    //无限循环
    //
    while (1)

    //
    //转换、等待完成并存储结果
    //
    ADC_forceMultipleSOC (myADC0_BASE、(ADC_FORCE_SOC0 | ADC_FORCE_SOC1));

    //
    //等待 ADCA 完成、然后等待确认标志
    //
    while (ADC_getInterruptStatus (myADC0_BASE、ADC_INT_number1)= false)

    }
    ADC_clearInterruptStatus (myADC0_BASE、ADC_INT_number1);

    ADC_forceMultipleSOC (myADC1_base、(ADC_FORCE_SOC0 | ADC_FORCE_SOC1));
    //
    //等待 ADCC 完成、然后确认标志
    //
    while (ADC_getInterruptStatus (myADC1_base、ADC_INT_number1)= false)

    }
    ADC_clearInterruptStatus (myADC1_base、ADC_INT_number1);

    //
    //存储结果
    //
    myADC0Result0 = ADC_readResult (ADCARESULT_BASE、ADC_SOC_NUMBER0);
    myADC0Result1 = ADC_readResult (ADCARESULT_BASE、ADC_SOC_number1);
    myADC1Result0 = ADC_readResult (ADCCRESULT_BASE、ADC_SOC_NUMBER0);
    myADC1Result1 = ADC_readResult (ADCCRESULT_BASE、ADC_SOC_Number1);

    //
    //软件断点。 此时、转换结果存储在中
    // myADC0Result0、myADC0Result1、myADC1Result0和 myADC1Result1。
    //
    //再次单击运行以获得更新的转换。
    //
    ESTOP0;
    }
    }

    空 Pin_Init (空)

    GPIO_setDirectionMode (31、GPIO_DIR_MODE_OUT);

    //将 GPIO13配置为 GPIO (非外设功能)
    GPIO_setPinConfig (GPIO_31_GPIO31);

    //GPIO_writePin (13、1);

    //初始将输出设置为低电平
    // GPIO_writePin (13、0);

    //可选择启用输出限定(默认为 SYNC 模式)
    // GPIO_setQualificationMode (13、GPIO_QUAL_SYNC);


    }


    空 configureSystemClock (空)

    //启用对受保护寄存器的写入访问
    EALLOW;

    unlockRegs();

    //步骤1:设置振荡器源(XTAL 或 INTOSC)
    SYSCTL_selectOscSource (SYSCTL_OSCSRC_XTAL);//选择外部晶振

    SYSCTL_setclock (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT (18)| SYSCTL_FMULT_NONE | SYSCTL_SYSDIV (2));
    //步骤3:启用外设时钟(示例:启用 GPIO 和计时器时钟)
    //SYSCTL_enablePeripheral (SYSCTL_PERIPH_CLK_GPIOA);
    SYSCTL_enablePeripheral (SYSCTL_PERIPH_CLK_TIMER0);

    lockRegs();

    uint32_t sysClockFreq = SYSCTL_getClock (DEVICE_OSCSRC_FREQ);
    // printf ("系统时钟频率:%lu Hz\n"、sysClockFreq);


    EDIS;

    }


    void unlockRegs (void)

    EALLOW;
    //解锁受保护的寄存器
    HWREG (CLKCFG_BASE + SYSCTL_O_CLKSRCCTL1)= 0x0;
    HWREG (CLKCFG_BASE + SYSCTL_O_SYSPLLCTL1)= 0x0;
    EDIS;
    }


    void lockRegs (void)

    EALLOW;
    //通过设置适当的位来锁定受保护的寄存器
    HWREG (CLKCFG_BASE + SYSCTL_O_CLKSRCCTL1)= 0x1;//锁定时钟配置
    HWREG (CLKCFG_BASE + SYSCTL_O_SYSPLLCTL1)= 0x1;//锁定 PLL 配置
    EDIS;
    }

    我将在其中获取解锁和锁定电阻器 API 和  void configureSystemClock (void)。这是用于更改频率的函数

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

    Tejashri,

    虽然我无法查看您的代码、但如果您有任何具体的问题、我可以帮助您解决。 我们提供参考 C2000WARE 代码、可在开发应用代码时参考这些代码。

    并且在这里我将获得解锁和锁定调整器 API 以及  void configureSystemClock (void)这是用于更改频率的函数

    似乎我们没有一个 API 可以执行此操作、但 SysCtl_setClock() 锁定/解锁 PLL、TRM 解释了这个过程、 您可以看看、我在下面添加了一个代码段。  SysCtl_setClock()是函数 TO  

     更改频率。

    此致、

    Aishwarya.