最近准备使用TMS320F280049芯片开数字电源项目,新一代的C2000 DSP在使用库函数开发过程中比以往要方便的多,尤其是sysconfig的引入,配置底层硬件的初始化就和STM32 CubleMX一样方便。
直接导入C2000Ware安装目录下:ti\c2000\C2000Ware_5_01_00_00\driverlib\f28004x\examples\empty_projects 空的工程,在使用syscofig配置F280049的时钟时,发现貌似在.sysccfg文件中配置的时钟倍频PLL系数貌似不起作用,要手动去device.h中修改第289行代码中的宏定义 DEVICE_SETCLOCK_CFG 才管用,在此记录防止忘记。
开发环境:
a. CCS12 Version: 12.8.0.00012
b.仿真器XDS100V2
c.C2000Ware _5_01_00_00
现象:
1.板载无源晶振为16MHz,目标主频100MHz,故在c2000.syscfg中配置如下
2.配置内部时钟输出到GPIO16引脚,时钟源选PLL 输出,8分频,保存c2000.syscfg文件,main.c中添加如下代码:
#include "driverlib.h"
#include "device.h"
#include "board.h"
#include "c2000ware_libraries.h"
//
// Main
//
void main(void)
{
//
// Initialize device clock and peripherals
//
Device_init();
//
// Disable pin locks and enable internal pull-ups.
//
Device_initGPIO();
//
// Initialize PIE and clear PIE registers. Disables CPU interrupts.
//
Interrupt_initModule();
//
// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines (ISR).
//
Interrupt_initVectorTable();
//
// PinMux and Peripheral Initialization
//
Board_init();
SysCtl_selectClockOutSource(SYSCTL_CLOCKOUT_PLLSYS);
SysCtl_setXClk(SYSCTL_XCLKOUT_DIV_8);
//
// C2000Ware Library initialization
//
C2000Ware_libraries_init();
//
// Enable Global Interrupt (INTM) and real time interrupt (DBGM)
//
EINT;
ERTM;
while(1)
{
GPIO_togglePin(LED3);
DEVICE_DELAY_US(1000);
GPIO_togglePin(LED2);
}
}
//
// End of File
//
3.示波器测试实际输出频率为10MHz,那么主频实际为80MHz,DELAY()延时函数时间偏大,不管如何修改c2000.syscfg 时钟树的PLL倍频系数,输出频率都不动。main.c中进入 Device_init();函数找到: SysCtl_setClock(DEVICE_SETCLOCK_CFG);
4.跳转到宏定义 DEVICE_SETCLOCK_CFG,发现怎么修改syscfg这货都没变,只能手工配置。
5.手工修改如下后,主频和DELAY()函数正常: