Question: I am using a PSoC5 with Cypress Creater to read an RFID tag with a MFRC522 chip. It is in C. This is the code

I am using a PSoC5 with Cypress Creater to read an RFID tag with a MFRC522 chip. It is in C. This is the code I have below. I honestly don't know if the registrar and values I send to it are correct. Any help would be amazing. I only really need teh UID that is unique to each tag.

#include "project.h"

void lock()

{ uint8 motorVal = 9;

LCD_Position(1,0);

for(int x = 0; x <= 2; x++)

{

MotorPort_Write(motorVal);

motorVal = 5;

CyDelay(500);

MotorPort_Write(motorVal);

motorVal = 6;

CyDelay(500);

MotorPort_Write(motorVal);

motorVal = 10;

CyDelay(500);

MotorPort_Write(motorVal);

motorVal = 9;

CyDelay(500);

}

}

void unlock()

{

uint8 motorVal = 6;

LCD_Position(1,0);

for(int x = 0; x <= 2; x++)

{

MotorPort_Write(motorVal);

motorVal = 5;

CyDelay(500);

MotorPort_Write(motorVal);

motorVal = 9;

CyDelay(500);

MotorPort_Write(motorVal);

motorVal = 10;

CyDelay(500);

MotorPort_Write(motorVal);

motorVal = 6;

CyDelay(500);

}

}

int main(void)

{

CyGlobalIntEnable;

LCD_Start();

SPIM_Start();

SPIM_CLK_Start();

for(;;)

{

//Reset set to high

MFRC522_RST_Write(0);

uint8 SpiData[8];

//TModeReg

SpiData[0] = 0x2A;

SpiData[1] = 0x8D;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//TPrescalerReg

SpiData[0] = 0x2B;

SpiData[1] = 0x3E;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//TReloadRegL

SpiData[0] = 0x2C;

SpiData[1] = 0x30;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//TReloadRegH

SpiData[0] = 0x2D;

SpiData[1] = 0x00;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//TxAutoReg

SpiData[0] = 0x15;

SpiData[1] = 0x40;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//ModeReg

SpiData[0] = 0x11;

SpiData[1] = 0x3D;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//Antenna On

SpiData[0] = 0x14;

SpiData[1] = 0x03;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//To actually read I think we have initilize and define it to read then call it to read it

//BitFramingReg

SpiData[0] = 0x0D;

SpiData[1] = 0x07;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//PCD_TRANSCEIVE (Not Sure)

SpiData[0] = 0x0C;

SpiData[1] = 0xAC;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//PICC_ANTICOLL

SpiData[0] = 0x93;

SpiData[1] = 0x20;

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

//Trying to Read

SpiData[0] = 0x12; //command write to FIFO: 0x12

SpiData[1] = 0x0C; //data trasieve 0x0C

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

SpiData[0] = 0x92; //read FIFO

SpiData[1] = 0x90; // dummy

MFRC522_SDA_Write(0);

CyDelay(1);

SPIM_PutArray(SpiData, 2);

MFRC522_SDA_Write(1);

CyDelay(1);

SPIM_ClearRxBuffer();

SpiData[0] = SPIM_ReadRxData();

SpiData[1] = SPIM_ReadRxData();

SpiData[2] = SPIM_ReadRxData();

SpiData[3] = SPIM_ReadRxData();

SpiData[4] = SPIM_ReadRxData();

SpiData[5] = SPIM_ReadRxData();

SpiData[6] = SPIM_ReadRxData();

SpiData[7] = SPIM_ReadRxData();

LCD_ClearDisplay();

LCD_Position(0,0);

LCD_PrintNumber(SpiData[0]);

LCD_PrintString(" ");

LCD_PrintNumber(SpiData[1]);

LCD_PrintString(" ");

LCD_PrintNumber(SpiData[2]);

LCD_PrintString(" ");

LCD_PrintNumber(SpiData[3]);

LCD_Position(1,0);

LCD_PrintNumber(SpiData[4]);

LCD_PrintString(" ");

LCD_PrintNumber(SpiData[5]);

LCD_PrintString(" ");

LCD_PrintNumber(SpiData[6]);

LCD_PrintString(" ");

LCD_PrintNumber(SpiData[7]);

CyDelay(300);

LCD_ClearDisplay();//I put this here to see how quick the program runs and resets

CyDelay(1000);

}

}

/* [] END OF FILE */

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!