| Linduino 1.3.0 Linear Technology Arduino-Compatible Demonstration Board

Functions | Variables
DC1649A.ino File Reference
RF, Silicon Oscillators, PLL Synthesizers, and VCOs » LTC6945: Ultralow Noise and Spurious 0.35GHz to 6GHz Integer-N Synthesizer

DC1649A LTC6945: Ultralow Noise and Spurious 0.35GHz to 6GHz Integer-N Synthesizer. More...

## Detailed Description

DC1649A LTC6945: Ultralow Noise and Spurious 0.35GHz to 6GHz Integer-N Synthesizer.

      Setup:
        Set the terminal baud rate to 115200 and select the newline terminator.
        Refer to Demo Manual DC1649A.
        Ensure all jumpers are installed in the factory default positions.
        Two power supplies are needed for this demo board: a 5v and a 3.3v supply.
        The 5V powers the 5V supply and V+VCO turret.
        A reference frequency is also needed for this demo board, refer to the
        DC1649 Demo Manual for details.

    Command Description:

                                 *****Main Menu*****
        1-  Load Default Settings- Loads the SPI map that is identical to file
            DC1649_100MHz.pllset that is supplied with the PllWizard and mentioned
            in the DC1649A user's manual.  It assumes a 100MHz reference input and the
            default DC1649A BOM.  It should output a 914MHz signal on RF+/-.

            ** If you want to use a different loop filter, reference frequency or different
            register settings.  Please use PllWizard for the loop filter design and initial
            device setup.  The register settings from PllWizard can be entered into menu option 2.

        2-  READ/WRITE to Registers Addresses- Selecting this option will cause all the registers to
            be read, stored to variables, and displayed.  The user will then have the option
            to write to one register address at a time.

        3-  READ/WRITE to Registers Fields- Selecting this option will allow the user
            to read or write to one register field name at a time.

        4-  This function calculates and programs OD, ND based on the desired Frf,
            the reference frequency, and the current RD value.  Linduino One (Arduino Uno) are
            limited to 32 bit floats, int and doubles.  Significant rounding errors are created
            with this 32 bit limitation.  Therefore, this function uses 64bit math functions
            specifically created to overcome this limitation.  After OD and ND, are programmed,
            the program calibrates the LTC6945.  If other registers need change see menu 2 or menu 3.

        5-  This function stores the current SPI settings in the demo boards EEPROM

        6-  This function loads SPI settings from the demo boards EEPROM to the device

    USER INPUT DATA FORMAT:
     decimal : 1024
     hex     : 0x400
     octal   : 02000  (leading 0 "zero")
     binary  : B10000000000
     float   : 1024.0

http://www.linear.com/product/LTC6945

http://www.linear.com/product/LTC6945#demoboards

Copyright 2018(c) Analog Devices, Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of Analog Devices, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- The use of this software may or may not infringe the patent rights of one or more patent holders. This license does not release you from the requirement that you obtain separate licenses from these patent holders to use this software.
- Use of the software either in source or binary form, must be run on or directly connected to an Analog Devices Inc. component.

THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Definition in file DC1649A.ino.

Go to the source code of this file.

## Functions
static void | print_title ()
| Prints the title block when program first starts. More...
static void | print_prompt ()
| Prints main menu. More...
static void | menu_1_load_default_settings ()
| Menu 1: Load Default SPI Register Settings This function loads the register settings referenced in the DC1649A demo manual's quick start section. More...
static void | menu_2_RW_to_reg_addresss ()
| Menu 2: Reads and/or Writes the SPI register address This function reads and displays all SPI register address settings in HEX format. More...
static void | menu_3_RW_to_reg_field ()
| Menu 3: Reads and/or Writes individual SPI fields This function provides the user with a list of all SPI fields. More...
static void | menu_4_set_frf ()
| Menu 4: Calculates and programs OD and ND based on desired Frf This function calculates and programs OD and ND based on desired Frf, the reference frequency, and current RD value. More...
static void | menu_5_store_settings ()
| Store PLL settings to nonvolatile EEPROM on demo board. More...
static void | menu_6_restore_settings ()
| Read stored PLL settings from nonvolatile EEPROM on demo board. More...
static void | setup ()
| Initialize Linduino. More...
static void | loop ()
| Repeats Linduino loop. More...
long | field_menu_RW (long field_val, char field_name[], uint8_t f)
| Support function for function menu_3_RW_to_reg_field displays current state of select field provides user the option to write to that field or return to menu. More...
static void | LTC6945_VCO_Freq_Verification ()
| verifies VCO frequency is within datasheet specifications More...
static void | LTC6945_Ref_Freq_Verification ()
| verifies reference frequency is within datasheet specifications More...
static void | LTC6945_Fout_Freq_Verification ()
| verifies frf frequency is within datasheet specifications More...

## Variables
static uint8_t | ref_out = 0
| Used to keep track of reference out status. More...
static int8_t | demo_board_connected
| Demo Board Name stored in QuikEval EEPROM. More...
static uint8_t | First_Run =0
| if first time through loop = 0, otherwise=1 More...

## Function Documentation

## ◆ field_menu_RW()

long field_menu_RW | ( | long | field_val,
|  | char | field_name[],
|  | uint8_t | f
| ) |  |

Support function for function menu_3_RW_to_reg_field displays current state of select field provides user the option to write to that field or return to menu.

Returns
  field value (user input) that will be written to part

