FM Radio for C64

Update 24.2.2020: Added version 2.6 with minor functional updates (manual frequency setting via 'F' -key).

However, this release adds support for si4702/si4703 -chips.

Update 5.1.2020: Added version 2.5 with support for loading and saving configuration on

AT24C32 EEPROM which is found on most DS3231 RTC modules.

Update 28.12.2019: Added version 2.4 supporting Cassette port also

Update 21.9.2018: Added initial version for TEA5767 -chip

Update 26.12.2017: Version 2.2 added (native version for C128)

Update 23.12.2017: Version 2.1 of the FM-radio software added. See readme.txt in the zip file for changes

Update 26.11.2017: Version 2.0 of the FM-radio software added. See readme.txt in the zip file for changes

Update 20.6.2017: Pre assembled modules & software are available sharewareplus

Update 24.3.2017: RDA5802E based modules are also compatible.

Update 25.12.2013: SW now supports playing audio CDs as well (via IDE64)

Listen to your favourite radio stations on your Commodore.

You can get these RDA5807 based FM Radio modules from Ebay etc. with ~5 Euros.

There are at least two different modules available - one with RDA5807SP chip and one with RDA5807P.

Both of these seem to be working. The one with RDA5807P is a bit smaller than the one with RDA5807SP but it lacks the power LED... easy enough to add your own, though.

So, If choosing the RDAx -module (recommended) - try to find a RDA5807 or RDA5802 -based modules with the stereo jack and 5V <--> 3V level shifter includes.

Modules shown below work without any additional components.

This module looks like it should also work out of the box (I haven't tested it, though). It has RDA5807 module on board:

https://www.seeedstudio.com/Grove-I2C-FM-Receiver-v1-1.html


The bare RDA5807 module (without level shifter and stereo jack) shown below. These are the ones currently (12.8.2020) being sold on Ebay etc.

That module will require you to add your own level shifter (5V <--> 3V) for the I2C bus as well as the audio connector, of course.


Note, 5V tolerant RDA5807 / RDA5802 -modules are currently (21.9.2018) not that easily available.

I've added initial support for TEA5767 -modules which are available (ebay etc.)

The module is shown below (top left corned of the plastic case - next to DS3231 RTC)

TEA5767

It already has all the components you really need.

Connecting this to Commodore 64 User port is done simply like this:

Starting from version 2.4 also cassette port may be used:

Si4702/Si4703 -module requires also additional RESET-line.

Currently only user port connection (fixed pins) is supported.

Also, note that this is a 3.3V device - so, you should use level shifters

between C64 user port pins and IO pins of this device.

See User port pinout, for example, from here:

Commodore 64 User port pinout

It seems to be that separate pullup resistors for I2C DAT/CLK -lines are not needed

and module already has resistors for this. Seems to be working just as well with or without

additional pullups.

You propably want to attach an antenna ( ~96cm long wire should be just fine) to the antenna pad.

The module has a 3.5mm stereo audio connector to pass the audio to headphones / active speakers / your monitor's audio input connector.

Here is the module wired (experimentally) to C64 user port:

Some pictures of the module put into plastic enclosure with required connectors and power switch.

... The hole in the box cover is so that you can see the LED being lit..

Here is another one attached to my C64 Tower.

These modules are actually small enough to be easily fitted inside C64 case if you don't use user port for anything.

Comments / improvement ideas are very much appreciated. I guess nobody wants to fry their

precious C=64... So, if you brick your computer doing this I deny any responsibility :)

The SW part:

There are three different ways to control the chip via I2C-bus:

a) Address 0x60 (TEA5767 compatible mode)

b) Address 0x10 (sequential access / RDA5800 mode)

c) Address 0x11 (Random access / RDA5807 mode)

TEA5767 compatible way is the most simple way. However this doesn't make it possible to

Alter volume, set Bass Boost etc. I haven't really looked into the sequential access mode.

This SW uses Random access mode since that should enable all the controls supported by the chip.

Below is a screen shot of the SW v2.0

The SW is written in C and compiled using CC65 compiler.

Check the readme in the zip file. That and picture above should give a pretty good idea of the features included.

LINKS:

v.0.3 FM-radio compiled for C128 (Starting from v2.2 C128 version is included)

http://www.particles.org/particlesbbs/projects/

TODO:

- Scanning with TEA5767 may have some problems sometimes - to be checked

- There seems to be some current leak from the PB0 and PB1 when device is powered off (VCC disconnected). You can see the LED being weakly lit in the module... Perhaps use and ON-ON -switch so that when switch is set to power disabled state the VCC of the module is grounded through a resistor ???