Procházet zdrojové kódy

move CSpin control to SpiManager class

Juraj Ďuďák před 2 roky
rodič
revize
5850ba44a2
2 změnil soubory, kde provedl 8 přidání a 46 odebrání
  1. 8 41
      src/nrf24.cpp
  2. 0 5
      src/nrf24.h

+ 8 - 41
src/nrf24.cpp

@@ -88,12 +88,7 @@ uint8_t Nrf24L01::init() {
 //   reg - number of register to read
 // return: value of register
 uint8_t Nrf24L01::readReg(uint8_t reg) {
-	uint8_t value;
-	PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
-	value = _spiManager->SPI_ReadReg(reg & nRF24_MASK_REG_MAP);
-	PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
-
-	return value;
+	return _spiManager->SPI_ReadReg(reg & nRF24_MASK_REG_MAP);
 }
 
 // Write a new value to register
@@ -104,7 +99,7 @@ void Nrf24L01::writeReg(uint8_t reg, uint8_t value) {
 	PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
 	if (reg < nRF24_CMD_W_REGISTER) {
 		// This is a register access
-		_spiManager->SPI_WritedReg((nRF24_CMD_W_REGISTER | (reg & nRF24_MASK_REG_MAP)), value);
+		_spiManager->SPI_WritedRegNoCSN((nRF24_CMD_W_REGISTER | (reg & nRF24_MASK_REG_MAP)), value);
 
 	} else {
 		// This is a single byte command or future command/register
@@ -118,27 +113,6 @@ void Nrf24L01::writeReg(uint8_t reg, uint8_t value) {
 	PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
 }
 
-// Read a multi-byte register
-// input:
-//   reg - number of register to read
-//   pBuf - pointer to the buffer for register data
-//   count - number of bytes to read
-void Nrf24L01::readMBReg(uint8_t reg, uint8_t *pBuf, uint8_t count) {
-	PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
-	_spiManager->SPI_ReadRegMulti(reg, pBuf, nRF24_CMD_NOP, count);
-	PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
-}
-
-// Write a multi-byte register
-// input:
-//   reg - number of register to write
-//   pBuf - pointer to the buffer with data to write
-//   count - number of bytes to write
-void Nrf24L01::writeMBReg(uint8_t reg, uint8_t *pBuf, uint8_t count) {
-	PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
-	_spiManager->SPI_WriteRegMulti(reg, pBuf, count);
-	PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
-}
 
 //   1 - nRF24L01 is online and responding
 //   0 - received sequence differs from original
@@ -155,8 +129,8 @@ uint8_t Nrf24L01::doCheck(void) {
 	uint8_t *ptr = (uint8_t *)nRF24_TEST_ADDR;
 
 	// Write test TX address and read TX_ADDR register
-	writeMBReg(nRF24_CMD_W_REGISTER | nRF24_REG_TX_ADDR, ptr, 5);
-	readMBReg(nRF24_CMD_R_REGISTER | nRF24_REG_TX_ADDR, rxbuf, 5);
+	_spiManager->SPI_WriteRegMulti(nRF24_CMD_W_REGISTER | nRF24_REG_TX_ADDR, ptr, 5);
+	_spiManager->SPI_ReadRegMulti(nRF24_CMD_R_REGISTER | nRF24_REG_TX_ADDR, rxbuf, nRF24_CMD_NOP, 5);
 
 	// Compare buffers, return error on first mismatch
 	for (i = 0; i < 5; i++) {
@@ -466,17 +440,12 @@ void Nrf24L01::clearIRQFlags(void) {
 //   pBuf - pointer to the buffer with payload data
 //   length - payload length in bytes
 void Nrf24L01::writePayload(uint8_t *pBuf, uint8_t length) {
-	writeMBReg(nRF24_CMD_W_TX_PAYLOAD, pBuf, length);
+	_spiManager->SPI_WriteRegMulti(nRF24_CMD_W_TX_PAYLOAD, pBuf, length);
+
 }
 
 uint8_t Nrf24L01::getRxDplPayloadWidth() {
-	uint8_t value;
-
-	PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
-	value = _spiManager->SPI_ReadReg(nRF24_CMD_R_RX_PL_WID);
-	PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
-
-	return value;
+	return _spiManager->SPI_ReadReg(nRF24_CMD_R_RX_PL_WID);
 }
 
 nRF24_RXResult Nrf24L01::readPayloadGeneric(uint8_t *pBuf, uint8_t *length, uint8_t dpl) {
@@ -499,7 +468,7 @@ nRF24_RXResult Nrf24L01::readPayloadGeneric(uint8_t *pBuf, uint8_t *length, uint
 
 		// Read a payload from the RX FIFO
 		if (*length) {
-			readMBReg(nRF24_CMD_R_RX_PAYLOAD, pBuf, *length);
+			_spiManager->SPI_ReadRegMulti(nRF24_CMD_R_RX_PAYLOAD, pBuf, nRF24_CMD_NOP, *length);
 		}
 
 		return ((nRF24_RXResult)pipe);
@@ -531,9 +500,7 @@ uint8_t Nrf24L01::getFeatures() {
 }
 
 void Nrf24L01::activateFeatures() {
-	PIN_LOW(_spiManager->_csn_port, _spiManager->_csn_pin);
 	_spiManager->SPI_WritedReg(nRF24_CMD_ACTIVATE, 0x73);
-    PIN_HIGH(_spiManager->_csn_port, _spiManager->_csn_pin);
 }
 
 void Nrf24L01::writeAckPayload(nRF24_RXResult pipe, char *payload, uint8_t length) {

+ 0 - 5
src/nrf24.h

@@ -9,9 +9,6 @@
 #define nRF24_WAIT_TIMEOUT         (uint32_t)0x000FFFFF
 
 
-#define PIN_LOW(PORT,PIN)   {PORT->BRR = (uint32_t)PIN;}
-#define PIN_HIGH(PORT,PIN)  {PORT->BSRR = (uint32_t)PIN;}
-
 // Fake address to test transceiver presence (5 bytes long)
 #define nRF24_TEST_ADDR            "nRF24"
 
@@ -229,8 +226,6 @@ private:
 
     uint8_t readReg(uint8_t reg);
     void writeReg(uint8_t reg, uint8_t value);
-    void readMBReg(uint8_t reg, uint8_t *pBuf, uint8_t count);
-    void writeMBReg(uint8_t reg, uint8_t *pBuf, uint8_t count);
 
     nRF24_RXResult readPayloadGeneric(uint8_t *pBuf, uint8_t *length, uint8_t dpl);
     uint8_t getRxDplPayloadWidth();