Hello guys,
I am trying to read NFC cards with the NXP MFRC522 chip. I already used the same module with some Atmel and ST microcontrollers. But with the Renesas SK-S7G2,
I'm having a hard time. Has anyone implemented it yet?
I think my problem is with SPI functions.
Any suggestion?
#include "spi_common.h"
volatile uint8_t spi_done = 0;
ssp_err_t spi_open() {
return (g_spi_rfid.p_api->open(g_spi_rfid.p_ctrl, g_spi_rfid.p_cfg));
}
ssp_err_t spi_close() {
return (g_spi_rfid.p_api->close(g_spi_rfid.p_ctrl));
}
ssp_err_t spi_read(void *read_buffer, uint32_t number_bytes, spi_bit_width_t bit_width) {
return (g_spi_rfid.p_api->read(g_spi_rfid.p_ctrl, &read_buffer, number_bytes, bit_width));
}
ssp_err_t spi_write(void *write_buffer, uint32_t number_bytes, spi_bit_width_t bit_width) {
return (g_spi_rfid.p_api->write(g_spi_rfid.p_ctrl, &write_buffer, number_bytes, bit_width));
}
ssp_err_t spi_write_read(void *read_buffer, void *write_buffer, uint32_t number_bytes, spi_bit_width_t bit_width) {
return (g_spi_rfid.p_api->writeRead(g_spi_rfid.p_ctrl, &read_buffer, &write_buffer, number_bytes, bit_width));
}
ssp_err_t spi_write_register(uint8_t reg, uint8_t value) {
uint8_t reg_write[] = {reg, value};
ssp_err_t err = SSP_SUCCESS;
err = spi_write((void *)reg_write, 2, SPI_BIT_WIDTH_8_BITS);
while (spi_done == 0);
spi_done = 0;
return err;
}
ssp_err_t spi_read_register(uint8_t reg, uint8_t *value) {
uint8_t reg_read[] = {reg, 0x00};
ssp_err_t err = SSP_SUCCESS;
err = spi_write(reg_read, 2, SPI_BIT_WIDTH_8_BITS);
while (spi_done == 0);
spi_done = 0;
err |= spi_read(&value, 1, SPI_BIT_WIDTH_8_BITS);
while (spi_done == 0);
spi_done = 0;
return err;
}
// A callback function, called by SPI interrupts
void spi_callback (spi_callback_args_t * p_args) {
UNUSED(p_args);
spi_done = 1;
}