Например TDA7294

Форум РадиоКот • Просмотр темы - Ковыряем RFID Mifare и MFRC522
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Сб июл 19, 2025 09:24:39

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 132 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вс июн 04, 2017 01:35:21 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Приветствую всех заинтересовавшихся :beer:
Началось все с покупки комплекта считывателя RFID RC522, карты и брелка на Али. Валялся он у меня пару недель, а потом появилось время поработать с ним... и ту понеслось :) .
Для начала освоил SPI на STM32. Потом начал изучать документацию на чип, но к моему сожалению, в ней описано только как подключается чип, протоколы обмена с МК (SPI, USART, I2C), краем упомянут протокол общения с картой и дано описание регистров. Но самое важное для меня - порядок инициализации и чтения/записи с/на карту я не нашел.
После этого были долгие поиски инфы в сети, но дальше библиотек ардуины уйти не удавалось (а понять ардуины код для меня как полет в космос). Через два дня я наткнулся на библиотеку под STM (к сожалению уже не помню где ее взял) для этого считывателя, и все пошло в гору, как я подумал. Но не тут то было.
Из библиотеки я честно спёр инит. На этом я и остановился. Вот инит:
Код:
void MFRC522_init (void)
{
   MFRC522_write_register(MFRC522_REG_COMMAND, 0x0F); // RESET
   
   MFRC522_write_register(MFRC522_REG_T_MODE, 0x8D);
   MFRC522_write_register(MFRC522_REG_T_PRESCALER, 0x3E);
   MFRC522_write_register(MFRC522_REG_T_RELOAD_L, 30);           
   MFRC522_write_register(MFRC522_REG_T_RELOAD_H, 0);
   MFRC522_write_register(MFRC522_REG_RF_CFG, 0x70);
   MFRC522_write_register(MFRC522_REG_TX_AUTO, 0x40);
   MFRC522_write_register(MFRC522_REG_MODE, 0x3D);

   if (!(MFRC522_read_register(MFRC522_REG_TX_CONTROL) & 0x03)) {MFRC522_set_bits_of_register(MFRC522_REG_TX_CONTROL, 0x03);} // Antenna ON
}

Хотя я и могу понять, какие биты мы устанавливаем при ините и в какой регистр, но почему именно так - для меня загадка. Ну да и черт с этим - инициализация простая и работает.
Далее я спер еще часть кода с библиотеки и переделал ее под себя. В итоге получилось такое чудо, которое выдает мне один непонятный байт в str[0] и четыре байта, как я понял, серийного номера карты в str[1] - str[4]. Больше и ничего не должно быть (как я полагал на тот момент, но опять ошибся) и я полез искать регистры, с которых считываются 4 байта серийного номера, но конечно же, их нет.
После изучения принципов работы Mifare и этой библиотеки появились следующие вопросы:
1) Перед тем как запросить данные с карты в библиотеке в FIFO RC522 (по адресу 0x09) записываются числа 0x93 и 0x20. После этого мы получаем серийный номер карты. Как эти числа заставляют карту прислать данные с нулевого сектора нулевого блока? И где вообще посмотреть данные по посылаемым карте командам?
2) Как нам отличить один тип карты от другого? К примеру: в моей карте UID состоит из 4-х байт, поэтому я и прочту только 4 байта. А если я поднесу карту с UID из 7-ми байт, то прочту только 4 байта и получу хрень на выходе. Как этого избежать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вт июн 06, 2017 00:38:49 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Чем дальше в лес, тем страшнее черти :) . Кто-нидь в курсе, зачем у MFRC522 встроен таймер? В даташите только описание и ничего конкретного...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Ср июн 07, 2017 01:00:08 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Ну раз никто не отвечает, то отвечу сам :) . Для того, в частности, чтоб контролировать зависание при выполнении некоторых действий. В моем случае контролировалось поступление данных в FIFO от карты. Если ответ задерживался, то возникало переполнение таймера и выставлялся флаг возникновения прерывания.
Чтож в SPI не додумались такое воткнуть, чтоб не висеть в цикле проверки RXNE когда отрывается Slave :) .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Ср июн 07, 2017 08:37:13 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Чтож в SPI не додумались такое воткнуть, чтоб не висеть в цикле проверки RXNE когда отрывается Slave :) .

А прерывание никак не включить?
:)

