QN8035: FM радиоприемник 60..108 MHz
тестова схема:
Прикачени файлове:
qn8035.gif [ 20.48 KiB | Прегледано 10713 пъти ]
тестов скетч на една честота:
Код за потвърждение:
#include <Wire.h>
uint16_t freq = 1015;
void setup() {
Wire.begin();
qn8035_init();
qn8035_set_freq(freq); // test 101.5 MHz
}
void loop() {
}
void qn8035_init() {
Wire.beginTransmission(0x10);
Wire.write(0x00);
Wire.write(0b10000000); // reset to the default values
Wire.endTransmission();
Wire.beginTransmission(0x10);
Wire.write(0x14);
Wire.write(0b00000111); // no mute, 50 us, GAIN_DIG[2:0] = 0 dB, GAIN_ANA[2:0] = 0 dB
Wire.endTransmission();
}
void qn8035_set_freq(uint16_t m_freq) { // frequency * 10, e.g. 105.8 MHz -> 1058
uint16_t d = (m_freq - 600) * 2; // d = (m_freq - 60) / 0.05;
Wire.beginTransmission(0x10);
Wire.write(0x07);
Wire.write(d & 0xFF); // CH[7:0], FM channel: CH = (60 + CH * 0.05) MHz
Wire.endTransmission();
Wire.beginTransmission(0x10);
Wire.write(0x0A);
Wire.write((d >> 8) & 0x03); // CH[9:8], Highest 2 bits of 10-bit channel index: CH = (60 + CH * 0.05) MHz
Wire.endTransmission();
Wire.beginTransmission(0x10);
Wire.write(0x00);
Wire.write(0b00010001); // RXREQ = 1 -> enter receive mode, CH is determined by CH[9:0]
Wire.endTransmission();
}
Добре звучи.