历史上的今天
返回首页

历史上的今天

今天是:2025年02月17日(星期一)

正在发生

2020年02月17日 | MSP430入门-----总算读懂例程中的用调节DCO频率

2020-02-17 来源:eefocus

//******************************************************************************

//  MSP-FET430P140 Demo - Basic Clock, Implement Auto RSEL SW FLL

//

//  Description: Set DCO clock to (Delta)*(4096) using software FLL. DCO clock

//  is output on P5.5 as SMCLK.  DCO clock, which is the selected SMCLK source

//  for timer_A is integrated over LFXT1/8 (4096) until SMCLK is is equal

//  to Delta.  CCR2 captures ACLK.  To use Set_DCO Timer_A must be

//  operating in continous mode.  Watch crystal for ACLK is required for

//  this example.  Delta must be kept in a range that allows possible

//  DCO speeds.  Minimum Delta must ensure that Set_DCO loop

//  can complete within capture interval. Maximum delta can be calculated be

//  f(DCOx7) / 4096.  f(DCOx7) can be found in device specific datasheet.

//  ACLK = LFXT1/8 = 32768/8, MCLK = SMCLK = target DCO

//  //* External watch crystal installed on XIN XOUT is required for ACLK *// 

//

//           MSP430F149

//         ---------------

//     /||            XIN|-

//      | |               | 32kHz

//      --|RST        XOUT|-

//        |               |

//        |           P5.5|--> SMLCK = target DCO

//        |           P5.6|--> ALCK = 4096

//

//

//  M. Buccini

//  Texas Instruments Inc.

//  Feb 2005

//  Built with IAR Embedded Workbench Version: 3.21A

//******************************************************************************


#include 


void Set_DCO (void);


void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P5DIR |= 0x60;                            // P5.5,6 output

  P5SEL |= 0x60;                            // P5.5,6 SMCLK, ACLK output

  Set_DCO();                                // Set DCO



  while (1);

}



//------------------------------------------------------------------------------

void Set_DCO (void)                         // Set DCO to selected frequency

//------------------------------------------------------------------------------

{

//#define DELTA 900                           // target DCO = DELTA*(4096) = 3686400

#define DELTA 256                           // target DCO = DELTA*(4096) = 1048576//DCO频率

//#define DELTA 70                            // target DCO = DELTA*(4096) = 286720

  unsigned int Compare, Oldcapture = 0;



  BCSCTL1 |= DIVA_3;                        // ACLK= LFXT1CLK/8

  CCTL2 = CM_1 + CCIS_1 + CAP;              // CAP, ACLK

  TACTL = TASSEL_2 + MC_2 + TACLR;          // SMCLK, cont-mode, clear



  while (1)

  {

    while (!(CCIFG & CCTL2));               // Wait until capture occured

    CCTL2 &= ~CCIFG;                        // Capture occured, clear flag

    Compare = CCR2;                         // Get current captured SMCLK

    Compare = Compare - Oldcapture;         // SMCLK difference

    Oldcapture = CCR2;                      // Save current captured SMCLK



    if (DELTA == Compare) break;            // If equal, leave "while(1)"

    else if (DELTA < Compare)               // DCO is too fast, slow it down

    {

      DCOCTL--;

      if (DCOCTL == 0xFF)

      {

        if (!(BCSCTL1 == (XT2OFF + DIVA_3)))//这儿用实际的数值表示可能更明确点!!//减的极限

        BCSCTL1--;                          // Did DCO roll under?, Sel lower RSEL

      }

    }

    else

    {

      DCOCTL++;

      if (DCOCTL == 0x00)

        {

          if (!(BCSCTL1 == (XT2OFF + DIVA_3 + 0x07)))//加的极限。

          BCSCTL1++;                        // Did DCO roll over? Sel higher RSEL

        }

    }

  }

  CCTL2 = 0;                                // Stop CCR2

  TACTL = 0;                                // Stop Timer_A

}


其中DCOCTL,BCSCTL1的加减需要结合寄存器看。


如果直接写成数值的形式,理解好点。


调节频率,有点类似万用表的电压,先选好档位,再调节。其中BCSCTL1就是档位,而DCOCTL就是说的具体调节。


在每个加减都有溢出情况对于DCOCTL;


BCSCTL1,res0~7,分成八个档位。

推荐阅读

史海拾趣

Fenghua (HK) Electronics Ltd公司的发展小趣事

为了降低成本、提高生产效率,Fenghua (HK) Electronics Ltd不断优化供应链管理。公司与供应商建立了长期稳定的合作关系,实现了原材料的及时供应和成本控制。同时,公司引入了先进的生产管理系统,对生产过程中的各个环节进行精细化管理,确保了产品质量的稳定性和一致性。

东科半导体(DK)公司的发展小趣事

东科半导体(DK)公司一直将技术创新作为发展的核心驱动力。公司投入大量资金和资源用于研发,先后开发出AC/DC、同步整流、第三代半导体氮化镓芯片等先进技术。其中,东科半导体的同步整流芯片研发成功,其独特的两引脚封装技术为全球首创,为公司赢得了行业内的独家竞争优势。这一技术的成功应用,不仅提升了公司产品的性能,也进一步巩固了东科在电源管理芯片市场的领先地位。