Вчера только читал про SPI в Cortex M3 (я относительно недавно начал ковырять АРМы), т.к. тоже имею сабжевую платку и хочу ее попробовать. Так вот, как подсказывает мне мой склероз, в МК есть прерывания на пустой ТХ буфер, НЕ пустой RX буфер и всякие ошибки (CRC, overrun и чего-то там еще). Так что можно на дисплее (если он есть) показывать какой-нибудь мультик пока не получен ответ от считывателя (слейва). Также у него (522-го) еще отдельный выход IRQ есть, но пока не дочитал до него и не знаю по каким событиям он может дергаться и дергать хост.

Писать пока не начинал, только изучаю 522-й теоретически.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Ср июн 07, 2017 17:19:24 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Для общения с Rc522 иногда нужно послать 8 байт и сделать строб, а иногда послать два раза по 8 байт и только потом делать строб. Вот на фоне всей этой фигни и рождается жуткий гемор в прерываниях SPI. Там ведь всего 3 флага прерываний.
У 522 есть целый регистр для активатиции выхода irq при возникновении того или иного прерывания. Фича полезная, если связать с внешним прерыванием МК, то можно разгрузить процессор. Сам правда пока им ре пользовался.
Сейчас застрял на антиколлизии. При поднесении двух меток в буфере оказывается всякая хрень, но флаг обнаружения коллизии не выставляется.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Пт июн 09, 2017 18:44:30 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Оказалось, что в карточках одного типа бит коллизии установлен в одном и том же месте, поэтому коллизии не происходит.
Добился выбора карты, аутентификации и чтения/записи из EEPROM, однако это происходит только один раз. Повторный цикл антиколлизии возможен только после перезагрузки устройства. Не могу никак победить проблему....


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Ср июн 28, 2017 18:30:04 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Для начала освоил SPI на STM32. Потом начал изучать документацию на чип, но к моему сожалению, в ней описано только как подключается чип, протоколы обмена с МК (SPI, USART, I2C), краем упомянут протокол общения с картой и дано описание регистров. Но самое важное для меня - порядок инициализации и чтения/записи с/на карту я не нашел.

Вот и я так же. С SPI на STM32F103 вчера разобрался наконец-то (ну они и намудрили с ногой NSS!), подключил модуль MFRC522 к МК, сконфигурировал SPI2 и загрустил. Такого бестолкового ДШ я еще не видел, у китайцев и то лучше!
Мне не хочется пионерить чей-то инит, хочу чтоб производитель (NXP) сам мне о нем рассказал. Сейчас пошарю у них на сайте на предмет AN.
В сети, как я навскидку заметил, все юзают готовые библиотеки, которые я не люблю, но никто не описывает, как с этим чипом общаться.

Кстати, они там пишут про автоопределение интерфейса (SPI / I2C / UART).
В таблице в графе по SPI указано I2C (pin 1) = 0, EA (pin 32) = 1. Это надо такие уровни выставить на них?

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Чт июн 29, 2017 15:21:05 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Кстати, они там пишут про автоопределение интерфейса (SPI / I2C / UART).
В таблице в графе по SPI указано I2C (pin 1) = 0, EA (pin 32) = 1. Это надо такие уровни выставить на них?

Судя по схеме и визуальному осмотру платы, на плате уже все предусмотрели, т.е. распиновка сделана под SPI.

