How to make s2lp go to TX MODE
Hi
I tried to develop my own code for s2lp on NUCLEO-L476RG
my setup include:
NUCLEO-L476RG+s2lp FKI433v2 on top(RX working fine)
NUCLEO-L476RG+s2lp FKI433v2 on top(TX cant go to TX mode)
NUCLEO-L053R8+s2lp FKI433v2 on top(as a test for both RX and TX)
I was able to receive messages with the my code on the RX side the message was from the L053R to my L47RG
However when I Tried to send From TX L476RG it Wouldn't send Nor Got to TX mode
I know this because i saw the S2lp status Bit after I sent the TX Command it didn't go to TX MODE but Went to Ready only
The status Bits were(52 1)
I am using kiel V5 and did initialize with Cube MX
void FLUSH_FIFO(){
UARTBuf[21]=COMMAND_FLUSHRXFIFO ;
HAL_SPI_Transmit(&hspi1 , &UARTBuf[20],2,500);
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET);
HAL_Delay(50);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
UARTBuf[20]=0x80;
UARTBuf[21]=COMMAND_FLUSHTXFIFO ;
HAL_SPI_Transmit(&hspi1 , &UARTBuf[20],2,500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);}
void TX_MODE()
{UARTBuf[20]=0x80;
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
UARTBuf[0]=0x80;
UARTBuf[1]=COMMAND_TX ;
HAL_SPI_Transmit(&hspi1 , &UARTBuf[0],2,500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
}
void RX_MODE()
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
UARTBuf[0]=0x80;
UARTBuf[1]=COMMAND_RX ;
HAL_SPI_Transmit(&hspi1 , &UARTBuf[0],2,500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
}
void READY_MODE()
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
UARTBuf[0]=0x80;
UARTBuf[1]=COMMAND_READY ;
HAL_SPI_Transmit(&hspi1 , &UARTBuf[0],2,500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
}
void S2LPSpiWriteRegisters(uint8_t adress,uint8_t number, uint8_t *conetent)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
UARTBuf[0]=0x00;
UARTBuf[1]= adress;
UARTBuf[2]= conetent[0];
UARTBuf[3]= conetent[1];
UARTBuf[4]= conetent[2];
UARTBuf[5]= conetent[3];
UARTBuf[6]= conetent[4];
UARTBuf[7]= conetent[5];
UARTBuf[8]= conetent[6];
HAL_SPI_Transmit(&hspi1 , &UARTBuf[0],number+2,50);//mode
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
}
void S2LPSpiWriteRegisters1(uint8_t adress,uint8_t number, uint8_t *conetent)
{
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_RESET);
buffer1[0]=0x00;
buffer1[1]= adress;
HAL_SPI_Transmit(&hspi1 , &buffer1[0],2,50);//mode
HAL_SPI_Transmit(&hspi1 , &UARTBuf[0],178,500);//mode
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET);
}
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_SPI1_Init();
/* USER CODE BEGIN 2 */
uint8_t i=0;
HAL_GPIO_WritePin(SDN_GPIO_Port, SDN_Pin, GPIO_PIN_RESET);
HAL_Delay(50);
HAL_GPIO_WritePin(SDN_GPIO_Port, SDN_Pin, GPIO_PIN_SET);
HAL_Delay(50);
HAL_GPIO_WritePin(SDN_GPIO_Port, SDN_Pin, GPIO_PIN_RESET);//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
HAL_Delay(50);
READY_MODE();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
tmp[0] = 0x72; /* reg. SYNT3 (0x05) */
tmp[1] = 0x2A; /* reg. SYNT2 (0x06) */
tmp[2] = 0x3D; /* reg. SYNT1 (0x07) */
tmp[3] = 0x1B; /* reg. SYNT0 (0x08) */
tmp[4] = 0x2F; /* reg. IF_OFFSET_ANA (0x09) */
tmp[5] = 0xC2; /* reg. IF_OFFSET_DIG (0x0A) */
S2LPSpiWriteRegisters(0x05, 6, tmp);
tmp[0] = 0x92; /* reg. MOD4 (0x0E) */
tmp[1] = 0xA7; /* reg. MOD3 (0x0F) */
tmp[2] = 0x27; /* reg. MOD2 (0x10) */
S2LPSpiWriteRegisters(0x0E, 3, tmp);
tmp[0] = 0xA3; /* reg. MOD0 (0x12) */
tmp[1] = 0x13; /* reg. CHFLT (0x13) */
S2LPSpiWriteRegisters(0x12, 2, tmp);
tmp[0] = 0x55; /* reg. ANT_SELECT_CONF (0x1F) */
S2LPSpiWriteRegisters(0x1F, 1, tmp);
tmp[0] = 0x00; /* reg. PCKTCTRL3 (0x2E) */
tmp[1] = 0x01; /* reg. PCKTCTRL2 (0x2F) */
tmp[2] = 0x30; /* reg. PCKTCTRL1 (0x30) */
S2LPSpiWriteRegisters(0x2E, 3, tmp);
tmp[0] = 0x01; /* reg. PROTOCOL1 (0x3A) */
S2LPSpiWriteRegisters(0x3A, 1, tmp);
tmp[0] = 0x40; /* reg. FIFO_CONFIG3 (0x3C) */
tmp[1] = 0x40; /* reg. FIFO_CONFIG2 (0x3D) */
tmp[2] = 0x40; /* reg. FIFO_CONFIG1 (0x3E) */
tmp[3] = 0x40; /* reg. FIFO_CONFIG0 (0x3F) */
tmp[4] = 0x41; /* reg. PCKT_FLT_OPTIONS (0x40) */
S2LPSpiWriteRegisters(0x3C, 5, tmp);
tmp[0] = 0x1D; /* reg. PA_POWER8 (0x5A) */
S2LPSpiWriteRegisters(0x5A, 1, tmp);
tmp[0] = 0x07; /* reg. PA_POWER0 (0x62) */
tmp[1] = 0x01; /* reg. PA_CONFIG1 (0x63) */
S2LPSpiWriteRegisters(0x62, 2, tmp);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
TX_MODE();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SPIBuf_WRITE[0]=0x00;//reead
SPIBuf_WRITE[1]=0xff;// regester
SPIBuf_READ[0]=0x0;SPIBuf_READ[1]=0xcc;SPIBuf_READ[2]=0;SPIBuf_READ[3]=0;SPIBuf_READ[4]=0;SPIBuf_READ[5]=0;SPIBuf_READ[6]=0;SPIBuf_READ[7]=0;SPIBuf_READ[8]=0;
// SPIBuf_WRITE_REGESTER[0]=0x00;SPIBuf_WRITE_REGESTER[1]=0x3c;SPIBuf_WRITE_REGESTER[2]=0xff;SPIBuf_WRITE_REGESTER[3]=0xff;SPIBuf_WRITE_REGESTER[4]=0;SPIBuf_WRITE_REGESTER[5]=0;SPIBuf_WRITE_REGESTER[6]=0;SPIBuf_WRITE_REGESTER[7]=0;SPIBuf_WRITE_REGESTER[8]=0;
// HAL_GPIO_WritePin(SDN_GPIO_Port, SDN_Pin, GPIO_PIN_RESET);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
HAL_Delay(500);
for(i=0;i<=40;i++){
SPIBuf_READ[i]='0';
} i=0;
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi1, &SPIBuf_WRITE[0], &SPIBuf_READ[0], 18,1000);
HAL_Delay(500);
HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, GPIO_PIN_SET);
sprintf( buffer3, "\r\n RECIVED @ adress %x is = [%x %x %x %x %x %x %x %x %x ] \r\n",SPIBuf_WRITE[1],SPIBuf_READ[0],SPIBuf_READ[1],SPIBuf_READ[2],SPIBuf_READ[3],SPIBuf_READ[4],SPIBuf_READ[5],SPIBuf_READ[6],SPIBuf_READ[7],SPIBuf_READ[8]);
for(i=0;i<=strlen(buffer3);i++){
buffer1[i]=buffer3[i];
} i=0;
// sprintf( buffer3, "\r\n RECIVED is = [%c %c %c %c %c %c %c %c ] \r\n",UARTBuf[42],UARTBuf[43],UARTBuf[44],UARTBuf[45],UARTBuf[46],UARTBuf[47],UARTBuf[48],UARTBuf[49]);
HAL_UART_Transmit(&huart2,&buffer1[0],150,500);
// HAL_UART_Transmit(&huart2,&SPIBuf_READ[0],18,500);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FLUSH_FIFO();
//READY_MODE();
//TX_MODE();
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
/* USER CODE END 3 */
}
HT STMicroelectronics *****END OF FILE****/