高博(GBG)公司的发展小趣事

在半导体领域,技术创新是企业持续发展的关键。谷峰公司深知这一点,不断加大研发投入,致力于新技术的研发与应用。其中,SGT(Super Junction Technology)技术的成功研发,是谷峰发展历程中的一个重要里程碑。SGT技术以其低内阻、高效率的特点,成为高频应用的理想选择,极大地提升了谷峰产品的市场竞争力。此外,谷峰还推出了多款高性能的碳化硅MOSFET产品,进一步巩固了其在功率半导体领域的领先地位。

Achronix Semiconductor Corporation公司的发展小趣事

在半导体领域,技术创新是企业持续发展的关键。谷峰公司深知这一点,不断加大研发投入,致力于新技术的研发与应用。其中,SGT(Super Junction Technology)技术的成功研发,是谷峰发展历程中的一个重要里程碑。SGT技术以其低内阻、高效率的特点,成为高频应用的理想选择,极大地提升了谷峰产品的市场竞争力。此外,谷峰还推出了多款高性能的碳化硅MOSFET产品,进一步巩固了其在功率半导体领域的领先地位。

Analog Microelectronics GmbH公司的发展小趣事

品质是企业生存之本。谷峰公司始终将产品质量放在首位,建立了严格的质量控制体系,确保每一款产品的性能和质量都达到行业领先水平。同时,公司还注重品牌建设,通过参加国际展会、发布新产品、提供优质服务等方式,不断提升GOFORD品牌的知名度和美誉度。如今,GOFORD已成为电子行业可信赖的高可靠性功率器件供应商之一。

Abilis Systems公司的发展小趣事

在巩固功率MOSFET市场地位的同时,谷峰公司还积极拓展其他应用领域。公司的半导体产品广泛应用于PD快充、机器人、电动工具、LED照明、5G基站、充电桩等多个领域,满足了不同客户的多样化需求。此外,谷峰还紧跟行业发展趋势,不断推出新产品和技术解决方案,以应对市场的快速变化。这种多元化的发展策略不仅为公司带来了新的增长点,还增强了其抵御市场风险的能力。

问答坊 | AI 解惑

AT91SAM9261 65x45mm核心板

本人用四层板画滴,有需要PCB的找我. [ 本帖最后由 青叶漂零 于 2009-4-9 11:53 编辑 ]…

查看全部问答>

这个东东是串口转并口用的吗?具体怎么使用呢?

1) 这个东东是串口转并口用的吗? 2) 具体是在什么场合使用呢? 3) 如何使用呢? …

查看全部问答>

恢复就给分 我想上北京学嵌入式 哪里教的好?

先说明一点,希望有知道的给小弟一点建议,不知道的不要说,就说自己不清楚或者是知道一点,就行,这样我能准确的判断问题,不要担心分值的问题,只要回复我就给分,24小时之内结贴,说到做到,看我的结帖率就知道了! 小弟想问一个问题,我想上北 ...…

查看全部问答>

打印驱动的问题打印机的Form是不是必需的?

是这样的,我做了打印机的驱动,然后在“画笔”中打印,发现DrvEnablePDEV进去了,可是立马又调用了DrvDisablePDEV,连DrvStartDoc都没有进去,是不是因为没有AddForm导致的,还会不会有其它的问题导致这种现象?我非常渴望大家的意见。…

查看全部问答>

请教一个MSP430的 问题 急!!

430做的保护器,可以控制SIM300模块发送接收短信,现在有的问题,当设备运行久了,就会出现死机,或不响应命令即不接收短信,刚开始一切正常,过差不多一天多点就出现问题了,请高人指点…

查看全部问答>

老师给的一个任务,开始就遇到麻烦了,请教大家如何解决呢?关于ceconfig.h的

老师拿来一个程序让我修改,是用在手机上一个软件的算法,我在编译原代码的时候发现VC++6.0出错,提示没有cecongfig.h的头文件。小弟没有搞过嵌入式开发,上网一搜才知道是windous ce 下设置环境变量的头文件。 现在问题是,我的机子又不是用windo ...…

查看全部问答>

请教:RS485通讯时用到MAX3485,它的作用是什么?

RT,请教:RS485通讯时用到MAX3485,它的作用是什么?…

查看全部问答>

请问在那里设置签名

请问在那里设置签名…

查看全部问答>

关于MSP430的RTC问题

我用的是4系列的,问个关于内部RTC写入的问题。 当RTC配置好启动后。如果用户需要通过按键修改时间的话,修改RTCHOUR和RTCMIN的时候,需要事先关闭RTC模块吗?还是直接改写就可以呢?怎样做是安全的,不会出错的? 430的内部RTC还有什么其它的注 ...…

查看全部问答>

【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第三十五章 DS18B20数字温度...

第三十五章  DS18B20数字温度传感器实验     STM32虽然内部自带了温度传感器,但是因为芯片温升较大等问题,与实际温度差别较大,所以,本章我们将向大家介绍如何通过STM32来读取外部数字温度传感器的温度,来得到较为准确的环 ...…

查看全部问答>