在线时间285 小时
UID3419421
注册时间2017-8-30
NXP金币0
该用户从未签到
高级会员
- 积分
- 750
- 最后登录
- 2021-1-25
|
楼主 |
发表于 2017-10-25 16:51:25
|
显示全部楼层
你好,SDK里的enet代码我没有修改,我只是增加了一个25M时钟生成函数和引脚配置(P3_12)增加内容:
1.在clock_config.c文件里增加了一个25M时钟生成函数,并在对应头文件里声明。
void BOARD_BootClock25M(void)
{
/*!< Set up the clock sources */
/*!< Set up FRO */
POWER_DisablePD(kPDRUNCFG_PD_FRO_EN); /*!< Ensure FRO is on */
CLOCK_AttachClk(kFRO12M_to_MAIN_CLK); /*!< Switch to FRO 12MHz first to ensure we can change voltage without accidentally
being below the voltage for current speed */
POWER_SetVoltageForFreq(25000000U); /*!< Set voltage for the one of the fastest clock outputs: CLKOUT clock output */
CLOCK_SetFLASHAccessCyclesForFreq(12000000U); /*!< Set FLASH wait states for core */
/*!< Set up SYS PLL */
const pll_setup_t pllSetup = {
.pllctrl = SYSCON_SYSPLLCTRL_SELI(52U) | SYSCON_SYSPLLCTRL_SELP(26U) | SYSCON_SYSPLLCTRL_SELR(0U),
.pllmdec = (SYSCON_SYSPLLMDEC_MDEC(32597U)),
.pllndec = (SYSCON_SYSPLLNDEC_NDEC(514U)),
.pllpdec = (SYSCON_SYSPLLPDEC_PDEC(10U)),
.pllRate = 25000000U,
.flags = PLL_SETUPFLAG_WAITLOCK | PLL_SETUPFLAG_POWERUP
};
CLOCK_AttachClk(kFRO12M_to_SYS_PLL); /*!< Set sys pll clock source*/
CLOCK_SetPLLFreq(&pllSetup); /*!< Configure PLL to the desired value */
/*!< Set up dividers */
CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false); /*!< Reset divider counter and set divider to value 1 */
CLOCK_SetClkDiv(kCLOCK_DivClkOut, 0U, true); /*!< Reset CLKOUTDIV divider counter and halt it */
CLOCK_SetClkDiv(kCLOCK_DivClkOut, 1U, false); /*!< Set CLKOUTDIV divider to value 1 */
/*!< Set up clock selectors - Attach clocks to the peripheries */
CLOCK_AttachClk(kFRO12M_to_MAIN_CLK); /*!< Switch MAIN_CLK to FRO12M */
CLOCK_AttachClk(kSYS_PLL_to_CLKOUT); /*!< Switch CLKOUT to SYS_PLL */
/* Set SystemCoreClock variable. */
SystemCoreClock = BOARD_BOOTCLOCKFRO12M_CORE_CLOCK;
}
2.在pinmux.c文件里增加P3_12引脚的配置
IOCON->PIO[3][12] = ((IOCON->PIO[3][12] &
(~(IOCON_PIO_FUNC_MASK | IOCON_PIO_DIGIMODE_MASK))) /* Mask bits to zero which are setting */
| IOCON_PIO_FUNC(PIO312_FUNC_ALT5) /* Selects pin function.: PORT312 (pin L2) is configured as CLKOUT */
| IOCON_PIO_DIGIMODE(PIO312_DIGIMODE_DIGITAL) /* Select Analog/Digital mode.: Digital mode. */
);
3.然后再主函数里调用 BOARD_BootClock25M();
调用位置如下:
/* Hardware Initialization. */
CLOCK_EnableClock(kCLOCK_InputMux);
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
BOARD_InitPins();
BOARD_BootClock25M();
BOARD_BootClockFROHF48M();
BOARD_InitDebugConsole();
PRINTF("\r\nENET example start.\r\n");
|
|