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.

[参考译文] TMS320F2.8054万M:设置中的外部clk问题

Guru**** 2524550 points
Other Parts Discussed in Thread: CONTROLSUITE, MOTORWARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/576077/tms320f28054m-issues-with-external-clk-in-setup

部件号:TMS320F2.8054万M
主题中讨论的其他部件:MOTORWAREcontrolSUITE

您好,TI:

 我正在设置外部clk以替换我的系统clk。 所以我对hal.c做了以下更改:(使用汽车器件中的proj_lab1)

void HAL_setupClks (HAL_handle handle)
{
HAL_Obj *obj =(HAL_Obj *) handle;


//禁用内部振荡















器1 CLK_disableHand1(obj->clkHandle);//设置振荡器源//clk_setacobc(obj->clkHandle,clk_handle);clklock_clklock/clklac_clklac_clklac_clklac_clocklaclc/启用外部时钟周期(clklac_clklc/ clklac_clklac)

//禁用振荡器2
CLK_DISCONY2(obj->clkHandle);

//设置低速时钟预分频
器CLK_setLowSpdPreScaler(obj->clkHandle,CLK_LowSpdPreScaler_SYSCLKOUT_BY_1);//

设置时钟输出预分频器CLK_setClkHandle_Outkle,预


分频器<SCK_CLkScaler_21 <_Scaler_CLk_SC_SCLKSC_HandkSC_Present_21

在中使用外部时钟时,是否需要设置其他设置?

cuz,在我做了上述更改后,它创建了加载程序错误,无法加载我的proj_lab01.out:加载失败。

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

    您好,Qiang,

    请查看下面目录中controlSUITE中的hal.c文件和F2805x_sysctrl.c文件。
    \controlSUITE\DEVICE_SUPPORT\f2805x\v104\F2805x_common\source\</s>2805

    你会注意到未经编辑的版本HAL_setupClks(...)和IntOsc1Sel()基本上是做同样的事情。  HAL函数在末尾执行两项额外操作来设置预校准器。

    如果你看一下sysctrl文件中的ExtOscar Sel()函数,你就会知道当你想要使用外部时钟源来驱动F2805x MCU时,命令的运行顺序。  然后,您只需使用motorware驱动程序调用,而不是寄存器位字段写入。

    希望这能有所帮助!


    谢谢!
    Brett

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

    很好,谢谢Brett,以下是我修改的代码:

    void HAL_setupClks (HAL_handle手柄)
    {
    HAL_Obj *obj =(hal_Obj *)手柄;
    
    //在
    CLK_setXClkInSrc(obj->clkHandle, CLK_XClkInSrc_Gpio19);
    
    //禁用晶体振荡器CLK_DISCkInSrkclc-
    
    
    启用外部
    
    
    时钟CLK_CLkclkclock_CLkclocklock_1;CLkclockc_Src(
    
    
    
    启用外部时钟c_ssc_c=)
    
    // INTOSC1
    CLK_setWatchDogSrc(obj->clkHandle,CLK_WdClkSrc_ExtOscOrIntOscar的时钟看门狗关闭;
    
    //关闭INTOSC2
    CLK_disableOsc2(obj->clkHandle);
    
    //将INTOSC1保留在
    CLK_enableOsc1(obj->clkHandle)上;
    
    //设置低速时钟预分频
    器CLK_setLowSpdPreScaler(obj->clkHandle,CLK_LowSpdPreScaler_SYSCLKOUT_by_1);//
    
    设置时钟输出预分频
    器CLK_CLK_CLkHandle,预
    
    分频器<SCK_CLK_CLkSCK_SCKSCKSCSCSCSCSCSCSCSCSCSCKSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSCSC1}
    

    但是当我进入调试模式时,我的系统似乎没有运行,当我暂停它时:

    程序卡在此处:

    //等待锁定
    时间(PLL_getLockStatus(obj->pllHandle)!= PLL_LockStatus_done){} 

    我是否还需要为PLL CLK设置任何内容?

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

    您好,Qiang,

    外部时钟源的频率是多少?  

    请记住,开发的代码预期使用内部10MHz振荡器。  为了让不同的时钟频率源工作,您需要编辑PLL乘法器和分频器,以便最终使设备的时钟频率为60MHz。

    希望这能有所帮助!


    谢谢!
    Brett

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

    我的外部时钟频率为15MHz,我可以在哪里更改PLL乘法器和除法器值以使我的设备时钟频率为15MHz?

    有多少价值观在SCI沟通中发挥作用?

    外部输入系统时钟:15MHz ( 但我想让系统以60MHz运行,如何实现?)

    波特率:Sci_Baudrate_9_6_kBaud

    PLL_setDivideSelect:PLL_DivideSelect_CLKIN_BY_4

    HAL_setupPll (手柄,PLL_ClkFreq_60_MHz);

    我有点困惑它们之间的相互关系。

    感谢您的帮助!

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

    您好,Qiang,

    如果外部系统时钟为15MHz,则我建议使用: 15MHz * 8 / 2 = 60MHz。

    使用8进入PLLCR寄存器(通过HAL_setupPll)。  PLL_ClkFreq_60_MHz的定义是12,基于使用内部10MHz振荡器的假设。

    HAL_setupPll(...)的末尾附近是一个HAL_setDivideSelect以2分隔。  

    如果可以将设备中的主时钟(SYSCLK)设置为60MHz,则不需要更改SCI时钟/分频器/波特率设置。


    谢谢!
    Brett

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