Removed_REF_marker
DiSlord 5 years ago committed by erikkaashoek
parent 328366777f
commit 0ffd8ba6c8

@ -68,7 +68,7 @@
//#define ADF_SPI_SPEED SPI_BR_DIV32
#define ADF_SPI_SPEED SPI_BR_DIV2
#define PE_SPI_SPEED SPI_BR_DIV32
#define PE_SPI_SPEED SPI_BR_DIV2
static uint32_t old_spi_settings;
#else
@ -148,7 +148,7 @@ static uint8_t shiftIn(void)
#ifdef USE_HARDWARE_SPI_MODE
// while (SPI_TX_IS_NOT_EMPTY(SI4432_SPI));
SPI_WRITE_8BIT(SI4432_SPI, 0xFF);
while (SPI_IS_BUSY(SI4432_SPI) || SPI_RX_IS_EMPTY(SI4432_SPI)) ; // drop rx and wait tx
while (SPI_RX_IS_EMPTY(SI4432_SPI)) ; // drop rx and wait tx
return SPI_READ_8BIT(SI4432_SPI);
#else
uint32_t value = 0;
@ -170,17 +170,10 @@ uint32_t SI4432_offset_delay = 1500;
//------------PE4302 -----------------------------------------------
#ifdef __PE4302__
// Comment out this define to use parallel mode PE4302
#define PE4302_en 10
void PE4302_init(void) {
CS_PE_LOW;
}
#define PE4302_DELAY 100
static unsigned char old_attenuation = 255;
bool PE4302_Write_Byte(unsigned char DATA )
{
@ -191,15 +184,18 @@ bool PE4302_Write_Byte(unsigned char DATA )
set_SPI_mode(SPI_MODE_SI);
if (SI4432_SPI_SPEED != PE_SPI_SPEED)
SPI_BR_SET(SI4432_SPI, PE_SPI_SPEED);
#if 1
SPI_WRITE_8BIT(SI4432_SPI, DATA);
while (SPI_IS_BUSY(SI4432_SPI));
#else
shiftOut(DATA);
#endif
CS_PE_HIGH;
CS_PE_LOW;
if (SI4432_SPI_SPEED != PE_SPI_SPEED)
SPI_BR_SET(SI4432_SPI, SI4432_SPI_SPEED);
return true;
}
#endif
//------------------------------- ADF4351 -------------------------------------
@ -281,10 +277,18 @@ void ADF4351_WriteRegister32(int channel, const uint32_t value)
// Select chip
CS_ADF_LOW(ADF4351_LE[channel]);
// Send 32 bit register
#if 1
SPI_WRITE_8BIT(SI4432_SPI, (value >> 24));
SPI_WRITE_8BIT(SI4432_SPI, (value >> 16));
SPI_WRITE_8BIT(SI4432_SPI, (value >> 8));
SPI_WRITE_8BIT(SI4432_SPI, (value >> 0));
while (SPI_IS_BUSY(SI4432_SPI)); // drop rx and wait tx
#else
shiftOut((value >> 24) & 0xFF);
shiftOut((value >> 16) & 0xFF);
shiftOut((value >> 8) & 0xFF);
shiftOut((value >> 0) & 0xFF);
#endif
// unselect
CS_ADF_HIGH(ADF4351_LE[channel]);
old_registers[value & 0x07] = registers[value & 0x07];
@ -568,15 +572,7 @@ static si446x_state_t SI4463_get_state(void);
static void SI4463_set_state(si446x_state_t);
#define SI4463_READ_CTS (palReadLine(LINE_RX_CTS))
static int SI4463_wait_for_cts(void)
{
while (!SI4463_READ_CTS) { //CTS is read through GPIO
// chThdSleepMicroseconds(100);
my_microsecond_delay(1);
}
return 1;
}
#define SI4463_WAIT_CTS while (!SI4463_READ_CTS);
#if 0 // not used
static void SI4463_write_byte(uint8_t ADR, uint8_t DATA)
@ -605,15 +601,10 @@ static uint8_t SI4463_read_byte( uint8_t ADR )
{
uint8_t DATA ;
set_SPI_mode(SPI_MODE_SI);
// SPI_BR_SET(SI4432_SPI, SI4432_SPI_SPEED);
// __disable_irq();
SI_CS_LOW;
shiftOut( ADR );
DATA = shiftIn();
SI_CS_HIGH;
// __enable_irq();
return DATA ;
}
@ -648,11 +639,7 @@ void SI4463_do_api(void* data, uint8_t len, void* out, uint8_t outLen)
{
uint8_t *ptr = (uint8_t *)data;
set_SPI_mode(SPI_MODE_SI);
//#define SHORT_DELAY my_microsecond_delay(1)
//#define SHORT_DELAY
while (!SI4463_READ_CTS);// {SHORT_DELAY; } // Wait for CTS
SI4463_WAIT_CTS; // Wait for CTS
SI_CS_LOW;
#if 1 // Inline transfer
while (len--){
@ -667,8 +654,10 @@ void SI4463_do_api(void* data, uint8_t len, void* out, uint8_t outLen)
SI_CS_HIGH;
if(out == NULL) return; // If we have an output buffer then read command response into it
while(SPI_RX_IS_NOT_EMPTY(SI4432_SPI)) (void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes
while (!SI4463_READ_CTS);// { SHORT_DELAY; } // Wait for CTS
while (SPI_RX_IS_NOT_EMPTY(SI4432_SPI))
(void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes from SPI RX buffer
SI4463_WAIT_CTS; // Wait for CTS
SI_CS_LOW;
#if 1
@ -1168,6 +1157,7 @@ static bool buf_read = false;
static char Si446x_readRSSI(void){
char rssi;
SI4463_WAIT_CTS; // Wait for CTS
#ifdef __USE_FFR_FOR_RSSI__
SI_CS_LOW;
SPI_WRITE_8BIT(SI4432_SPI, SI446X_CMD_ID_START_RX);
@ -1188,11 +1178,13 @@ static char Si446x_readRSSI(void){
while (SPI_IS_BUSY(SI4432_SPI)) ; // wait tx
SI_CS_HIGH;
while (!SI4463_READ_CTS); // Wait for CTS
while (SPI_RX_IS_NOT_EMPTY(SI4432_SPI))
(void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes
SI4463_WAIT_CTS; // Wait for CTS
SI_CS_LOW;
SPI_WRITE_8BIT(SI4432_SPI, SI446X_CMD_READ_CMD_BUFF); // read answer
while (SPI_IS_BUSY(SI4432_SPI)) ; // wait tx
SPI_READ_16BIT(SI4432_SPI); // Drop SI446X_CMD_GET_MODEM_STATUS read and SI446X_CMD_READ_CMD_BUFF read
SPI_READ_8BIT(SI4432_SPI); // Drop SI446X_CMD_READ_CMD_BUFF read
SPI_WRITE_16BIT(SI4432_SPI, 0xFFFF); // begin read 2 bytes
SPI_WRITE_16BIT(SI4432_SPI, 0xFFFF); // next read 2 bytes
while (SPI_IS_BUSY(SI4432_SPI)); // wait tx
@ -1239,9 +1231,10 @@ void SI446x_Fill(int s, int start)
systime_t measure = chVTGetSystemTimeX();
int i = start;
// For SI446X_CMD_READ_FRR_A need drop Rx buffer
#if 0
SI4463_WAIT_CTS; // Wait for CTS
while(SPI_RX_IS_NOT_EMPTY(SI4432_SPI)) (void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes
#if 1
while (!SI4463_READ_CTS); // Wait for CTS
#endif
__disable_irq();
do {
@ -1327,8 +1320,7 @@ void SI4432_Listen(int s)
uint8_t max = 0;
uint16_t count = 0;
operation_requested = OP_NONE;
while(SPI_RX_IS_NOT_EMPTY(SI4432_SPI)) (void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes
while (!SI4463_READ_CTS); // Wait for CTS
// SI4463_WAIT_CTS; // Wait for CTS
do {
uint8_t v = Si446x_readRSSI();
if (max < v) // Peak
@ -1359,8 +1351,7 @@ int16_t Si446x_RSSI(void)
int i = setting.repeat;
int32_t RSSI_RAW = 0;
while(SPI_RX_IS_NOT_EMPTY(SI4432_SPI)) (void)SPI_READ_8BIT(SI4432_SPI); // Remove lingering bytes
while (!SI4463_READ_CTS); // Wait for CTS
// SI4463_WAIT_CTS; // Wait for CTS
do{
// if (MODE_INPUT(setting.mode) && RSSI_R
#define SAMPLE_COUNT 1

Loading…
Cancel
Save

Powered by TurnKey Linux.