04-28-2008, 07:16 AM
can anyone please provide me with detailed datasheet of Si4701.. I wanted the control words that it uses for SPI data transfer.
In the code provided with FM radio,
#define CONTROL_WRITE(addr, data8) { \
WAIT_SPI; \
SEN_bar = OFF; \
SPIDAT = 0x60 | (addr >> 1); \
WAIT_SPI; \
SPIDAT = (data8.c[MSB] >> 1) | (addr << 7); \
WAIT_SPI; \
SPIDAT = (data8.c[LSB] >> 1) | (data8.c[MSB] << 7); \
WAIT_SPI; \
SPIDAT = (data8.c[LSB] << 7); \
WAIT_SPI; \
SEN_bar = ON; \
SPIDAT = 0xFF; }
// Control read from Si4701
#define CONTROL_READ(addr, data8) { \
WAIT_SPI; \
SEN_bar = OFF; \
SPIDAT = 0x70 | (addr >> 1); \
WAIT_SPI; \
SPIDAT = 0x7F | (addr << 7); \
WAIT_SPI; \
data8.c[MSB] = (SPIDAT << 1); \
SPIDAT = 0xFF; \
WAIT_SPI; \
data8.c[MSB] |= (SPIDAT >> 7); \
data8.c[LSB] = (SPIDAT << 1); \
SPIDAT = 0xFF; \
WAIT_SPI; \
data8.c[LSB] |= (SPIDAT >> 7); \
SEN_bar = ON; \
SPIDAT = 0xFF; }
i am having trouble understanding this operation....
In the code provided with FM radio,
#define CONTROL_WRITE(addr, data8) { \
WAIT_SPI; \
SEN_bar = OFF; \
SPIDAT = 0x60 | (addr >> 1); \
WAIT_SPI; \
SPIDAT = (data8.c[MSB] >> 1) | (addr << 7); \
WAIT_SPI; \
SPIDAT = (data8.c[LSB] >> 1) | (data8.c[MSB] << 7); \
WAIT_SPI; \
SPIDAT = (data8.c[LSB] << 7); \
WAIT_SPI; \
SEN_bar = ON; \
SPIDAT = 0xFF; }
// Control read from Si4701
#define CONTROL_READ(addr, data8) { \
WAIT_SPI; \
SEN_bar = OFF; \
SPIDAT = 0x70 | (addr >> 1); \
WAIT_SPI; \
SPIDAT = 0x7F | (addr << 7); \
WAIT_SPI; \
data8.c[MSB] = (SPIDAT << 1); \
SPIDAT = 0xFF; \
WAIT_SPI; \
data8.c[MSB] |= (SPIDAT >> 7); \
data8.c[LSB] = (SPIDAT << 1); \
SPIDAT = 0xFF; \
WAIT_SPI; \
data8.c[LSB] |= (SPIDAT >> 7); \
SEN_bar = ON; \
SPIDAT = 0xFF; }
i am having trouble understanding this operation....