在UART接口中初始化MFRC522 RFID芯片

时间:2016-07-04 11:39:34

标签: c arduino rfid mifare nxp-microcontroller

我正在使用this arduino库来初始化&与我的MFRC522芯片通信,库最初使用SPI接口在MCU和MCU之间进行通信。 RC522。当我在SPI接口中使用它时,每件事情都可以。正确操作。现在我正在尝试将接口更改为UART模式。根据恩智浦的MFRC522数据表,我设置了UART模式的引脚状态。阅读&写作序列& UART成帧地址基于数据表。此外,当我读取RC522的 VersionReg 寄存器时,它成功地返回了我的0x92,这意味着它是V 2.0,但它无法检测到RFID标签的存在。 SPI和Linux之间是否还有其他差异? UART接口还是我必须做的任何额外设置?有没有在UART模式下使用该芯片的经验?

我对寄存器读取和更改的更改写函数:

unsigned char ReadRawRC(unsigned char Address)
{
     unsigned char ucAddr;
     unsigned char ucResult=0;

     ucAddr = Address | 0x80;

     UART_SendBlocking(USART0, &ucAddr, 1);
     UART_ReadBlocking(USART0, &ucResult, 1);

     return ucResult;
}

/////////////////////////////////////////////////////////////////////
//@ Function: write RC522 register
//@ Parameter Description: Address [IN]: register address
//Value [IN]: write value
/////////////////////////////////////////////////////////////////////
void WriteRawRC(unsigned char Address, unsigned char value)
{
        unsigned char ucAddr;
        unsigned char ucValu;

        ucAddr = Address & 0x7F;
        ucValu = value;
        UART_SendBlocking(USART0, &ucAddr, 1);
        UART_SendBlocking(USART0, &ucValu, 1);

}

1 个答案:

答案 0 :(得分:1)

问题在于UART模式和SPI模式下的地址字节差异,如您所见 picture 新修改的读/写函数表现得非常好:

editFunction()