Arduino и PN532

Unknown0
Offline
Зарегистрирован: 25.05.2021

Здравствуйте, уважаемые форумчане! Решил на днях присоединить RFID-модуль PN532 к Arduino, да никак не получается.

Через библиотеку от Adafruit всё работает, но её функционала не хватает, поэтому требуется разработка с нуля.

По принципу работы: отправляем данные -> модуль присылает бай ты об успешное отправке по форме -> модуль обрабатывает команду -> модуль возвращает результат.

Что используя библиотеку SPI, что работая через регистры, данные отправляются, а вот при получении ответа у меня появляются некоторые трудности...

Насколько я понял, библиотека SPI подразумевает получение результата сразу после отправки одного байта. А у нас байт может быть несколько, хоть 264 – максимум модуля по форме.

Через регистры у меня ничего не возвращается.

Сёрфил и в Яндексе и в Google , но ни описания, ни примеров не нашёл, чтобы изучить получение результата. Поэтому обращаюсь сюда.

Подскажите, пожалуйста, как в описанным выше примере получить данные обратно, желательно через регистры? Можно без примера. Спасибо!

P.S.: Arduino – ведущее устройство, а модуль – ведомое.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Unknown0 пишет:
Насколько я понял, библиотека SPI подразумевает получение результата сразу после отправки одного байта.

Это не библиотека, а сам протокол SPI. библиотека лишь реализует его. Обмен происходит по 1 байту. Байт отослал, тут же принял ответный байт. Примите это, по другому не будет. Надо учиться решать свои задачи на этом.

Например, если Вам надо послать 1 байт (запрос), а в ответ получить 10 байтов информации - посылаете 1 байт, получаете первый байт ответа, посылаете 0, получаете второй байт ответа, посылаете 0, получаете третий байт ответа и т.д. 

Штатная библиотека SPI работает только как Мастер. Как Слейв не умеет. для работы Слейвом надо писать самому или использовать другие библиотеки.  Вот пример двустороннего обмена (и мастер, и слейв).

Unknown0
Offline
Зарегистрирован: 25.05.2021

Я понимаю, как работает SPI с помощью замены регистров, поэтому вы зря описывали принцип работы. Не делайте из меня уж совсем какого-нибудь нуба).

До меня только сейчас дошло, что для того, чтобы получить от ведомого данные обратно надо отправить какой-нибудь байт. В этом и заключался весь, казалось бы тупейший, вопрос.

До меня всё, что лежит на поверхности и подлежит обычной логике, доходит тяжело(. Как так, не знаю...

nik182
Offline
Зарегистрирован: 04.05.2015

Обычно это происходит, когда в голове сформирован какой то шаблон стандартного обмена, например по которому кроме запроса можно послать запрашиваемое количество данных и это нормально - экономит время на ответ, если данных больше двух. Другие виды обмена могут создать ступор на какое то время. Кто ж его знает сколько предполагалось данных на заре SPI, и как обходили патентное законодательство.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Unknown0 пишет:
сейчас дошло, что для того, чтобы получить от ведомого данные обратно надо отправить какой-нибудь байт

Значит, я всё-таки НЕ

Unknown0 пишет:
зря описывали принцип работы

Не стоит благодарности! Успехов!

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Unknown0 пишет:
Не делайте из меня уж совсем какого-нибудь нуба).

Вы сами себя делаете таковым :) Вы хоть представляете себе стек ужаса который нужно построить, что бы, как вы выразились "какой нибудь байт" заставил PN532 взбудоражить эфир, так что бы кто то эти волнения воспринял правильно ?

Начните "разработку с нуля" прочитав даташит на 532, стандарты и мануал разработчика NFC :)))))))