Схема соединения RFID-модуля RC522 с микроконтроллером ATTiny13
Существует 2 варианта подключения.
1 Для обеспечения односторонней связи с одним устройством,
достаточно использовать SCLK,MOSI (в случае если ведомое устройство
только принимает) или SCLK, MISO (в случае если ведомое
устройство ничего не принимает, а только передает информацию). На
входе CS ведомого устройства должна быть
установлена единица, иначе ведомый не будет работать.
2 Если ведомое устройство и передает и принимает, то можно
ограничиться тремя проводами –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
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 на русском
Включает и выключает выполнение команд,
FIFO 64-байтный, адрес у буфера один - 09h и в случае чтения из него после каждого запроса указатель внутри автоматически инкрементируется, так, что при каждом новом запросе 09h вы читаете как бы 09h-1, 09h-2, 09h-3 и т.д. Количество этих и так далее (глубина заполненности буфера) содержится в следующем регистре - 0Аh, а точнее в его битах 6-0. Запись же единицы в его бит 7 очищает сам буфер, сбрасывает указатель на 0, ну и еще пару флагов обнуляет.
Обзор регистров 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, ну и еще пару флагов обнуляет.
!Вся текстовая информация собрана из Интернета по
кускам.
Комментариев нет:
Отправить комментарий