3 Replies Latest reply on Mar 6, 2014 3:07 PM by MichaelF_56 Branched to a new discussion.

    Internal vs. External Oscillator

    MichaelF_56

      On page 9 of the 20732S datasheet, it says that the oscillator circuit can be designed for a 32 kHz or 32.768 kHz crystal oscillator and implies in the next sentence that this can be provided externally (characteristics defined in Table 1).

       

      Does this mean that there is already an internal low power oscillator internal to the device?

       

      I have seen mentions of this clock scattered throughout various pieces of the API/SDK documentation, but nothing within the datasheet really explains the internal LPO.

       

      My guess is that the external oscillator is used to provide better accuracy and lower sleep current, but what I'm wondering is whether or not the clock that's internal to the module can be used to wake from deep sleep.

        • 1. Re: Internal vs. External Oscillator
          MichaelF_56


          Per the diagram on page 8 of the datasheet, the module includes a standard 24MHz Pierce oscillator for System and RF timing.  In addition, there is an internal LPO which handles the other clocking chores required by the SOC inside the module.

           

          Related to Deep Sleep, the firmware supports waking the part after configured time interval.

           

          With the internal clock, it can wake anywhere from 64mS to ~36 Hrs.

           

          With external 32 KHz xtal, 128mS - ~144 Hrs

          • 2. Re: Internal vs. External Oscillator

            From the SDK API documentation and also doing searches it would appear there is a 128KHz internal clock that can be used to wake from DEEP_SLEEP.  This 128KHz Clock and the ability to use it to wake from DEEP SLEEP is referenced in platform.cgs and also in devicelpm.c as shown below.  There is no mention of this 128KHz clock in the BCM20732S Reference Manual though and/or what all it can be used for so there is a bit of uncertainty here...?

            This 128KHz clock is also referenced in miadriver.h and rtc.h in which it is not clear what the difference is between what the differences between the MIA function such as mia_enterHidOff and mia_setupTimedWake() functions vs. similar functions found in devicelpm.c. 

             

            platform.cgs

            ################################################################################

            #  Low power configuration

            ################################################################################

            ENTRY "Sleep Mode Configuration"

            {

                "Sleep mode" = "HIDD"

                "Sleep enable" = 1

            }

             

            ENTRY "Device LPM Configuration"

            {

               "Disconnect Low Power Mode" = "HID_OFF"

               "wakeFromHidoffInMs" = 0                               # Time in milliseconds to automatically wake from hid-off. 0 = don't wake.

               "wakeFromHidoffRefClk" = "TIMED_WAKE_CLK_SRC_128KHZ"       # Reference clock source

             

            devicelpm.c

            /// Configuration record of this LPM

            DeviceLpmConfig devLpmConfig =

            {

                // Use sleep in disconnect

                DEV_LPM_DISC_LOW_POWER_MODES_SLEEP,

             

                // Never wakeup

                HID_OFF_WAKEUP_TIME_NONE,

             

                // Use 128 KHz internal MIA clock as reference

                HID_OFF_TIMED_WAKE_CLK_SRC_128KHZ,

            };

             

            miadriver.h

            typedef enum

            {

                /// Use the 32 KHz clock for the RTC to give a range of ~64 ms - ~36 Hrs

                HID_OFF_TIMED_WAKE_CLK_SRC_32KHZ,

             

                /// Use the 128 KHz clock for the RTC to give a range of ~256 ms - ~144 Hrs

                HID_OFF_TIMED_WAKE_CLK_SRC_128KHZ

            } MiaTimedWakeRefClock;

             

            rtc.h

            enum

            {

                RTC_REF_CLOCK_SRC_32KHZ  = 32,

                RTC_REF_CLOCK_SRC_128KHZ = 128

            };

             

             

            Regards,

            Frank

            • 3. Re: Internal vs. External Oscillator
              MichaelF_56

              With the internal clock (this is the 128 kHz clock you reference in your post), the part can be programmed to wake anywhere from 64mS to ~36 Hrs.