А вот с документацией у них действительно очень плохо. Если не гуглить сабж, а просто через сайт NXP попытаться найти ДШ на чип, то оказываешься в дебрях невиданных. Я так и не вышел на страницу с чипом, на которой была бы ссылка на документацию.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вс июл 09, 2017 09:03:06 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
А я ковыряю подключение через UART. В МК ног не хватает для SPI (заняты под другие цели), переделать модуль под I2C не решился, т.к. нужно сдувать микросхему и под ней перерезать дорожку, а вот переделать под UART легко.
Подключил к USB-UART переходнику через согласование.
Вот мучаюсь хоть что-то от модуля получить...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вс июл 09, 2017 09:46:51 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
А еще меня смущает то, что на моем чипе не видно маркировки :(
Я получал плату в период сложных личных обстоятельств и не обратил на это внимание. Теперь вот думаю, если чип мне не будет отвечать это из-за моей ошибки в программе, или потому что я общаюсь с простым куском керамики?

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вс июл 09, 2017 12:25:24 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Подключился на скорости 9600
Посылаю в модуль код.
Для понимания буду писать так: первая строка это байты, которые нужно послать, а вторая строка это то, что реально посылаю (после сдвига адреса).

Коды беру из первого сообщения темы.
Сброс:
01 0F
02 0F
Ответа нет

Инициализация:
2A 8D 2B 3E 2D 30 2C 00 26 70 15 40 11 3D
54 8D 56 3E 5A 30 58 00 4C 70 2A 40 22 3D
Ответа нет

Добавлено after 1 hour 32 minutes 54 seconds:
Начало есть!!!
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Пн июл 10, 2017 09:39:54 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Нашел ошибку: в программе не установил галку. Теперь походу правильно отвечает:
Изображение
Осталось понять, что означают эти ответы...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Пн июл 10, 2017 10:59:36 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Почитайте страницы 13-16, там про формат команды. А потом загляните в таблицу адресов на страницах 36-37.
У вас второй запрос начинается с 0х54, тогда как адресация там 6-битная, до 0х3F. Бит 7 говорит о чтении по адресу (=1) или записи по нему (=0). Бит 6 - reserved. Для адреса остаются только младшие 6 битов.
Следовательно 0х54 должен восприниматься чипом как 0х14, причем как запись в него. Это TxControlReg: "controls the logical behavior of the antenna driver pins TX1 and TX2". Значит следующим за ним байт - это конфигурация этого регистра.
Таким же методом пройдитесь по остальным командам и таблицам с адресами в ДШ.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Пн июл 10, 2017 18:18:03 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Спасибо, это я уже понял.
Теперь с ответами разобраться бы. Я так понимаю, что на команду 54 8D (см. скриншот выше) чип отвечает 54. И похоже он всегда возвращает код команды?
Хотя один раз я то-то ему послал, так всегда стал возвращать посылаемое значение. После отключения питания ответ вернулся кодом команды


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Пн июл 10, 2017 19:07:53 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Изображение
Изображение

Ну вот смотрите. Судя по таблицам, если адрес записывающий (следующий за ним байт конфигурирующий), то адрес в ответ повторяется.
В случае чтения идет ответ содержимого регистра по адресу.

Попробуйте отправить 0x37 и посмотрите на ответ. Самому интересно :)

Добавлено after 2 minutes 6 seconds:
Пардон, не 0x37, а 0xB7. Забыл про единицу в старшем бите.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вт июл 11, 2017 12:33:26 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Ага, мои догадки оказались верными!

И не 0xB7:
0x37<<1 = 0x6E
0x6E | 0x80 = 0xEE
Изображение

Чтоб не мучать МК перепрошивками делаю программу для Windows.

Добавлено after 2 hours 38 minutes 40 seconds:
Еще одна непонятка: контрольная сумма нужна в командах или это только при записи в карту блока данных?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вт июл 11, 2017 13:37:14 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
А сдвиг зачем?
:shock:
Сдвиг используется при работе через SPI (по I2C особо не вникал).

В ответ на 37h (в правильной посылке) может быть только 2 ответа: 91h или 92h, т.е. 1 или 2 версия чипа. Ваш ноль - это скорее всего свидетельство ошибочной команды

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вт июл 11, 2017 19:52:16 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
А сдвиг зачем?

Вот из скетча:
Код:
void MFRC522_WriteRegister(uint8_t addr, uint8_t val) {
   addr = (addr << 1) & 0x7E;                                                      // Address format: 0XXXXXX0
    SPI1_WriteReg(addr, val);
}

uint8_t MFRC522_ReadRegister(uint8_t addr) {
   uint8_t val;

   addr = ((addr << 1) & 0x7E) | 0x80;
   val = SPI1_ReadReg(addr);
   return val;   
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вт июл 11, 2017 19:57:45 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Так я же говорю, что сдвиг для SPI нужен, но не для UART. Там в скетче как раз SPI и упоминается.
Не сдвигайте. Команды записи отправляйте как есть, а команды чтения с выставлением MSB.

Это для SPI. У него младший бит в нуле всегда, старший такой же, как и для UART.
Изображение

Это для UART. На него и ориентируйтесь.
Изображение

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ковыряем RFID Mifare и MFRC522
СообщениеДобавлено: Вт июл 11, 2017 21:04:14 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Отправляю B7 00 - что-то ерунду возвращает:
Изображение


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 132 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y