Src/OnChipDevices/Spi.c
@@ -20,7 +20,14 @@
    /* Write to SPIx CR1 */
    SPIx->CR1 = tmpreg;
}
void Uwb_CS_di()
{
     if(!HAL_GPIO_ReadPin( RADIO_NSS_GPIO_Port, RADIO_NSS_Pin))
     {
        HAL_GPIO_WritePin( RADIO_NSS_GPIO_Port, RADIO_NSS_Pin,GPIO_PIN_SET);
         printf("LORA_cs_error\r\n");
     }
}
/*! ------------------------------------------------------------------------------------------------------------------
 * Function: writetospi()
 *
@@ -32,9 +39,9 @@
int writetospi
(
    uint16_t       headerLength,
     uint8_t *headerBuffer,
    uint8_t *headerBuffer,
    uint32_t       bodylength,
     uint8_t *bodyBuffer
    uint8_t *bodyBuffer
)
{
@@ -43,33 +50,30 @@
    decaIrqStatus_t  stat ;
//    stat = decamutexon() ;
Uwb_CS_di();
    SPIx_CS_GPIO->BRR = SPIx_CS;
//   delay_ms(1);
   tt=HAL_SPI_Transmit(&hspi1,headerBuffer,headerLength,10);
   tt=HAL_SPI_Transmit(&hspi1,bodyBuffer,bodylength,10);
//   tt=HAL_SPI_Transmit(&hspi1,headerBuffer,headerLength,10);
//   tt=HAL_SPI_Transmit(&hspi1,bodyBuffer,bodylength,10);
//      delay_ms(1);
//    for(i = 0; i < headerLength; i++)
//    {
//        SPIx->DR = headerBuffer[i];
    for(i = 0; i < headerLength; i++)
    {
        SPIx->DR= headerBuffer[i];
        while ((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
        SPIx->DR;
//        while ((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
    }
//        SPIx->DR ;
//    }
//    for(i = 0; i < bodylength; i++)
//    {
//        SPIx->DR = bodyBuffer[i];
//        while((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
//        SPIx->DR ;
//    }
    for(i = 0; i < bodylength; i++)
    {
        SPIx->DR = bodyBuffer[i];
        while ((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
        SPIx->DR ;
    }
    SPIx_CS_GPIO->BSRR = SPIx_CS;
  //  decamutexoff(stat) ;
    //  decamutexoff(stat) ;
    return 0;
} // end writetospi()
@@ -86,7 +90,7 @@
int readfromspi
(
    uint16_t       headerLength,
     uint8_t *headerBuffer,
    uint8_t *headerBuffer,
    uint32_t       readlength,
    uint8_t       *readBuffer
)
@@ -96,35 +100,35 @@
    decaIrqStatus_t  stat ;
   // stat = decamutexon() ;
    // stat = decamutexon() ;
    /* Wait for SPIx Tx buffer empty */
    //while (port_SPIx_busy_sending());
Uwb_CS_di();
    SPIx_CS_GPIO->BRR = SPIx_CS;
   HAL_SPI_Transmit(&hspi1,headerBuffer,headerLength,10);
   HAL_SPI_Receive(&hspi1,readBuffer,readlength,10);
//    for(i = 0; i < headerLength; i++)
//    {
//        SPIx->DR = headerBuffer[i];
//   HAL_SPI_Transmit(&hspi1,headerBuffer,headerLength,10);
//   HAL_SPI_Receive(&hspi1,readBuffer,readlength,10);
    for(i = 0; i < headerLength; i++)
    {
        SPIx->DR = headerBuffer[i];
//        while((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
        while((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
//        readBuffer[0] = SPIx->DR ; // Dummy read as we write the header
//    }
        readBuffer[0] = SPIx->DR ; // Dummy read as we write the header
    }
//    for(i = 0; i < readlength; i++)
//    {
//        SPIx->DR = 0;  // Dummy write as we read the message body
    for(i = 0; i < readlength; i++)
    {
        SPIx->DR = 0;  // Dummy write as we read the message body
//        while((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
        while((SPIx->SR & SPI_FLAG_RXNE) == (uint16_t)RESET);
//        readBuffer[i] = SPIx->DR ;//port_SPIx_receive_data(); //this clears RXNE bit
//    }
        readBuffer[i] = SPIx->DR ;//port_SPIx_receive_data(); //this clears RXNE bit
    }
    SPIx_CS_GPIO->BSRR = SPIx_CS;
   // decamutexoff(stat) ;
    // decamutexoff(stat) ;
    return 0;
} // end readfromspi()