ماژول ار اف ای دی

سوال شده در پروژه های الکترونیک توسط کاربر
سلام.تشکر بابت سایت خوبتون.
میخواستم لطف کنید و راهنماییم کنید در مورد چگونگی اتصال ماژول RFID_RC522به میکرويatmega32.
چه پایه های رو باید به میکرو وصل کنم.تو نت جستجو کردم متاسفانه چیزی دستگیرم نشد.
ممنون میشم کمکم کنید

1 پاسخ

پاسخ داده شده توسط ایمان

لینک زیر را ببینید : 

https://gitlab.com/AVR-Libraries/rfid-rc522

 

و کد مثال آن : 

این هدر : 

/* Registers

   MFRC522 Datasheed Page 36
*/

// Command and status
#define CommandReg    0x01 // Starts and stops command execution
#define ComIEnReg     0x02 // Enable and disable interrupt request control bits
#define DivIEnReg     0x03 // Enable and disable interrupt request control bits
#define ComIrqReg     0x04 // Interrupt request bits
#define DivIrqReg     0x05 // Interrupt request bits
#define ErrorReg      0x06 // Error bits showing the error status of the last command executed
#define Status1Reg    0x07 // Communication status bits
#define Status2Reg    0x08 // Receiver and transmitter status bits
#define FIFODataReg   0x09 // Input and output of 64 byte FIFO buffer
#define FIFOLevelReg  0x0A // Number of bytes stored in the FIFO buffer
#define WaterLevelReg 0x0B // Level of FIFO underflow and overflow warning
#define ControlReg    0x0C // Miscellaneous control registers
#define BitFramingReg 0x0D // Adjustments for bit-oriented frames
#define CollReg       0x0E // Bit position of the first bit-collision detected on the RF interface

// Command
#define ModeReg        0x11 // Defines general modes for transmitting and receiving
#define TxModeReg      0x12 // Defines general modes for transmitting and receiving
#define RxModeReg      0x13 // Defines reception data rate and framing
#define TxControlReg   0x14 // Controls the logical behavior of the antenna driver pins TX1 and TX2
#define TxASKReg       0x15 // Controls the setting of the transmission modulation
#define TxSelReg       0x16 // Selects the internal sources for the antenna driver
#define RxSelReg       0x17 // Selects internal receiver settings
#define RxThresholdReg 0x18 // Selects thresholds for the bit decoder
#define DemodReg       0x19 // Defines demodulator settings
#define MfTxReg        0x1C // Controls some MIFARE communication transmit parameters
#define MfRxReg        0x1D // Controls some MIFARE communication receive parameters
#define SerialSpeedReg 0x1F // Selects the speed of the serial UART interface

// Configuration
#define CRCResultRegL   0x21 // Shows the MSB and LSB values of the CRC calculation
#define CRCResultRegH   0x22
#define ModWidthReg     0x24 // Controls the ModWidth setting
#define RFCfgReg        0x26 // Configures the receiver gain
#define GsNReg          0x27 // Selects the conductance of the antenna driver pins for modulation
#define CWGsPReg        0x28 // Defines the conductance of the p-driver output during periods of no modulation
#define ModGsPReg       0x29 // Defines the conductance of the p-driver output during periods of no modulation
#define TModeReg        0x2A // Defines settings for the internal timer
#define TPrescalerReg   0x2B // Defines settings for the internal timer
#define TReloadRegL     0x2C // Defines the 16-bit timer reload value
#define TReloadRegH     0x2D
#define TCounterValRegL 0x2E // Shows the 16-bit timer value
#define TCounterValRegH 0x2F

// Test register
#define TestSel1Reg     0x31 // General test signal configuration
#define TestSel2Reg     0x32 // General test signal configuration and PRBS control
#define TestPinEnReg    0x33 // Enables pin output driver on pins D1 to D7
#define TestPinValueReg 0x34 // Defines the values for D1 to D7 when it is used as an I/O bus
#define TestBusReg      0x35 // Shows the status of the internal test bus
#define AutoTestReg     0x36 // Controls the digital self test
#define VersionReg      0x37 // Shows the software version
#define AnalogTestReg   0x38 // Controls the pins AUX1 and AUX2
#define TestDAC1Reg     0x39 // Defines the test value for TestDAC1
#define TestDAC2Reg     0x3A // Defines the test value for TestDAC2
#define TestADCReg      0x3B // Shows the value of ADC I and Q channels

/* Commands

   MFRC522 Datasheed Page 70
*/

#define cmd_idle             0x00 // No action, cancels the current command execution
#define cmd_mem              0x01 // Stores 25 bytes into the internal buffer
#define cmd_generateRandomID 0x02 // Generates a 10-byte random ID number
#define cmd_calcCRC          0x03 // Activates the CRC coprocessor of performs a self test
#define cmd_transmit         0x04 // Transmits data from the FIFO buffer
#define cmd_noCmdChange      0x07 // Can be used to modify the CommandReg register bits without affecting the command
#define cmd_recieve          0x08 // Activates the receiver circuits
#define cmd_transceive       0x0C // Transmits data from FIFO buffer to antenna and activate receiver after transmission
#define cmd_mfAuthent        0x0E // Performs the MIFARE standard authentication as a reader
#define cmd_softReset        0x0F // Resets the MFRC522
و این مثال : 

#include "rc522.h"
#include "spi.h"

#include <avr/io.h>
#include <util/delay.h>

#define F_CPU 1000000
#define BAUD 4800
#define BAUD_PRESCALE ((((F_CPU/16) + (BAUD/2)) / (BAUD)) - 1)

char getchar(void);
void putchar(char c);
void puts(const char *s);

void init_uart(void)
{
    UBRRH = (BAUD_PRESCALE >> 8);
    UBRRL = BAUD_PRESCALE;
    UCSRB = (1 << RXEN) | (1 << TXEN);
    UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1) | (0 << UCSZ2)
            | (0 << UMSEL) | (0 << UPM0) | (0 << UPM1);
}

int main(void)
{
    char result;

    init_uart();
    spi_master_init();

    putchar('?');
    getchar();
    putchar('-');
    putchar('\n');
    putchar('\n');

    while (1)
    {
        result = spi_master_tranceiver(getchar());
        putchar(result);
        putchar('\n');
        _delay_ms(1000);
    }

    return 0;
}

void putchar(char c)
{
    while ((UCSRA & (1 << UDRE)) == 0) {}
    UDR = c;
}

char getchar(void)
{
    while ((UCSRA & (1 << RXC)) == 0) {}
    return UDR;
}

void puts(const char *s)
{
    while (*s != '\0')
    {
        putchar(*s);
        s++;
    }
}
...