Here I uploaded Arduino sketch for Si4720 FM transceiver.
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.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.