微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541能否不接32MHz高频晶振?

CC2541能否不接32MHz高频晶振?

时间:10-02 整理:3721RD 点击:

大家好!

目前需要采用内部16MHz晶振,但是按照协议栈的程序焊掉32MHz后程序卡死了。所以想问下不接这个高频晶振可以吗?

这里有一段程序我没有读懂:

#define HAL_BOARD_INIT()                                 \
{                                                        \
  /* Set to 16Mhz to set 32kHz OSC, then back to 32MHz */\
  START_HSOSC_XOSC();                                    \
  SET_OSC_TO_HSOSC();                                    \
  SET_32KHZ_OSC();                                       \
  SET_OSC_TO_XOSC();                                     \
  STOP_HSOSC();                                          \
  /* Enable cache prefetch mode. */                      \
  PREFETCH_ENABLE();                                     \
}

大括号内START_HSOSC_XOSC和STOP_HSOSC两句完全没有读懂,这似乎和手册对不上啊?这两个函数操作的是SLEEPCMD的第2位,也就是常写1的保留位吧?操作保留位有啥用?请问这两句是什么原理呢?去掉32MHz晶振的话这两句怎么变化呢?求指点,谢谢大家。

32M不但给51,而且是给RF core的。所以没有32M是不行的。

高频射频的电路对晶振的要求比较高,内部晶振无法避免不精准的问题,所以为了性能,还是要接

谢谢亲,但是我的需求就是不要RF,彻底停掉RF。

在我的上一个问题中您应该帮忙解答过,我的需求就是不要RF只用51MCU的。

您好,这里就是不适用RF的场景的。想问下START和STOP这两句到底是怎么回事呢?怎么操作了保留位呢?

 哦,这下不好回答了。我们没啥具体经验。

你可以移步国外的e2e论坛吗?看看老外们有没有类似经验。

https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/ 

www.

谢谢,请问您能帮忙解释下START_HSOSC_XOSC和STOP_HSOSC两句的含义吗?对保留位操作是怎么回事呢?

 

   #include "ioCC2540.h"  

        void delay()         {unsigned long i;     

      for(i=0;i<10000;i++)    

       asm(" nop ");         }    

       void  main()      

       {    CLKCONCMD = 0x80;       // Wait until system clock source has changed to HS XOSC (CLKCONSTA.OSC = 0).   

   while(CLKCONSTA & 0x40);//外部晶振32MHz       

       P0SEL =0x0c;///发送数据的tx引脚是p03, rx p0.2    

                   P0DIR=0xff;   

         U0CSR=0xc0;    

        U0UCR=0x02;      

      U0GCR=0x08;        

    U0BAUD=59;//波特率9600    

         PERCFG=0;   

       

            while(1)               {                 U0DBUF=0xaa;        

       while(  !(U0CSR&0x2));            

              delay();               delay();               delay();                           delay();               delay();               delay();       

            U0DBUF=0x55;       

        while(  !(U0CSR&0x2));       

                     delay();               delay();               delay();                           delay();               delay();               delay();         

      }         

    }

请不要回答不相干的内容,更不要做广告。

使用外部晶振就下边这两句代码,我给你完整的串口测试代码并有注释,问一下你如何说出这些话话?

CLKCONCMD = 0x80;       // Wait until system clock source has changed to HS XOSC (CLKCONSTA.OSC = 0).  

   while(CLKCONSTA & 0x40);//外部晶振32MHz 

看我个性签名档的博客地址,《CC2541之解析协议栈的晶振初始化过程》

谢谢解答,但是麻烦看下我讨论的是不接高频晶振如何操作,并不是高频晶振如何使用。

谢谢,您的回答完美地解决了我的疑问!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top