Hi,
I Implement void WriteRegister and ReadRegister SPI interface with mfrc532 but some time right,some time wrong.
Some time i write value in a regsister and i read again it is same value, some time it not same value @@
I have tried implement many different ways of reading and writing function but not success.
m_rx_buf of nrf52 recived unexpected data.
static uint8_t m_rx_buf[1]; void PCD_WriteRegister(byte reg, byte value){ nrf_gpio_pin_write(SPI_SS_PIN,0); m_tx_buf[0] = reg &0x7E; m_tx_buf[1] = value; memset(m_rx_buf, 0, m_length); spi_xfer_done = false; nrf_drv_spi_transfer(&spi,&m_tx_buf[0], 2, NULL, 0); while (!spi_xfer_done) { __WFE(); } NRF_LOG_FLUSH(); nrf_gpio_pin_write(SPI_SS_PIN,1); } byte PCD_ReadRegister(byte reg){ nrf_gpio_pin_write(SPI_SS_PIN,0); m_tx_buf[0] = (0x80 | (reg & 0x7E)); memset(m_rx_buf, 0, m_length); spi_xfer_done = false; nrf_drv_spi_transfer(&spi,&m_tx_buf[0], 1, m_rx_buf, 1); while (!spi_xfer_done) { __WFE(); } memset(m_rx_buf, 0, m_length); spi_xfer_done = false; uint8_t _reg = 0x00; nrf_drv_spi_transfer(&spi,&_reg, 1, m_rx_buf, 1); while (!spi_xfer_done) { __WFE(); } NRF_LOG_FLUSH(); nrf_gpio_pin_write(SPI_SS_PIN,1); return m_rx_buf[0]; }
Write:
I useing SDK 16. NRF52832.