FM radio / TV tuner
RDM5807M
Europe 87.5-108.5MHz, RDS/RBDS, Vin: 2-7-3.3V, 32Ω resistance loading, headphone connections are direct
You have to set CH341a to 3.3V!
https://datasheet.lcsc.com/szlcsc/RDA5807M_C82537.pdf
Part of my C header file:
//
// Class header file RD5807m FM RADIO TUNER IC through i2c-dev + i2c-ch341a-usb in C++
//
// Copyright (c)2017-2022 Tóthpál István, istvan@tothpal.eu
//
#include <linux/types.h>
#define RD5807m_BASE_ADDRESS 0b0010000
#define RD5807m_CHIPID_REGISTER 0x00
#define RD5807m_CHIPID 0x5804
#define RD5807m_0x02_REGISTER 0x02
#define RD5807m_CHANNEL_REGISTER 0x03 // Channel/Freq - BAND
#define RD5807m_CHANNEL_MASK 0b1111111111000000 // channel * spacing + 87Mhz // BAND_EU
#define RD5807m_DIRECT_MODE_ON 0b0000000000100000
#define RD5807m_DIRECT_MODE_OFF 0b0000000000000000
#define RD5807m_TUNE_ENABLE 0b0000000000010000
#define RD5807m_TUNE_DISABLE 0b0000000000000000
#define RD5807m_BAND_EU 0b0000000000000000 // 87-108MHz
#define RD5807m_BAND_JAPAN 0b0000000000000100 // 76- 91MHz
#define RD5807m_BAND_WORLDWIDE 0b0000000000001000 // 76-108MHz
#define RD5807m_BAND_EASTEUROPE 0b0000000000001100 // 65- 76MHz or 50-65MHz
#define RD5807m_SPACE_100Khz 0b0000000000000000
#define RD5807m_SPACE_200Khz 0b0000000000000001
#define RD5807m_SPACE_50Khz 0b0000000000000010
#define RD5807m_SPACE_25Khz 0b0000000000000011
#define RD5807m_0x04_REGISTER 0x04
#define RD5807m_0x05_REGISTER 0x05 // Volume
#define RD5807m_I2S_REGISTER 0x06
#define RD5807m_0x07_REGISTER 0x07
#define RD5807m_FREQ_DIRECT_REGISTER 0x08
#define RD5807m_READ_STATUS_REGISTER 0x0A
#define RD5807m_READ_0x0B_REGISTER 0x0B
#define RD5807m_READ_RDSA_REGISTER 0x0C
#define RD5807m_READ_RDSB_REGISTER 0x0D
#define RD5807m_READ_RDSC_REGISTER 0x0E
#define RD5807m_READ_RDSD_REGISTER 0x0F
class rd5807m {
int i2c_line;
int i2c_address;
int myfile;
float frequency;
public:
//constructor
rd5807m( int line, int address, float freq );
// destructor
~rd5807m();
int get_i2c_line();
int get_i2c_address();
int isRD5807m();
int init();
int tuneto(int band, float freq);
int seek( int updown );
__s32 setRegister( __u8 registerid, __u16 data );
__s32 getRegister( __u8 registerid );
};
TV Tuner
Modern TV tuners can be manage by I2C. I have got one from my old Flat-Screen CRT TV from the early noughties, if I connect 5V,SDA,SCL,GND I can reach TDA6503A IC at 0x60.
https://www.alldatasheet.com/datasheet-pdf/pdf/19412/PHILIPS/TDA6503A.html + TDA4470
// | Samsung TCPW3001PD18A |
// ANT | | | | | | | | | | | | | | | | |
// ===>| | | | | | | | | | | | | | | | |
// | AGC ID SCL SDA +5V 33V IF SW1 SW2 Mono SIF AFT CVBS |
// GND GND