Incredible integration of Si4720 enables very simple and stable FM transceiver by single chip!
Basic part is,
Receiver initialize and setting receiving frequency
i2c_write(RADIO,0x01,0b10010000,0b00000101);//receive boot up command, receiver, crystal enabled, analogoutput i2c_write4(RADIO,0x20,0x00,s_upper2,s_lower2,0x05);//receive set frequency
Transmitting initialization part:
i2c_write(RADIO,0x01,0xd2,0x50); i2c_write5(RADIO,0x12,0x00,0x21,0x01,0x1d,0x4c); //TX FM deviation to 75kHz i2c_write5(RADIO,0x12,0x00,0x21,0x04,0b00000010,0b01111111); //TX line level i2c_write5(RADIO,0x12,0x00,0x21,0x06,0x00,0x01); //TX pre-emphasis to 50us i2c_write5(RADIO,0x12,0x00,0x22,0x00,0x00,0x03); //TX limiter enable i2c_write5(RADIO,0x12,0x00,0x21,0x04,0x21,0x5E); i2c_write5(RADIO,0x12,0x00,0x00,0x01,0x00,0xC1); i2c_write5(RADIO,0x12,0x00,0x21,0x07,0x4a,0x38); i2c_write4(RADIO,0x31,0x00,0x00,0x78,0x00); i2c_write3(RADIO,0x30,0x00,s_upper2,s_lower2);
Default deviation is not 75kHz so we have to set it. Also the default de-emphasis time constant of receiver is Asia Europe (50us) but transmitter is 75us of US.
Both SSD1306 OLED and Si4720 are connected to Mega328P through I2C.
The chip KT0915 of the other DSP radio project has a bonus frequency range well covering avionics frequency (around up to 140MHz) and it is curious how the Si4720 covers the frequency band. Here I checked it..
The first one is the lower limit of transmitting. As is written in data sheet, the lower limit is 76MHz (I am not sure the 400kHz offset).
And the next one is the upper limit of transmitting. Also as the same as lower limit, it is up to 108 as in datasheet. Off-band data can be sent to Si4720 but it simply cease to operate outside.
Next is the receiving lower limit measurement. It was 64MHz. The frequency data below 64MHz can be sent but it simply not receive any signal.
And the result of receiving. I indeed expect bonus extra upper limit but,,,,,
is the upper limit of reception. Not so interesting at all...
So the summary is
|lower limit (MHz)||Upper limit (MHz)|
The data sheet of Si4720 says integrated crystal oscillator can be activated at booting, and relevant sample circuit can be found in the data sheet.
As you see, one of the terminal of crystal as shown inset of figure is not written. One side is RCLK, which is clear, but the other is where!!!!!
The answer is,,,,
It's GPO3. In the sample circuit, GPO3 of Si4720 is connected to GND but cut it and connect one of the additional 32.768 kHz crystal circuit and activate it on booting, it starts oscillate. I don't know why but inside Si4720 data sheet, this fact is not described.. why?
Here is the whole schematic. Actually nothing to hide. Si4720 receives I2C commend from ATmega328P with Arduino bootloader and also tiny OLED (64x32 pixels) is connected through I2C bus. One rotary encoder is added for the purpose of frequency control.
Actual operation can be found in the following movie...