Parameters

  field_val | current state of the selected field
  field_name | SPI Field name selected
  f | SPI field identifier identifies selected fields information in SPI MAP arrays

Definition at line 295 of file DC1649A.ino.

## ◆ loop()

static void loop | ( | void |  | ) |
| static

Repeats Linduino loop.

Returns
  void

Definition at line 157 of file DC1649A.ino.

## ◆ LTC6945_Fout_Freq_Verification()

static void LTC6945_Fout_Freq_Verification | ( |  | ) |
| static

verifies frf frequency is within datasheet specifications

Definition at line 794 of file DC1649A.ino.

## ◆ LTC6945_Ref_Freq_Verification()

static void LTC6945_Ref_Freq_Verification | ( |  | ) |
| static

verifies reference frequency is within datasheet specifications

Definition at line 748 of file DC1649A.ino.

## ◆ LTC6945_VCO_Freq_Verification()

static void LTC6945_VCO_Freq_Verification | ( |  | ) |
| static

verifies VCO frequency is within datasheet specifications

Definition at line 680 of file DC1649A.ino.

## ◆ menu_1_load_default_settings()

static void menu_1_load_default_settings | ( |  | ) |
| static

Menu 1: Load Default SPI Register Settings This function loads the register settings referenced in the DC1649A demo manual's quick start section.

The register settings loaded are the same as PllWizards pllset files DC1649_100MHz.pllset The setting loaded with this function assume the LTC6945's reference is set to 100MHz and the DC1649A's BOM has not been modified.

Returns
  void

Definition at line 218 of file DC1649A.ino.

## ◆ menu_2_RW_to_reg_addresss()

static void menu_2_RW_to_reg_addresss | ( |  | ) |
| static

Menu 2: Reads and/or Writes the SPI register address This function reads and displays all SPI register address settings in HEX format.

It then provides an option to modify(write to) individual registers one at time

EXAMPLE:

- 0- ADDR00 = 0x04 (read only)
- 1- ADDR01 = 0x04
- ....
- 10- ADDR0A = 0x00
- 11- ADDR0B = 0x40 (read only)
- 0 - Return to Main Menu
- Enter a command (1-10 to modify register, or '0' to return to Main Menu):
  Returns
    void

Definition at line 240 of file DC1649A.ino.

## ◆ menu_3_RW_to_reg_field()

static void menu_3_RW_to_reg_field | ( |  | ) |
| static

Menu 3: Reads and/or Writes individual SPI fields This function provides the user with a list of all SPI fields.

The user can select a SPI field to read its current value. Then the user will be provided with an option to write to that field or return to the selection menu.

EXAMPLE:

- 1-BST 12-LKCT 23-PDREFO *
- 2-CP 13-LKEN 24-POR
- 3-CPCHI 14-LKWIN 25-RD
- 4-CPCLO 15-LOCK * 26-REV *
- 5-CPDN 16-ND 27-RFO
- 6-CPINV 17-OD 28-THI *
- 7-CPMID 18-OMUTE 29-TLO *
- 8-CPRST 19-PART * 30-UNLOCK *
- 9-CPUP 20-PDALL 31-x
- 10-CPWIDE 21-PDOUT
- 11-FILT 22-PDPLL
- 0 - Return to Main Menu
- * = READ ONLY FIELD
- Enter a command (1-31 to modify register, or '0' to return to Main Menu):
  Returns
    void

Definition at line 361 of file DC1649A.ino.

## ◆ menu_4_set_frf()

static void menu_4_set_frf | ( |  | ) |
| static

Menu 4: Calculates and programs OD and ND based on desired Frf This function calculates and programs OD and ND based on desired Frf, the reference frequency, and current RD value.

Linduino One (Arduino Uno) are limited to 32 bit floats, int and doubles. Significant rounding errors are created with this 32 bit limitation. Therefore, This function uses 64bit math functions specifically created to overcome this limitation. If RD needs to change see menu 2 or menu 3

Returns
  void

Definition at line 865 of file DC1649A.ino.

## ◆ menu_5_store_settings()

static void menu_5_store_settings | ( |  | ) |
| static

Store PLL settings to nonvolatile EEPROM on demo board.

Returns
  void

Definition at line 887 of file DC1649A.ino.

## ◆ menu_6_restore_settings()

static void menu_6_restore_settings | ( |  | ) |
| static

Read stored PLL settings from nonvolatile EEPROM on demo board.

Returns
  void

Definition at line 913 of file DC1649A.ino.

## ◆ print_prompt()

static void print_prompt | ( |  | ) |
| static

Prints main menu.

Definition at line 974 of file DC1649A.ino.

## ◆ print_title()

static void print_title | ( | void |  | ) |
| static

Prints the title block when program first starts.

Definition at line 950 of file DC1649A.ino.

## ◆ setup()

static void setup | ( | void |  | ) |
| static

Initialize Linduino.

Returns
  void

Definition at line 130 of file DC1649A.ino.

## Variable Documentation

## ◆ demo_board_connected

int8_t demo_board_connected
| static

Demo Board Name stored in QuikEval EEPROM.

Definition at line 123 of file DC1649A.ino.

## ◆ First_Run

uint8_t First_Run =0
| static

if first time through loop = 0, otherwise=1

Definition at line 124 of file DC1649A.ino.

## ◆ ref_out

uint8_t ref_out = 0
| static

Used to keep track of reference out status.

Definition at line 122 of file DC1649A.ino.