Silicon Laboratories Inc. Si5351A-B-GT I2C-PROGRAMMABLE ANY-FREQUENCY CMOS CLOCK GENERATOR

Dependents:   clockGenerator Check_Si5351A_Clock_generator t2d Thing2Do ... more

Test program:
/users/kenjiArai/code/Check_Si5351A_Clock_generator/

Committer:
kenjiArai
Date:
Sun Jan 01 01:21:34 2017 +0000
Revision:
0:47b9bfa03730
Child:
1:a2309757c450
Si5351A Clock Generator Library (Silicon Laboratories)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:47b9bfa03730 1 /*
kenjiArai 0:47b9bfa03730 2 * mbed Library / Silicon Laboratories Inc. Si5351A-B-GT
kenjiArai 0:47b9bfa03730 3 * I2C-PROGRAMMABLE ANY-FREQUENCY CMOS CLOCK GENERATOR
kenjiArai 0:47b9bfa03730 4 * https://www.silabs.com/products/
kenjiArai 0:47b9bfa03730 5 * timing/clock-generator/si535x/pages/Si5351A-B-GM.aspx
kenjiArai 0:47b9bfa03730 6 *
kenjiArai 0:47b9bfa03730 7 * Checked on Nucleo-F411RE & F401RE mbed board
kenjiArai 0:47b9bfa03730 8 *
kenjiArai 0:47b9bfa03730 9 * Original & Reference program:
kenjiArai 0:47b9bfa03730 10 * 1)
kenjiArai 0:47b9bfa03730 11 * https://github.com/adafruit/Adafruit_Si5351_Library
kenjiArai 0:47b9bfa03730 12 * see original source (bottom part of si5351a.cpp file)
kenjiArai 0:47b9bfa03730 13 * Software License Agreement (BSD License)
kenjiArai 0:47b9bfa03730 14 * Copyright (c) 2014, Adafruit Industries All rights reserved.
kenjiArai 0:47b9bfa03730 15 * 2)
kenjiArai 0:47b9bfa03730 16 * https://gist.github.com/edy555/f1ee7ef44fe4f5c6f7618ac4cbbe66fb
kenjiArai 0:47b9bfa03730 17 * made by TT@Hokkaido-san (edy555)
kenjiArai 0:47b9bfa03730 18 * http://ttrftech.tumblr.com/
kenjiArai 0:47b9bfa03730 19 * http://ttrftech.tumblr.com/post/150247113216/
kenjiArai 0:47b9bfa03730 20 * si5351a-configuration-how-to-and-signal-quality
kenjiArai 0:47b9bfa03730 21 *
kenjiArai 0:47b9bfa03730 22 * Modified by Kenji Arai / JH1PJL
kenjiArai 0:47b9bfa03730 23 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:47b9bfa03730 24 * http://mbed.org/users/kenjiArai/
kenjiArai 0:47b9bfa03730 25 *
kenjiArai 0:47b9bfa03730 26 * Started: December 24th, 2016
kenjiArai 0:47b9bfa03730 27 * Revised: January 1st, 2017
kenjiArai 0:47b9bfa03730 28 *
kenjiArai 0:47b9bfa03730 29 */
kenjiArai 0:47b9bfa03730 30
kenjiArai 0:47b9bfa03730 31 #ifndef MBED_SI5351A
kenjiArai 0:47b9bfa03730 32 #define MBED_SI5351A
kenjiArai 0:47b9bfa03730 33
kenjiArai 0:47b9bfa03730 34 ////////////// ADDRESS /////////////////////////////////////////////////////////
kenjiArai 0:47b9bfa03730 35 // 7bit address = 0b1100000(0x60) -> 8bit = 0b11000000(0xc0)
kenjiArai 0:47b9bfa03730 36 // -> Fixed adddress (No other choises)
kenjiArai 0:47b9bfa03730 37 #define SI5351_I2C_ADDR (0x60<<1)
kenjiArai 0:47b9bfa03730 38
kenjiArai 0:47b9bfa03730 39 ////////////// REGISTER DEFINITION /////////////////////////////////////////////
kenjiArai 0:47b9bfa03730 40 #define SI5351_REG_3_OUTPUT_ENABLE_CONTROL 3
kenjiArai 0:47b9bfa03730 41 #define SI5351_REG_16_CLK0_CONTROL 16
kenjiArai 0:47b9bfa03730 42 #define SI5351_REG_17_CLK1_CONTROL 17
kenjiArai 0:47b9bfa03730 43 #define SI5351_REG_18_CLK2_CONTROL 18
kenjiArai 0:47b9bfa03730 44 #define SI5351_REG_26_PLL_A 26
kenjiArai 0:47b9bfa03730 45 #define SI5351_REG_34_PLL_B 34
kenjiArai 0:47b9bfa03730 46 #define SI5351_REG_42_MULTISYNTH0 42
kenjiArai 0:47b9bfa03730 47 #define SI5351_REG_44_MULTISYNTH0_P3 44
kenjiArai 0:47b9bfa03730 48 #define SI5351_REG_50_MULTISYNTH1 50
kenjiArai 0:47b9bfa03730 49 #define SI5351_REG_52_MULTISYNTH1_P3 52
kenjiArai 0:47b9bfa03730 50 #define SI5351_REG_58_MULTISYNTH2 58
kenjiArai 0:47b9bfa03730 51 #define SI5351_REG_60_MULTISYNTH2_P3 60
kenjiArai 0:47b9bfa03730 52 #define SI5351_REG_177_PLL_RESET 177
kenjiArai 0:47b9bfa03730 53 #define SI5351_REG_183_CRYSTAL_LOAD 183
kenjiArai 0:47b9bfa03730 54
kenjiArai 0:47b9bfa03730 55 ////////////// Configration ////////////////////////////////////////////////////
kenjiArai 0:47b9bfa03730 56 // PLLn
kenjiArai 0:47b9bfa03730 57 #define SI5351_PLL_A 0
kenjiArai 0:47b9bfa03730 58 #define SI5351_PLL_B 1
kenjiArai 0:47b9bfa03730 59 // CLKn
kenjiArai 0:47b9bfa03730 60 #define SI5351_CLK0 0
kenjiArai 0:47b9bfa03730 61 #define SI5351_CLK1 1
kenjiArai 0:47b9bfa03730 62 #define SI5351_CLK2 2
kenjiArai 0:47b9bfa03730 63 // REG_44_MULTISYNTH0, REG_52_MULTISYNTH1, REG_60_MULTISYNTH2
kenjiArai 0:47b9bfa03730 64 #define SI5351_R_DIV_1 (0<<4)
kenjiArai 0:47b9bfa03730 65 #define SI5351_R_DIV_2 (1<<4)
kenjiArai 0:47b9bfa03730 66 #define SI5351_R_DIV_4 (2<<4)
kenjiArai 0:47b9bfa03730 67 #define SI5351_R_DIV_8 (3<<4)
kenjiArai 0:47b9bfa03730 68 #define SI5351_R_DIV_16 (4<<4)
kenjiArai 0:47b9bfa03730 69 #define SI5351_R_DIV_32 (5<<4)
kenjiArai 0:47b9bfa03730 70 #define SI5351_R_DIV_64 (6<<4)
kenjiArai 0:47b9bfa03730 71 #define SI5351_R_DIV_128 (7<<4)
kenjiArai 0:47b9bfa03730 72 #define SI5351_DIVBY4 (3<<2)
kenjiArai 0:47b9bfa03730 73 // REG_16_CLK0_CONTROL, REG_17_CLK1_CONTROL, REG_18_CLK2_CONTROL
kenjiArai 0:47b9bfa03730 74 #define SI5351_CLK_POWERDOWN (1<<7)
kenjiArai 0:47b9bfa03730 75 #define SI5351_CLK_INTEGER_MODE (1<<6)
kenjiArai 0:47b9bfa03730 76 #define SI5351_CLK_PLL_SELECT_B (1<<5)
kenjiArai 0:47b9bfa03730 77 #define SI5351_CLK_INVERT (1<<4)
kenjiArai 0:47b9bfa03730 78 #define SI5351_CLK_INPUT_MASK (3<<2)
kenjiArai 0:47b9bfa03730 79 #define SI5351_CLK_INPUT_XTAL (0<<2)
kenjiArai 0:47b9bfa03730 80 #define SI5351_CLK_INPUT_CLKIN (1<<2)
kenjiArai 0:47b9bfa03730 81 #define SI5351_CLK_INPUT_MULTISYNTH_0_4 (2<<2)
kenjiArai 0:47b9bfa03730 82 #define SI5351_CLK_INPUT_MULTISYNTH_N (3<<2)
kenjiArai 0:47b9bfa03730 83 #define SI5351_CLK_DRIVE_STRENGTH_MASK (3<<0)
kenjiArai 0:47b9bfa03730 84 #define SI5351_CLK_DRIVE_STRENGTH_2MA (0<<0)
kenjiArai 0:47b9bfa03730 85 #define SI5351_CLK_DRIVE_STRENGTH_4MA (1<<0)
kenjiArai 0:47b9bfa03730 86 #define SI5351_CLK_DRIVE_STRENGTH_6MA (2<<0)
kenjiArai 0:47b9bfa03730 87 #define SI5351_CLK_DRIVE_STRENGTH_8MA (3<<0)
kenjiArai 0:47b9bfa03730 88 // REG_177_PLL_RESET
kenjiArai 0:47b9bfa03730 89 #define SI5351_PLL_RESET_B (1<<7)
kenjiArai 0:47b9bfa03730 90 #define SI5351_PLL_RESET_A (1<<5)
kenjiArai 0:47b9bfa03730 91 // REG_183_CRYSTAL_LOAD
kenjiArai 0:47b9bfa03730 92 #define SI5351_CRYSTAL_LOAD_6PF (1<<6)
kenjiArai 0:47b9bfa03730 93 #define SI5351_CRYSTAL_LOAD_8PF (2<<6)
kenjiArai 0:47b9bfa03730 94 #define SI5351_CRYSTAL_LOAD_10PF (3<<6)
kenjiArai 0:47b9bfa03730 95
kenjiArai 0:47b9bfa03730 96 // Frequency
kenjiArai 0:47b9bfa03730 97 #define FREQ_150MHZ (150000000UL)
kenjiArai 0:47b9bfa03730 98 #define FREQ_100MHZ (100000000UL)
kenjiArai 0:47b9bfa03730 99 #define FREQ_1MHZ (1000000UL)
kenjiArai 0:47b9bfa03730 100 #define FREQ_450KHZ (450000UL)
kenjiArai 0:47b9bfa03730 101 #define FREQ_75KHZ (75000UL)
kenjiArai 0:47b9bfa03730 102 #define FREQ_20KHZ (20000UL)
kenjiArai 0:47b9bfa03730 103
kenjiArai 0:47b9bfa03730 104 typedef enum { // Operating mode
kenjiArai 0:47b9bfa03730 105 CLK_OUT_NOT_USED = 0, CLK_OUT_FIXEDPLL, CLK_OUT_FIXEDDIV
kenjiArai 0:47b9bfa03730 106 } OperatingMode;
kenjiArai 0:47b9bfa03730 107
kenjiArai 0:47b9bfa03730 108 /** Silicon Laboratories Inc. Si5351A
kenjiArai 0:47b9bfa03730 109 *
kenjiArai 0:47b9bfa03730 110 * @code
kenjiArai 0:47b9bfa03730 111 * #include "mbed.h"
kenjiArai 0:47b9bfa03730 112 * #include "si5351a.h"
kenjiArai 0:47b9bfa03730 113 *
kenjiArai 0:47b9bfa03730 114 * I2C i2c(I2C_SDA, I2C_SCL); // communication with Si5351A
kenjiArai 0:47b9bfa03730 115 * SI5351 clk(i2c, 25000000UL); // Base clock = 25MHz
kenjiArai 0:47b9bfa03730 116 *
kenjiArai 0:47b9bfa03730 117 * int main() {
kenjiArai 0:47b9bfa03730 118 * clk.set_frequency(SI5351_CLK0, 10000000); // CLK0=10MHz
kenjiArai 0:47b9bfa03730 119 * while(true) {
kenjiArai 0:47b9bfa03730 120 * wait(1000);
kenjiArai 0:47b9bfa03730 121 * }
kenjiArai 0:47b9bfa03730 122 * }
kenjiArai 0:47b9bfa03730 123 *
kenjiArai 0:47b9bfa03730 124 * // --------- CAUTION & RESTRICTION -----------------------------------------
kenjiArai 0:47b9bfa03730 125 * // 1) SETTING METHOD
kenjiArai 0:47b9bfa03730 126 * // 1~100MHz : fixed PLL (XTAL * PLL_N)MHz, fractional divider
kenjiArai 0:47b9bfa03730 127 * // 100~150MHz : fractional PLL 600-900MHz, fixed divider 6
kenjiArai 0:47b9bfa03730 128 * // 150~200MHz : fractional PLL 600-900MHz, fixed divider 4
kenjiArai 0:47b9bfa03730 129 * //
kenjiArai 0:47b9bfa03730 130 * // 2) RESOURCE USAGE
kenjiArai 0:47b9bfa03730 131 * // PLLA -> only for CLK0 (You can change freqency any time to any value.)
kenjiArai 0:47b9bfa03730 132 * // PLLB -> use for bothe CLK1 & CLK2
kenjiArai 0:47b9bfa03730 133 * // If you set a freq. less than 100MHz,
kenjiArai 0:47b9bfa03730 134 * // You can change both CLK1 & CLK2 independently.
kenjiArai 0:47b9bfa03730 135 * // Over 100MHz, you may have a trouble becase need to change PLLB freq.
kenjiArai 0:47b9bfa03730 136 * //
kenjiArai 0:47b9bfa03730 137 * // 3) DISCONTINUITY
kenjiArai 0:47b9bfa03730 138 * // If you use multiple output, you will lose output signal when you change
kenjiArai 0:47b9bfa03730 139 * // the output frequency even not specific CLKn during I2C acccess.
kenjiArai 0:47b9bfa03730 140 * // --------------------------------------------------------------------------
kenjiArai 0:47b9bfa03730 141 *
kenjiArai 0:47b9bfa03730 142 * @endcode
kenjiArai 0:47b9bfa03730 143 */
kenjiArai 0:47b9bfa03730 144
kenjiArai 0:47b9bfa03730 145 class SI5351A
kenjiArai 0:47b9bfa03730 146 {
kenjiArai 0:47b9bfa03730 147 public:
kenjiArai 0:47b9bfa03730 148 /** Configure data pin
kenjiArai 0:47b9bfa03730 149 * @param data SDA and SCL pins
kenjiArai 0:47b9bfa03730 150 * @param External base clock frequency
kenjiArai 0:47b9bfa03730 151 * @param Internal capacitor value (10pF, 8pF & 6pF/ Default 8pF)
kenjiArai 0:47b9bfa03730 152 * @param Output current drive strength(Default 2mA) same value CLK0,1,2
kenjiArai 0:47b9bfa03730 153 */
kenjiArai 0:47b9bfa03730 154 SI5351A(PinName p_sda, PinName p_scl,
kenjiArai 0:47b9bfa03730 155 uint32_t base_clk_freq,
kenjiArai 0:47b9bfa03730 156 uint8_t xtal_cap = SI5351_CRYSTAL_LOAD_8PF,
kenjiArai 0:47b9bfa03730 157 uint8_t drive_current = SI5351_CLK_DRIVE_STRENGTH_2MA
kenjiArai 0:47b9bfa03730 158 );
kenjiArai 0:47b9bfa03730 159
kenjiArai 0:47b9bfa03730 160 /** Configure data pin (with other devices on I2C line)
kenjiArai 0:47b9bfa03730 161 * @param I2C previous definition
kenjiArai 0:47b9bfa03730 162 * @param External base clock frequency
kenjiArai 0:47b9bfa03730 163 * @param Internal capacitor value (10pF, 8pF & 6pF/ Default 8pF)
kenjiArai 0:47b9bfa03730 164 * @param Output current drive strength(Default 2mA) same value CLK0,1,2
kenjiArai 0:47b9bfa03730 165 */
kenjiArai 0:47b9bfa03730 166 SI5351A(I2C& p_i2c,
kenjiArai 0:47b9bfa03730 167 uint32_t base_clk_freq,
kenjiArai 0:47b9bfa03730 168 uint8_t xtal_cap = SI5351_CRYSTAL_LOAD_8PF,
kenjiArai 0:47b9bfa03730 169 uint8_t drive_current = SI5351_CLK_DRIVE_STRENGTH_2MA
kenjiArai 0:47b9bfa03730 170 );
kenjiArai 0:47b9bfa03730 171
kenjiArai 0:47b9bfa03730 172 /** Set frequency
kenjiArai 0:47b9bfa03730 173 * @param output channel CLK0=0, CLK1=1, CLK2=2
kenjiArai 0:47b9bfa03730 174 * @param target frequency (unit = Hz)
kenjiArai 0:47b9bfa03730 175 * @return output frequency
kenjiArai 0:47b9bfa03730 176 */
kenjiArai 0:47b9bfa03730 177 uint32_t set_frequency(uint8_t channel, uint32_t freq);
kenjiArai 0:47b9bfa03730 178
kenjiArai 0:47b9bfa03730 179 /** shift frequency after setting frequency (Range: 750KHz to 100MHz )
kenjiArai 0:47b9bfa03730 180 * @param desired channel CLK0=0, CLK1=1, CLK2=2
kenjiArai 0:47b9bfa03730 181 * @param sift(+/-) frequency (unit = Hz)
kenjiArai 0:47b9bfa03730 182 * @return output frequency
kenjiArai 0:47b9bfa03730 183 */
kenjiArai 0:47b9bfa03730 184 uint32_t shift_freq(uint8_t channel, int32_t diff);
kenjiArai 0:47b9bfa03730 185
kenjiArai 0:47b9bfa03730 186 /** read frequency
kenjiArai 0:47b9bfa03730 187 * @param select channel CLK0=0, CLK1=1, CLK2=2
kenjiArai 0:47b9bfa03730 188 * @return output frequency
kenjiArai 0:47b9bfa03730 189 */
kenjiArai 0:47b9bfa03730 190 uint32_t read_freq(uint8_t channel);
kenjiArai 0:47b9bfa03730 191
kenjiArai 0:47b9bfa03730 192
kenjiArai 0:47b9bfa03730 193 /** reset Si5351A all registers
kenjiArai 0:47b9bfa03730 194 * @param none
kenjiArai 0:47b9bfa03730 195 * @return none
kenjiArai 0:47b9bfa03730 196 */
kenjiArai 0:47b9bfa03730 197 void all_reset(void);
kenjiArai 0:47b9bfa03730 198
kenjiArai 0:47b9bfa03730 199 //--------------- Debug interface -------------------------------
kenjiArai 0:47b9bfa03730 200
kenjiArai 0:47b9bfa03730 201 /** debug / print registers
kenjiArai 0:47b9bfa03730 202 * @param none
kenjiArai 0:47b9bfa03730 203 * @return none (but print on console)
kenjiArai 0:47b9bfa03730 204 */
kenjiArai 0:47b9bfa03730 205 void debug_reg_print(void);
kenjiArai 0:47b9bfa03730 206
kenjiArai 0:47b9bfa03730 207 /** debug / check registers and shows current configlation
kenjiArai 0:47b9bfa03730 208 * @param none
kenjiArai 0:47b9bfa03730 209 * @return none (but print on console)
kenjiArai 0:47b9bfa03730 210 */
kenjiArai 0:47b9bfa03730 211 void debug_current_config(void);
kenjiArai 0:47b9bfa03730 212
kenjiArai 0:47b9bfa03730 213 /** debug / set CLK0: 120.00MHz, CLK1: 12.00MHz, CLK2: 13.56MHz
kenjiArai 0:47b9bfa03730 214 * as demonstration purpose for hardware check (@25MHz Xtal)
kenjiArai 0:47b9bfa03730 215 * @param none
kenjiArai 0:47b9bfa03730 216 * @return none
kenjiArai 0:47b9bfa03730 217 */
kenjiArai 0:47b9bfa03730 218 void debug_example_clock(void);
kenjiArai 0:47b9bfa03730 219
kenjiArai 0:47b9bfa03730 220 protected:
kenjiArai 0:47b9bfa03730 221 I2C _i2c;
kenjiArai 0:47b9bfa03730 222
kenjiArai 0:47b9bfa03730 223 uint32_t gcd(uint32_t x, uint32_t y);
kenjiArai 0:47b9bfa03730 224 void si5351_read(const uint8_t *buf);
kenjiArai 0:47b9bfa03730 225 void si5351_write(uint8_t reg, uint8_t dat);
kenjiArai 0:47b9bfa03730 226 void si5351_bulk_write(const uint8_t *buf, uint8_t len);
kenjiArai 0:47b9bfa03730 227 double si5351_set_frequency_fixeddiv(
kenjiArai 0:47b9bfa03730 228 uint8_t channel,
kenjiArai 0:47b9bfa03730 229 uint32_t pll,
kenjiArai 0:47b9bfa03730 230 uint32_t freq,
kenjiArai 0:47b9bfa03730 231 uint32_t div);
kenjiArai 0:47b9bfa03730 232 double si5351_set_frequency_fixedpll(
kenjiArai 0:47b9bfa03730 233 uint8_t channel,
kenjiArai 0:47b9bfa03730 234 uint32_t pll,
kenjiArai 0:47b9bfa03730 235 uint32_t pllfreq,
kenjiArai 0:47b9bfa03730 236 uint32_t freq,
kenjiArai 0:47b9bfa03730 237 uint8_t factor);
kenjiArai 0:47b9bfa03730 238 double si5351_setupMultisynth(
kenjiArai 0:47b9bfa03730 239 uint8_t output,
kenjiArai 0:47b9bfa03730 240 uint8_t pllSource,
kenjiArai 0:47b9bfa03730 241 uint32_t div,
kenjiArai 0:47b9bfa03730 242 uint32_t num,
kenjiArai 0:47b9bfa03730 243 uint32_t denom,
kenjiArai 0:47b9bfa03730 244 uint8_t factor);
kenjiArai 0:47b9bfa03730 245 void si5351_setupPLL(
kenjiArai 0:47b9bfa03730 246 uint8_t pll,
kenjiArai 0:47b9bfa03730 247 uint8_t mult,
kenjiArai 0:47b9bfa03730 248 uint32_t num,
kenjiArai 0:47b9bfa03730 249 uint32_t denom);
kenjiArai 0:47b9bfa03730 250 void si5351_reset_pll(void);
kenjiArai 0:47b9bfa03730 251 void si5351_enable_output(void);
kenjiArai 0:47b9bfa03730 252 void si5351_disable_output(void);
kenjiArai 0:47b9bfa03730 253 void si5351_disable_all_output(void);
kenjiArai 0:47b9bfa03730 254 void si5351_init(void);
kenjiArai 0:47b9bfa03730 255 void put_dump(const uint8_t *buff, uint8_t ofs, uint8_t cnt);
kenjiArai 0:47b9bfa03730 256 void prnt_reg(uint8_t offset, uint8_t n);
kenjiArai 0:47b9bfa03730 257 void reg_16_17_18(uint8_t dt);
kenjiArai 0:47b9bfa03730 258 void reg_pll_8bytes(uint8_t *buf);
kenjiArai 0:47b9bfa03730 259 void reg_mltisyc_8bytes(uint8_t *buf);
kenjiArai 0:47b9bfa03730 260
kenjiArai 0:47b9bfa03730 261 private:
kenjiArai 0:47b9bfa03730 262 uint8_t addr; // Chip I2C address
kenjiArai 0:47b9bfa03730 263 uint32_t base_freq; // Xtal oscilation freq.
kenjiArai 0:47b9bfa03730 264 uint8_t x_cap; // Internal capacitor value
kenjiArai 0:47b9bfa03730 265 uint8_t drv_current; // Output current drive strength
kenjiArai 0:47b9bfa03730 266 uint32_t pll_freq; // XTAL * PLL_N
kenjiArai 0:47b9bfa03730 267 uint32_t plla_freq; // Calculated freq of PLLA
kenjiArai 0:47b9bfa03730 268 uint32_t pllb_freq; // Calculated freq of PLLB
kenjiArai 0:47b9bfa03730 269 // Setting frequency
kenjiArai 0:47b9bfa03730 270 double clk0_freq;
kenjiArai 0:47b9bfa03730 271 double clk1_freq;
kenjiArai 0:47b9bfa03730 272 double clk2_freq;
kenjiArai 0:47b9bfa03730 273 // operating mode
kenjiArai 0:47b9bfa03730 274 uint8_t clk0_state;
kenjiArai 0:47b9bfa03730 275 uint8_t clk1_state;
kenjiArai 0:47b9bfa03730 276 uint8_t clk2_state;
kenjiArai 0:47b9bfa03730 277
kenjiArai 0:47b9bfa03730 278 }; // class SI5351A
kenjiArai 0:47b9bfa03730 279
kenjiArai 0:47b9bfa03730 280 #endif // MBED_SI5351A