Эмуляция ISO/IEC 7816 смарт карты.

Обсуждаем цифровые устройства...
Ответить
Родился
Сообщения: 6
Зарегистрирован: Вс дек 27, 2015 15:30:57

Сообщение rgsv »

Всем здравствуйте. Не судите строго, если написал не туда.
Мы работаем над П.О. , которое должно взаимодействовать с картой. В целом мне далеко не в первой, и T0 реализован давно , работа с читателем , и всё прочее.
По данной карте имею полную документацию, что туда слать надо , что в ответ приходить должно , и в каком формате , всё расписано.
Но есть нюанс :) :) :) Заказчик говорит, что карты, которые делает кто то другой, будут у него только через полгода, в лучшем случае, клянётся на библии ,что карты будут работать строго по описанному протоколу. И посему нам предлагается реализовать всю функциональность, опираясь исключительно на теорию. Не будь у меня стажа в 15 лет, я бы может и повёлся , но я то знаю что это полный блудняк :) :) :)
Посмотрел протокол и подумал, там 10 основных команд , если место карты воткнуть в ридер плату с разводкой , где то анализировать полученный запрос и отвечать в соответствии с протоколом, то можно всё сделать и протестировать , даже подставляя некорректные ответы. Если же протокол карт реальных карт будет отличатся, всегда можно будет показать заказчику библию , на которой он клялся и сторговать время.
Теперь суть. С железом у меня плохо , иначе бы я тут не спрашивал.
Баловался с Arduino и AVR, совсем чуть чуть. Сделал на ардуино гусеничного робота, который изучал пространство дальномером, который крутил сервой. Потом переделал его на нативный AVR контроллер, без каких либо ардуино частей. На этом познания закончились.
Собственно вопрос, как подключить разводку карты к AVR или Ардуино(для начала).

Там контакты VCC GND CLK I/O.
Допустим контроллер у меня будет питаться от внешнего питания. Тогда VCC я могу не подключать?
GND я так понял надо соединить с GND контроллера.
CLK я думаю повесить на ногу INT0 контроллера . И про прерыванию читать Порт куда подключен ввод. Я мыслю в правильную сторону ?
I/O как мне разделить на отдельно RX и ТХ?

Через какую обвязку всё это цеплять, с этим у меня всегда было плохо. На прямую, через резисторы, притянуть к + или к - ?

Получив сообщение на контроллере , я бы уже или прямо на нём принял решение, что отослать в ответ, или переслал бы на комп , в общем это уже детали программной части.

Устройство бы получилось крайне полезное в дальнейшей работе. Очень надеюсь на вашу помощь
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

В идеале использовать TDA8004. Если заниматься "самодеятельностью" то можно подглядеть как сделано в Phoenix reader.
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Реклама
Родился
Сообщения: 6
Зарегистрирован: Вс дек 27, 2015 15:30:57

Сообщение rgsv »

korob писал(а):В идеале использовать TDA8004.
TDA8004 знакомо, у нас на ней ридер и сделан. Но мне не читать карту надо и изображать её с минимальной обвязкой. Или вы предлагаете просто соединить два ридера ?

По схеме поясните пожалуйста , суть блока который обрабатывает сигнал Card Clock. Он должен с генерировать сигнал, нужной длительности, CLK тогда когда на Out есть бит?
И совсем для чайника, как работает развязка I/O на RX TX на основе УО
Последний раз редактировалось rgsv Вс дек 27, 2015 16:55:46, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

rgsv писал(а):Но мне не читать карту надо и изображать её
Пардон, недопонял. :oops: Тогда смотрите на Phoenix, только сигнал Clock "разверните" в другую сторону.
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 6
Зарегистрирован: Вс дек 27, 2015 15:30:57

Сообщение rgsv »

Я там прошлое сообщение дополнил.
Суть в том что мне надо вставить устройство в ридер и делать вид что это смарт карта. CLK мне будет задавать ридер, я так понимаю. Ориентируясь на него я буду вычитывать бит из I/O. Я так надеюсь.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

rgsv писал(а):CLK мне будет задавать ридер, я так понимаю
Верно.
rgsv писал(а):Ориентируясь на него я буду вычитывать бит из I/O. Я так надеюсь.
:facepalm:
Нет, не так. Clock это тактовый сигнал (3,57МГц. как правило) для карты, никакого прямого отношения к Data I/O не имеющий. Как же Вы взялись за разработку не зная особенностей работы интерфейсов? Посмотрите даташит на TDA8004, там есть диаграммы сигналов, многое станет понятно.

UPD:

Для экспериментов можно и так сделать. :roll:
Изображение
Последний раз редактировалось korob Вс дек 27, 2015 18:05:23, всего редактировалось 1 раз.
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Реклама
Родился
Сообщения: 6
Зарегистрирован: Вс дек 27, 2015 15:30:57

Сообщение rgsv »

Я работаю на высоком уровне. Я общаюсь с TDA8004, который установлен в ридере , через порт. Отсылаю туда сообщение обёрнутое протоколом Т0, и читаю из этого порта, разворачиваю проверяю и так далее.
Сначала Header получаю ACK , засылаю BODY, забираю SW . дальше по обстоятельствам.
Я программист. До того , что там на контактах карты и как ридер отправляет в неё сообщение ранее особо дела не было.

Вернёмся к схеме ридера.
korob писал(а):Clock это тактовый сигнал (3,57МГц. как правило) для карты, никакого прямого отношения к Data I/O не имеющий.
Почему тогда генератор заведён на контакт OUT?
Согласно тому что я читал, как раз импульс на CLK определённой длительности и является признаком наличия информационного бита. Да и по схеме так выходит что сигнал идёт на OUT и в генератор.

UPD
Интерфейс является синхронным режимом USART-драйвера, это значит, что передачу каждого бита информации мы синхронизируем частотой на выводе CLK, но здесь есть одно важное отличие от прочих синхронных интерфейсов (вроде того же SPI): для тактирования одного бита информации нужен не один импульс на CLK, а 372 импульса (это магическое число прописано в 3 части ISO7816, и носит название ETU (Elementary Time Unit)), т.е., один бит данных тактируется каждым 372-м (в идеальном случае) фронтом. Сама частота должна лежать в пределах от 1 до 5 МГц.
Ответить

Вернуться в «Цифровая техника»