Library for KT0915, DSP radio IC

Committer:
ritarosakai
Date:
Wed Jan 10 08:49:24 2018 +0000
Revision:
2:108a1ae04859
Parent:
1:bf3cbe137051
Child:
3:a86c8f7a4e47
Fixed some bugs; Added set_xtal; Added set_space

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ritarosakai 0:e5bccd46b6db 1 #ifndef __KT0915_H
ritarosakai 0:e5bccd46b6db 2 #define __KT0915_H
ritarosakai 0:e5bccd46b6db 3
ritarosakai 0:e5bccd46b6db 4 #include "mbed.h"
ritarosakai 0:e5bccd46b6db 5
ritarosakai 0:e5bccd46b6db 6 #define KT0915_address 0x6A
ritarosakai 0:e5bccd46b6db 7
ritarosakai 0:e5bccd46b6db 8 /** Library for KT0915
ritarosakai 0:e5bccd46b6db 9 */
ritarosakai 0:e5bccd46b6db 10 class KT0915
ritarosakai 0:e5bccd46b6db 11 {
ritarosakai 0:e5bccd46b6db 12 public:
ritarosakai 0:e5bccd46b6db 13 /** Create a KT0915 instance connected to specified I2C pins
ritarosakai 0:e5bccd46b6db 14 *
ritarosakai 0:e5bccd46b6db 15 * @param sda I2C-bus SDA pin
ritarosakai 0:e5bccd46b6db 16 * @param scl I2C-bus SCL pin
ritarosakai 0:e5bccd46b6db 17 */
ritarosakai 0:e5bccd46b6db 18 KT0915(PinName sda,PinName scl);
ritarosakai 0:e5bccd46b6db 19 /**Initize KT0915
ritarosakai 0:e5bccd46b6db 20 *
ritarosakai 0:e5bccd46b6db 21 *Set paramaters below
ritarosakai 0:e5bccd46b6db 22 *
ritarosakai 0:e5bccd46b6db 23 *0x02:0b0000000000000111 FM space:100KHz, R/L mute:disable
ritarosakai 0:e5bccd46b6db 24 *
ritarosakai 0:e5bccd46b6db 25 *0x04:0b1110000010010000 FM/AM/device mute:disable, bass:disable DAC cap:60uF
ritarosakai 0:e5bccd46b6db 26 *
ritarosakai 0:e5bccd46b6db 27 *0x05:0b1001100000100000 Mono:enable, de-emphasis:50uF, blend:disable
ritarosakai 0:e5bccd46b6db 28 *
ritarosakai 0:e5bccd46b6db 29 *0x0A:0b0000010000000000 LDO:highest, FM AFC:enable
ritarosakai 0:e5bccd46b6db 30 *
ritarosakai 0:e5bccd46b6db 31 *0x0C:0b0000000000101100 FM wide freq:enable
ritarosakai 0:e5bccd46b6db 32 *
ritarosakai 0:e5bccd46b6db 33 *0x0F:0b1000100000000000 Stanby:disable, volume:0
ritarosakai 0:e5bccd46b6db 34 *
ritarosakai 0:e5bccd46b6db 35 *0x22:0b1010001011101100 AM AGC fast win:fastest, AM AGC short win:slowest
ritarosakai 0:e5bccd46b6db 36 *
ritarosakai 0:e5bccd46b6db 37 *AM bandwidth:6KHz, AM gain:12dB, Left Inverse Control:enable
ritarosakai 0:e5bccd46b6db 38 *
ritarosakai 1:bf3cbe137051 39 *0x23:0bxxx111xxxxxxxxxx low th:B
ritarosakai 0:e5bccd46b6db 40 *
ritarosakai 0:e5bccd46b6db 41 *0x2E:0b0010100010001100 softmute:fast, AM softmute start level:0b100
ritarosakai 0:e5bccd46b6db 42 *
ritarosakai 0:e5bccd46b6db 43 *softmute target volume:0b0100, softmute mode:RSSI, FM softmute start threshold:0b100
ritarosakai 0:e5bccd46b6db 44 *
ritarosakai 0:e5bccd46b6db 45 *0x33:0b0101010000000001 AM space:9KHz
ritarosakai 0:e5bccd46b6db 46 *
ritarosakai 1:bf3cbe137051 47 *0x3F:0bxxxxxxxxx001x011 RF AGC patch
ritarosakai 0:e5bccd46b6db 48 */
ritarosakai 0:e5bccd46b6db 49
ritarosakai 0:e5bccd46b6db 50 void init(void);
ritarosakai 0:e5bccd46b6db 51
ritarosakai 0:e5bccd46b6db 52 /**read KT0915_WHO_AM_I
ritarosakai 0:e5bccd46b6db 53 *
ritarosakai 0:e5bccd46b6db 54 *return 0x4B54
ritarosakai 0:e5bccd46b6db 55 */
ritarosakai 0:e5bccd46b6db 56 int getID(void);
ritarosakai 0:e5bccd46b6db 57
ritarosakai 0:e5bccd46b6db 58 /**set volume
ritarosakai 0:e5bccd46b6db 59 *
ritarosakai 0:e5bccd46b6db 60 *vol...0~31
ritarosakai 0:e5bccd46b6db 61 */
ritarosakai 0:e5bccd46b6db 62 void set_vol(int vol);
ritarosakai 0:e5bccd46b6db 63
ritarosakai 0:e5bccd46b6db 64 /**set frequency and tune
ritarosakai 0:e5bccd46b6db 65 *
ritarosakai 0:e5bccd46b6db 66 *AM...mode=1, freq=frequency (KHz)
ritarosakai 0:e5bccd46b6db 67 *
ritarosakai 0:e5bccd46b6db 68 *FM...mode=0, freq=100*frequency (MHz)
ritarosakai 0:e5bccd46b6db 69 */
ritarosakai 0:e5bccd46b6db 70 void set_freq(bool mode,int freq);
ritarosakai 0:e5bccd46b6db 71
ritarosakai 2:108a1ae04859 72 /**set xtal frequency
ritarosakai 2:108a1ae04859 73 *
ritarosakai 2:108a1ae04859 74 *xtal=32,38,12000,24000 (KHz)
ritarosakai 2:108a1ae04859 75 *
ritarosakai 2:108a1ae04859 76 *If your xtal is 32.768Khz,set to 32.
ritarosakai 2:108a1ae04859 77 */
ritarosakai 2:108a1ae04859 78 void set_xtal(int xtal);
ritarosakai 2:108a1ae04859 79
ritarosakai 0:e5bccd46b6db 80 /**read RSSI (dB)
ritarosakai 0:e5bccd46b6db 81 *
ritarosakai 0:e5bccd46b6db 82 *AM...mode=0
ritarosakai 0:e5bccd46b6db 83 *
ritarosakai 0:e5bccd46b6db 84 *FM...mode=1
ritarosakai 0:e5bccd46b6db 85 */
ritarosakai 0:e5bccd46b6db 86 int get_rssi(bool mode);
ritarosakai 0:e5bccd46b6db 87
ritarosakai 2:108a1ae04859 88 /**set channel space
ritarosakai 2:108a1ae04859 89 *
ritarosakai 2:108a1ae04859 90 *AM...mode=0, space=1,9,10 (KHz)
ritarosakai 2:108a1ae04859 91 *
ritarosakai 2:108a1ae04859 92 *If space=1, bandwidth sets 2KHz.
ritarosakai 2:108a1ae04859 93 *
ritarosakai 2:108a1ae04859 94 *If space=9 or 10, bandwidth sets 6KHz.
ritarosakai 2:108a1ae04859 95 *
ritarosakai 2:108a1ae04859 96 *FM...mode=1, space=50,100,200 (KHz)
ritarosakai 2:108a1ae04859 97 */
ritarosakai 2:108a1ae04859 98 void set_space(bool mode,int space);
ritarosakai 2:108a1ae04859 99
ritarosakai 0:e5bccd46b6db 100 /**read SNR (dB)
ritarosakai 0:e5bccd46b6db 101 *
ritarosakai 0:e5bccd46b6db 102 *for FM only
ritarosakai 0:e5bccd46b6db 103 */
ritarosakai 0:e5bccd46b6db 104 int get_snr(bool mode);
ritarosakai 0:e5bccd46b6db 105
ritarosakai 0:e5bccd46b6db 106 /**read Chip Ready Indicator
ritarosakai 0:e5bccd46b6db 107 *
ritarosakai 0:e5bccd46b6db 108 *0...Chip is not ready.
ritarosakai 0:e5bccd46b6db 109 *
ritarosakai 0:e5bccd46b6db 110 *1...Chip is ready.
ritarosakai 0:e5bccd46b6db 111 */
ritarosakai 0:e5bccd46b6db 112 bool get_ready(void);
ritarosakai 0:e5bccd46b6db 113
ritarosakai 0:e5bccd46b6db 114 /**re-cali*/
ritarosakai 0:e5bccd46b6db 115 void cali(void);
ritarosakai 0:e5bccd46b6db 116
ritarosakai 0:e5bccd46b6db 117 private:
ritarosakai 0:e5bccd46b6db 118 I2C _KT0915;
ritarosakai 2:108a1ae04859 119 void write_reg(int memory_address,int byte1,int byte2);
ritarosakai 2:108a1ae04859 120 void read_reg(int memory_address,int *byte1,int *byte2);
ritarosakai 2:108a1ae04859 121 int data1,data2;
ritarosakai 0:e5bccd46b6db 122 };
ritarosakai 0:e5bccd46b6db 123
ritarosakai 0:e5bccd46b6db 124 #endif