Si4703 Silicon Labs RDS Radio Intro Part 1.

Опубликовано: 26 Апрель 2026
на канале: John B
720
15

Hi,
A brief look at the hassle I had with my first Si4703 Radio.
I though they were difficult to get going.
They are if you have a faulty board.
Short code that works below in UK.

Start of Main has the oscillator start and nothing else.
Soft_I2C_Start();
Soft_I2C_Write(0x20); //ADDRESS OF CHIP, NOT ADDRESS OF REGISTER. Starts at reg2
Soft_I2C_Write(0x00);
Soft_I2C_Write(0x00); //reg2
Soft_I2C_Write(0x00);
Soft_I2C_Write(0x00); //reg3 channel 0.1 * 145 + 875 = 102 (145 is channel number)
Soft_I2C_Write(0x00);
Soft_I2C_Write(0x00); //reg4
Soft_I2C_Write(0x00);
Soft_I2C_Write(0x00); //reg5
Soft_I2C_Write(0x00);
Soft_I2C_Write(0x00); //reg6
Soft_I2C_Write(0x81);
Soft_I2C_Write(0x00); //reg7 OSCILLATOR SWITCH ON BIT 7 OF UPPER BYTE & Bit 1

Code later in While 1
Soft_I2C_Start();
Soft_I2C_Write(0x20); //address

Soft_I2C_Write(0x40); // 40 42 is seek up 43 is seek too
Soft_I2C_Write(0x01); //reg2 NO SEEK ENABLE BIT ZERO AND DISABLE MUTE

Soft_I2C_Write(0x80); //80 = tune bit
Soft_I2C_Write(20); //reg3 channel 0.1 * 145 + 875 = 102
Soft_I2C_Write(0);
Soft_I2C_Write(0); //reg4 SYSCONFIG 1 RDS DE ETC
Soft_I2C_Write(0);
Soft_I2C_Write(27); //Reg 5 Channel spacing UK Europe & last 4 bits are volume
Soft_I2C_Stop();
Channel 20 works a treat in South Yorkshire.