Использование RFID-RC522 с микроконтроллером ATTiny13

Схема соединения RFID-модуля RC522 с микроконтроллером ATTiny13
Существует 2 варианта подключения.
1 Для обеспечения односторонней связи с одним устройством, достаточно использовать SCLK,MOSI (в случае если ведомое устройство только принимает) или SCLK, MISO (в случае если ведомое устройство ничего не принимает, а только передает информацию). На входе CS ведомого устройства должна быть установлена единица, иначе ведомый не будет работать.
Если ведомое устройство и передает и принимает, то можно ограничиться тремя проводами –MISO, MOSI, SCLK, на вход CS ведомого устройства также необходимо установить 1-цу.

Как видно используется при чтении MOSI.

При втором варианте поэкспериментировать с установкой 1 или 0  на линию SS (SDA) чтобы игнорировать в процессе передача/прием данных 1 и 6 пункт.

Передача/прием данных
Процесс передачи/приема данных с помощью SPI модуля, работающего в режиме Master, состоит из следующей последовательности действий:

1. установка низкого логического уровня на линии SS

2. загрузка данных в регистр SPDR

3. ожидание окончания передачи (проверка флага SPIF)

4. сохранение принятых данных (чтение SPDR), если требуется

5. возврат на 2-ой шаг, если переданы не все данные

6. установка высокого логического уровня на линии SS

По программированию на Bascom-AVR
CONFIG SPI



 Назначение:
Конфигурирует порядок работы интерфейса SPI.
 Синтаксис (программная реализация):
CONFIG  SPI = SOFT, DIN = pin , DOUT = pin , SS = [ pin | NONE ] , CLOCK = pin
 где:
pin                      название вывода, исполняющего роль сигнала.

Синтаксис (аппаратный интерфейс):
CONFIG SPI = HARD, DATA ORDER = LSB | MSB , MASTER = YES | NO , POLARITY = HIGH | LOW , PHASE = 0 | 1 , CLOCKRATE = 4 | 16 | 64 | 128 , NOSS = 0 | 1
 Описание:

                     Процессоры   AVR   имеют   специальный   интерфейс служащий для коммуникации  между процессорами этой серии. Этот интерфейс используется также для программирования памяти кода и EEPROM.
Подробней можно ознакомиться здесь

http://avrproject.ru/publ/poleznaja_informacija/configuration_spi_bascom_avr/4-1-0-66
Пример1:
Config Spi = SOFT, DIN = PINB.0 , DOUT = PORTB.1, SS = PORTB.2, CLOCK
= PORTB.3
Dim var As Byte

Spiinit            ' Инициализация SPI и портов.
Spiout var ,       ' трансляция 1 байта

По программированию RFID-RC522

Описание протокола EM4100 на русском
Обзор регистров RFID-RC522 на русском


Детально о регистрах RFID-RC522

!// MFRC522 registers. Described in chapter 9 of the datasheet.
  // When using SPI all addresses are shifted one bit left in the "SPI address byte" (section 8.1.2.3)
!// Регистры MFRC522. Описаны в главе 9 datasheet.

   // При использовании SPI все адреса сдвигаются на один бит в «Байт адреса SPI» (раздел 8.1.2.3) 

Включает и выключает выполнение команд,
По умолчанию CommandReg = 0х20 - аналоговая часть приемника выкл.
Устанавливаем 0хFF - Soft Reset
-------------
Timer: TPrescaler*TreloadVal/6.78MHz = 24ms
TModeReg, TPrescalerReg - определяют параметры для внутреннего таймера
TModeReg - автоматический старт таймера, и расчет его частоты старший биты предделителя TPrescalerReg - младшие биты предделителя частоты
TModeReg, 0x8D
TPrescalerReg, 0x3E
-------------------
Регистры определяют количество тиков 16и разрядного таймера
TReloadRegL, 30
TReloadRegH, 0
-------------------
Включаем 100% ASK (амплитудная модуляция)
TxAutoReg, 0x40
--------------------
Определяют общ. режимы обмена.
Передает если поле генерируется, определяет полярность, и настраивает CRC
ModeReg, 0x3D // Начальное значение CRC 0x6363
---------------
ШИФРОВАНИЕ
Status2Reg, 0x08 //MFCrypto1On=0
RxSelReg, 0x86 //RxWait = RxSelReg[5..0]
RFCfgReg, 0x7F //RxGain = 48dB
AntennaOn();//Включить антенну
-----------------------------------------
Входные значения: reqMode - способ поиска карты;
TagType - возвращаемый тип карты:
  * 0x4400 = Mifare_UltraLight
  * 0x0400 = Mifare_One (S50)
  * 0x0200 = Mifare_One (S70)
  * 0x0800 = Mifare_Pro (X)
  * 0x4403 = Mifare_DESFire

-------------------------------------------
Полученные биты данных
Ориентировки для битов в кадре
0х07 количество битов последнего байта, которые должны быть переданы
BitFramingReg, 0x07 //TxLastBists = BitFramingReg[2..0]
PCD_TRANSCEIVE - команда, передает данные из FIFO буфера с антенной и активируется автоматически, приемник после передачи.
CommIEnReg - Управляющие биты для включения и отключения прохождение запросов прерываний.
     * 0b11110111
     * - Сигнал на выводе IRQ инвертируется по отношению к IRQ в регистре Status1Reg.
     * - Возможность запроса прерывания передатчика (указывается битом TxIRq), которые будут распространяться на контакт IRQ.
     * - Возможность запрос приемник прерываний (указано битом RxIRq), чтобы быть распространяется на контакт IRQ.
     * - Возможность в режиме ожидания запроса прерывания (указывается битом IdleIRq), которые будут распространяться на контакт IRQ.
     * - Возможность запроса повышенной готовности прерывания
     * - Возможность запрос низкий оповещения прерывания (указывается битом LoAlertIRq), которые будут распространяться на контакт IRQ
     * - Возможность запрос ошибка прерывания
     * - Возможность запрос прерывание таймера
    CommIrqReg - содержит запрос на прерывание бит

CommIrqReg, 0x80);// Очистить бит запроса прерывания
FIFOLevelReg, 0x80 // FlushBuffer = 1, инициализировать FIFO

Status2Reg, 0x08 //TempSensclear

----------------
FIFO 64-байтный, адрес у буфера один - 09h и в случае чтения из него после каждого запроса указатель внутри автоматически инкрементируется, так, что при каждом новом запросе 09h вы читаете как бы 09h-1, 09h-2, 09h-3 и т.д. Количество этих и так далее (глубина заполненности буфера) содержится в следующем регистре - 0Аh, а точнее в его битах 6-0. Запись же единицы в его бит 7 очищает сам буфер, сбрасывает указатель на 0, ну и еще пару флагов обнуляет.

!Вся текстовая информация собрана из Интернета по кускам. 

Комментариев нет:

Отправить комментарий