Library for KT0915, DSP radio IC
Diff: KT0915.h
- Revision:
- 0:e5bccd46b6db
- Child:
- 1:bf3cbe137051
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/KT0915.h Tue Jan 09 11:44:11 2018 +0000 @@ -0,0 +1,103 @@ +#ifndef __KT0915_H +#define __KT0915_H + +#include "mbed.h" + +#define KT0915_address 0x6A + +/** Library for KT0915 +*/ +class KT0915 +{ +public: + /** Create a KT0915 instance connected to specified I2C pins + * + * @param sda I2C-bus SDA pin + * @param scl I2C-bus SCL pin + */ + KT0915(PinName sda,PinName scl); + /**Initize KT0915 + * + *Set paramaters below + * + *0x02:0b0000000000000111 FM space:100KHz, R/L mute:disable + * + *0x04:0b1110000010010000 FM/AM/device mute:disable, bass:disable DAC cap:60uF + * + *0x05:0b1001100000100000 Mono:enable, de-emphasis:50uF, blend:disable + * + *0x0A:0b0000010000000000 LDO:highest, FM AFC:enable + * + *0x0C:0b0000000000101100 FM wide freq:enable + * + *0x0F:0b1000100000000000 Stanby:disable, volume:0 + * + *0x22:0b1010001011101100 AM AGC fast win:fastest, AM AGC short win:slowest + * + *AM bandwidth:6KHz, AM gain:12dB, Left Inverse Control:enable + * + *0x23:0b0001110000000000 low th:B + * + *0x2E:0b0010100010001100 softmute:fast, AM softmute start level:0b100 + * + *softmute target volume:0b0100, softmute mode:RSSI, FM softmute start threshold:0b100 + * + *0x33:0b0101010000000001 AM space:9KHz + * + *0x3F:0b0000000000010011 RF AGC patch + */ + + void init(void); + + /**read KT0915_WHO_AM_I + * + *return 0x4B54 + */ + int getID(void); + + /**set volume + * + *vol...0~31 + */ + void set_vol(int vol); + + /**set frequency and tune + * + *AM...mode=1, freq=frequency (KHz) + * + *FM...mode=0, freq=100*frequency (MHz) + */ + void set_freq(bool mode,int freq); + + /**read RSSI (dB) + * + *AM...mode=0 + * + *FM...mode=1 + */ + int get_rssi(bool mode); + + /**read SNR (dB) + * + *for FM only + */ + int get_snr(bool mode); + + /**read Chip Ready Indicator + * + *0...Chip is not ready. + * + *1...Chip is ready. + */ + bool get_ready(void); + + /**re-cali*/ + void cali(void); + +private: + I2C _KT0915; + void write_reg(int memory_address,int data1,int data2); + void read_reg(int memory_address,int *data1,int *data2); +}; + +#endif