2023-06-06 08:41 AM
//3. Read single byte from a register
uint8_t NRF24_read_register(uint8_t reg)
{
uint8_t spiBuf[3];
uint8_t retData;
//Put CSN low
NRF24_csn(0);
//Transmit register address
spiBuf[0] = reg&0x1F;
HAL_SPI_Transmit(&nrf24_hspi, spiBuf, 1, 100);
// HAL_SPI_Transmi_DMA(&nrf24_hspi, spiBuf, 1);
//Receive data
HAL_SPI_Receive(&nrf24_hspi, &spiBuf[1], 1, 100);
// HAL_SPI_Receive_DMA(&nrf24_hspi, &spiBuf[1], 1);
retData = spiBuf[1];
//Bring CSN high
NRF24_csn(1);
return retData;
}
//4. Read multiple bytes register
void NRF24_read_registerN(uint8_t reg, uint8_t *buf, uint8_t len)
{
uint8_t spiBuf[3];
//Put CSN low
NRF24_csn(0);
//Transmit register address
spiBuf[0] = reg&0x1F;
//spiStatus = NRF24_SPI_Write(spiBuf, 1);
HAL_SPI_Transmit(&nrf24_hspi, spiBuf, 1, 100);
// HAL_SPI_Transmi_DMA(&nrf24_hspi, spiBuf, 1);
//Receive data
HAL_SPI_Receive(&nrf24_hspi, buf, len, 100);
HAL_SPI_Receive_DMA(&nrf24_hspi, buf, len);
//Bring CSN high
NRF24_csn(1);
}
//5. Write single byte register
void NRF24_write_register(uint8_t reg, uint8_t value)
{
uint8_t spiBuf[3];
//Put CSN low
NRF24_csn(0);
//Transmit register address and data
spiBuf[0] = reg|0x20;
spiBuf[1] = value;
HAL_SPI_Transmit(&nrf24_hspi, spiBuf, 2, 100);
//HAL_SPI_Transmit_DMA(&nrf24_hspi, spiBuf, 2);
//Bring CSN high
NRF24_csn(1);
}
//6. Write multipl bytes register
void NRF24_write_registerN(uint8_t reg, const uint8_t* buf, uint8_t len)
{
uint8_t spiBuf[3];
//Put CSN low
NRF24_csn(0);
//Transmit register address and data
spiBuf[0] = reg|0x20;
HAL_SPI_Transmit(&nrf24_hspi, spiBuf, 1, 100);
//HAL_SPI_Transmit_DMA(&nrf24_hspi, spiBuf, 1);
HAL_SPI_Transmit(&nrf24_hspi, (uint8_t*)buf, len, 100);
//HAL_SPI_Transmit_DMA(&nrf24_hspi, (uint8_t*)buf, len);
//Bring CSN high
NRF24_csn(1);
}