查看: 3893|回复: 5

[其他] 安兄弟,进来一下

[复制链接]

该用户从未签到

6

主题

15

帖子

0

新手上路

Rank: 1

积分
43
最后登录
1970-1-1
发表于 2010-4-6 13:49:00 | 显示全部楼层 |阅读模式
状况:当我选用外部晶振做参考的时候,通过usb-bdm在线烧入后,调试窗口里发现, MCU clock speed: 8847000 Hz
但是 ,在我点了运行debug后,调试窗口出现Target Speed Change Detected - New Speed 4.01 MHz
 
问题:
         这里我就迷惑了,第一个问题,我现在的程序纯粹用外部晶振做参考,不涉及任何有关内部时钟的设置,另外也没有经过倍频,分频,为啥会出现不同的频率呢!
         第二个问题是,只采用外部晶振4M做参考时钟,没经过分频,倍频,那系统时钟就是4M,总线时钟是多少,
 
我知道答案 目前已有4人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-4-6 14:07:03 | 显示全部楼层

    RE:安兄弟,进来一下

    能不能把你时钟总线设置的代码发出来。
    总线时钟和系统时钟设置基本一样,要看你的设置是如何设置的了。总线时钟和系统时钟2个都要进行设置。
    该会员没有填写今日想说内容.

    该用户从未签到

    6

    主题

    15

    帖子

    0

    新手上路

    Rank: 1

    积分
    43
    最后登录
    1970-1-1
     楼主| 发表于 2010-4-6 14:38:45 | 显示全部楼层

    回复:安兄弟,进来一下

    我采用的是MC9S08DZ16芯片,为了阅读方便我 详细做了注释
    时钟部分是这样配置的
    void SetClock(void)
    {
             MCGC2 = 0x3f;   //配置外部参考时钟,总线不分频,BDIV 00,RANGE为1(频率在4M),HGO 1,高增益,
                                            //LP EREFS ERCLKEN        EREFSTEN 均设置为1 其中EREFS为振荡器
          while(MCGSC_OSCINIT==0)//循环检测,直到晶振完成初始化
           {
             __RESET_WATCHDOG();
           }    
        MCGC1 = 0x80;                   //配置当前参考时钟为外部参考时钟
        while(MCGSC_IREFST==1){;}    //循环检测,直到当前参考时钟为外部参考时钟
                      //MCGC3 = 0x21;//4//MCUOUT=[(4M/1x16)/1],BUSCLOCK=32M
         while(!(MCGSC_CLKST==0b10))//循环检测,表明已经选择外部参考时钟为当前时钟模式的MCGOUT 馈电
          {
                 __RESET_WATCHDOG();
          }
    }
    串口部分 要用到总线参考时钟,我用了4M,8M 2M 分别做了测试,而且串口调试助手也用遍了常用的波特率,结果依然通信不正常,
    //设置UART1方式
    //选择波特率为38400bps
    void Uart1_Init(void)
    {
          SCI1BD =4000000/16/scibandrate;  /* SCI1BD是串口波特率寄存器*/
        SCI1C1 = 0x00;     /* start + 8 data bits (LSB first) + stop ,No hardware parity*/
        SCI1C2 = 0x2C;     /* TCIE,RIE enable  ,Receiver on,Transmitter on.  no TIE*/
        //PrintMsg("UART1 bps is 38400 ");
    }
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-4-6 15:23:26 | 显示全部楼层

    RE:安兄弟,进来一下

    SCI1BD =4000000/16/scibandrate;
    换成
    250000/scibandrate;
    我总感觉你的时钟配置,为什么要这么写呢?不能简单一点吗?时钟配置,只能在开启程序的时候配置1次。
    该会员没有填写今日想说内容.

    该用户从未签到

    5

    主题

    23

    帖子

    0

    新手上路

    Rank: 1

    积分
    40
    最后登录
    1970-1-1
    发表于 2010-8-30 20:09:32 | 显示全部楼层

    回复:安兄弟,进来一下

    版主你好,你说的时钟配置简单点,是否还有其他方法配置时钟呢,因为我用的也是这种方法配置时钟的,还请提示,谢谢!
    另,这位朋友说没有倍频分频,但是时钟配置中//MCGC3 = 0x21;//4//MCUOUT=[(4M/1x16)/1],BUSCLOCK=32M不是倍频了吗?还是这里加了注释了,将这句屏蔽了。。。
    请版主对时钟的配置方法给我讲讲,谢谢!
     
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-8-31 15:21:09 | 显示全部楼层

    RE:安兄弟,进来一下

    时钟如何配置,是根据不同的要求来配置的。一般我们配置都是对ICS1、ICS2等类似时钟寄存器名称,进行配置。如果有特殊需求,可以增加类似上面网友的代码,用来判断当前的晶振选择。时钟配置其实不难,主要是理解问题。建议你多看一下手册说明,根据手册理解,实际操作几次,如果能达到你需要的频率,你就理解了。
    该会员没有填写今日想说内容.
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-10 15:51 , Processed in 0.103167 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表