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

Dependencies:   Si5351A

Committer:
kenjiArai
Date:
Fri Jan 06 14:09:18 2017 +0000
Revision:
3:92f31b23fb0b
Parent:
2:73d79424daa5
Child:
4:5981cf106502
use new function "frequency compensation function" as 'p' command

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:d68f1e7f7f49 1 /*
kenjiArai 0:d68f1e7f7f49 2 * mbed Application program / Si5351A sample program
kenjiArai 0:d68f1e7f7f49 3 * tested on:
kenjiArai 0:d68f1e7f7f49 4 * ST Nucleo-F411RE & F401RE
kenjiArai 0:d68f1e7f7f49 5 * LPC1114FN28
kenjiArai 0:d68f1e7f7f49 6 *
kenjiArai 0:d68f1e7f7f49 7 * Copyright (c) 2016,'17 Kenji Arai / JH1PJL
kenjiArai 0:d68f1e7f7f49 8 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:d68f1e7f7f49 9 * http://mbed.org/users/kenjiArai/
kenjiArai 0:d68f1e7f7f49 10 * Created: December 28th, 2016
kenjiArai 3:92f31b23fb0b 11 * Revised: January 6th, 2017
kenjiArai 0:d68f1e7f7f49 12 *
kenjiArai 0:d68f1e7f7f49 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
kenjiArai 0:d68f1e7f7f49 14 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
kenjiArai 0:d68f1e7f7f49 15 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
kenjiArai 0:d68f1e7f7f49 16 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 0:d68f1e7f7f49 17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
kenjiArai 0:d68f1e7f7f49 18 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
kenjiArai 0:d68f1e7f7f49 19 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 0:d68f1e7f7f49 20 */
kenjiArai 0:d68f1e7f7f49 21
kenjiArai 0:d68f1e7f7f49 22 // Definition ------------------------------------------------------------------------------------
kenjiArai 0:d68f1e7f7f49 23 #define BAUD(x) pc.baud(x)
kenjiArai 0:d68f1e7f7f49 24 #define GETC(x) pc.getc(x)
kenjiArai 0:d68f1e7f7f49 25 #define PUTC(x) pc.putc(x)
kenjiArai 0:d68f1e7f7f49 26 #define PRINTF(...) pc.printf(__VA_ARGS__)
kenjiArai 0:d68f1e7f7f49 27 #define READABLE(x) pc.readable(x)
kenjiArai 0:d68f1e7f7f49 28
kenjiArai 0:d68f1e7f7f49 29 #define BAUD_RATE 9600
kenjiArai 0:d68f1e7f7f49 30
kenjiArai 0:d68f1e7f7f49 31 #if 0
kenjiArai 0:d68f1e7f7f49 32 #define INCREMENT // command 1,2,3 -> INCREMENT or TABLE_LOOK
kenjiArai 0:d68f1e7f7f49 33 #endif
kenjiArai 0:d68f1e7f7f49 34 #if !defined(INCREMENT)
kenjiArai 0:d68f1e7f7f49 35 #define TABLE_LOOK
kenjiArai 0:d68f1e7f7f49 36 #endif
kenjiArai 0:d68f1e7f7f49 37
kenjiArai 0:d68f1e7f7f49 38 // Object ---------------------------------------------------------------------
kenjiArai 0:d68f1e7f7f49 39
kenjiArai 0:d68f1e7f7f49 40 // RAM ------------------------------------------------------------------------
kenjiArai 0:d68f1e7f7f49 41 char linebuf[64];
kenjiArai 0:d68f1e7f7f49 42 int buf_size = sizeof(linebuf);
kenjiArai 0:d68f1e7f7f49 43
kenjiArai 0:d68f1e7f7f49 44 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:d68f1e7f7f49 45 char *const opening_msg =
kenjiArai 0:d68f1e7f7f49 46 "Si5351 test program, created on UTC: "__DATE__"("__TIME__")";
kenjiArai 0:d68f1e7f7f49 47 char *const msg0 = "output: Please enter freq. ex 1230000";
kenjiArai 0:d68f1e7f7f49 48
kenjiArai 0:d68f1e7f7f49 49 static const uint32_t freq_tbl[] =
kenjiArai 0:d68f1e7f7f49 50 {
kenjiArai 0:d68f1e7f7f49 51 4000, 5000, 8000, // 4KHz-8KHz
kenjiArai 0:d68f1e7f7f49 52 10000, 20000, 50000, 80000, // 10KHz-80KHz
kenjiArai 0:d68f1e7f7f49 53 100000, 200000, 500000, 800000, // 100KHz-800KHz
kenjiArai 0:d68f1e7f7f49 54 1000000, 2000000, 5000000, 8000000, // 1MHz-8MHz
kenjiArai 0:d68f1e7f7f49 55 10000000, 20000000, 50000000, 80000000, // 10MHz-80MHz
kenjiArai 0:d68f1e7f7f49 56 100000000, 150000000, 200000000, // 100MHz-200MHz
kenjiArai 0:d68f1e7f7f49 57 0 // Terminate data!!
kenjiArai 0:d68f1e7f7f49 58 };
kenjiArai 0:d68f1e7f7f49 59
kenjiArai 0:d68f1e7f7f49 60 // Function prototypes --------------------------------------------------------
kenjiArai 1:2b29f68043f7 61 void msg_hlp(void);
kenjiArai 1:2b29f68043f7 62 void test(uint8_t channel);
kenjiArai 0:d68f1e7f7f49 63 void test_si5351(void);
kenjiArai 1:2b29f68043f7 64 void special_command(void);
kenjiArai 0:d68f1e7f7f49 65 void put_rn( void );
kenjiArai 0:d68f1e7f7f49 66 void put_r( void );
kenjiArai 0:d68f1e7f7f49 67 void put_lin( void );
kenjiArai 0:d68f1e7f7f49 68 void put_spc( uint8_t n);
kenjiArai 0:d68f1e7f7f49 69 int xatoi(char **str, int32_t *res);
kenjiArai 0:d68f1e7f7f49 70 void get_line(char *buff, int len);
kenjiArai 0:d68f1e7f7f49 71 void get_line_no_param(char *buff);