bailao99 发表于 2019-9-21 16:59:16

结帖:KEA128使用外部时钟,无法实现20MHz总线频率

本帖最后由 bailao99 于 2019-9-21 17:20 编辑

KEA128使用外部时钟,无法实现20MHz总线频率

代码如下:
void sysinit(void)
{

    OSC_CR = 0x96;   //选择外部时钟,高功耗高增益
    while ((OSC_CR & OSC_CR_OSCINIT_MASK) == 0);//等待OSC时钟设置完成
    //FEE模式
    ICS_C1 = 0x18;      //8M/256 = 31.25KICSOUT = 31.25*1280=40M
    ICS_C2 = 0x20;      //BDIV=1                  
    while ((ICS_S & ICS_S_IREFST_MASK) == 1);
    while ((ICS_S & ICS_S_LOCK_MASK) == 0);

    SIM_BUSDIV = 1 ;// 40M BUS Clock = ICSOUT/2 20M

    ICS_C2 = 0x00;//BDIV=1
}

外部晶振8MHz,运行后总是进入Default_Handler
如果修改如下:
ICS_C2 = 0x20;//BDIV=2
程序就能正常运行,可是只能实现10MHz总线频率

程序无错,是其他东西导致了进入Default_Handler

anxiangbo 发表于 2019-10-7 09:02:55

//外部晶振8M 设置内核40M 总线20M 参考代码

OSC->CR = 0x96; //选择外部时钟,高范围、高增益振荡器

while ((OSC->CR & OSC_CR_OSCINIT_MASK) == 0); //等待振荡器准备就绪

//FFE模式

ICS->C2 = 0x20;// BDIV=1   

ICS->C1 = 0x18;//8M/256 = 31.25KICSOUT = 31.25*1280=40M

while ((ICS->S & ICS_S_IREFST_MASK) == 1); //等待选择外部源

while ((ICS->S & ICS_S_LOCK_MASK) == 0); //    等待FLL锁定

SIM->CLKDIV = 0x01100000; //核心时钟=ICSOUT/140M      总线时钟=核心时钟/220M

ICS->C2 = 0x00; // BDIV=1除以1–允许最大核心和总线时钟频率



你参考下吧
页: [1]
查看完整版本: 结帖:KEA128使用外部时钟,无法实现20MHz总线频率