Hello
I’d like to know how to put on the stand or stand by the radio on the VMA11 shield . Because there is a radioON but no RadioOFF.
Thank you
Hello
I’d like to know how to put on the stand or stand by the radio on the VMA11 shield . Because there is a radioON but no RadioOFF.
Thank you
It is explained in the datasheet for the 470X chip (4702=FMradio, 4703=FMradio with RDS).
Simplified, the chip requires the following actions:
1/ power
2/ establish communication protocol on I2C
From then, you can read and write registers over I2C.
The POWERCFG register (0x02) contains a ENABLE (0x02:0) and a ‘DISABLE’ (0x02:6) bit.
Simplified, on start, both bits are 0.
To start the radio working, you set ‘ENABLE’ to ‘1’ . This iw what is done in the ‘RadioOn()’ function of the example.
If you want to stop the radio (in a software controlled manner), the you can set ‘DISABLE’ to ‘1’. There is no such function implemented.
If you are interested in many more possibilities of this chip, see the datasheet [DATASHEET]
At the end of the datasheet you’ll find links to further ressources (Application notes).
Thank DirkH
Thank you for that answer
Unfortunately I don’t know the I2S protocol well and I don’t see how to change a bit on this function simply.
How to send us just a bit 1 on the POWERCFG register
My goal is to stop the radio to earn energy
thank you in advance
Register 0x02 = ‘POWERCFG’
ENABLE = bit 0 of this register
DISABLE =bit 6 of this register
On reset, both ENABLE and DISABLE bits are 0.
You have to set ENABLE=1 to ask the chip to start.
readRegisters(); //Copy the current register values into the software variables
si4703_registers[POWERCFG] = si4703_registers[POWERCFG] | 0x0001; //mask in the ENSABLE bit (bit 0 of register 0x02)
updateRegisters(); //copy the variables to the chip
If you want to stop the radio: set DISABLE=1 to ask the chip to stop.
You should not touch the ENABLE bit.
readRegisters(); //Copy the current register values into the software variables
si4703_registers[POWERCFG] = si4703_registers[POWERCFG] | 0x0040; //mask in the DISABLE bit
updateRegisters(); //copy the variables to the chip
When the chip has finished the powerdown cycle, both bits will be reset to 0
You should wait and check the status, e.g. in a loop:
while(true)
{
readRegisters(); //get fresh register data
if (si4703_registers[POWERCFG] & 0x0041 == 0) break; //if both bits are 0 then break out of the infinite loop
}
The chip is now ‘off’, whilst keeping all settings (as long as power is applied).
To start the chip up again, set ENABLE to 1:
readRegisters(); //Copy the current register values into the software variables
si4703_registers[POWERCFG] = si4703_registers[POWERCFG] | 0x0001; //mask in the ENSABLE bit (bit 0 of register 0x02)
updateRegisters(); //copy the variables to the chip
See data sheet:
And application note AN230 - par 2.1.2 and par 3.2.1
By the way, I guess it’s a typo, but the 2-wire protocol is I2C, not I2S (which is a completely different protocol)
A new category was created for the VMA11, please post there.