Агуулгын хүснэгт:

RC522 ба PN532 RFID -ийн үндэс: 10 алхам
RC522 ба PN532 RFID -ийн үндэс: 10 алхам

Видео: RC522 ба PN532 RFID -ийн үндэс: 10 алхам

Видео: RC522 ба PN532 RFID -ийн үндэс: 10 алхам
Видео: Эволюция идентификаторов 2024, Долдугаар сарын
Anonim
RC522 ба PN532 RFID -ийн үндэс
RC522 ба PN532 RFID -ийн үндэс

ТАЙЛБАР: Надад одоо RC522 ба PN532 -д зориулсан Arduino кодыг санал болгодог Instructables байна.

Хэсэг хугацааны өмнө би туршилт хийхийн тулд гурван өөр RFID модулийг худалдаж авсан. Өмнөх төсөлд би аюулгүй байдлын үндсэн функцийг хийхийн тулд 125 кГц-ийн энгийн модулийг хэрхэн ашиглах талаар нарийвчлан тайлбарласан болно. Ийм модулиуд нь зөвхөн уншигдах тэмдэглэгээг ашигладаг тул процесс нь ID-г хайж, хүссэн тохиолдолд хадгалах, хадгалагдсан ID-тай харьцуулах явдал юм. Миний худалдаж авсан бусад модулиуд нь 13.56-MHz давтамжтай ажилладаг бөгөөд унших, бичих боломжтой хаягуудыг ашигладаг тул үндсэн аюулгүй байдлын үүднээс ашиглах нь хог болно. Хоёр нийтлэг модуль нь RC522 чип эсвэл PN532 чипийг хоёуланг нь NXP үйлдвэрлэдэг.

Хэрэв та миний бусад төслүүдийн аль нэгийг уншсан бол би хямд PIC микроконтроллер, угсрах хэл дээрх програмыг ашиглах дуртай гэдгийг мэдэж байна. Тиймээс миний хайж байсан зүйл бол модулиуд болон RFID хаягуудтай ярилцахад шаардлагатай алхамуудын дараалал байв. Модульд зориулсан олон тооны жишээ програмууд байдаг боловч ихэнх нь Arduino -д зориулсан 'C' програм дээр бичигдсэн бөгөөд SPI интерфэйсийг ашигладаг. Түүнчлэн, чипс болон Mifare хаягийн гарын авлага нь бага зэрэг шифрлэгддэг. Энэ нийтлэл нь үндсэндээ төслийг эхлүүлэхдээ хүсч байсан мэдээллийнхээ тухай юм. Би бас модуль бүрт шаардагдах үндсэн командуудыг гүйцэтгэх PIC угсрах програм хангамжийн програмуудыг агуулдаг. Та PIC болон/эсвэл угсрах хэлийг ашигладаггүй байсан ч гэсэн эх код нь алхам бүрийг гүйцэтгэхэд шаардлагатай тусгай командуудын талаар сайн ойлголттой байх ёстой.

Алхам 1: Цуваа интерфэйсүүд

Цуваа интерфэйсүүд
Цуваа интерфэйсүүд
Цуваа интерфэйсүүд
Цуваа интерфэйсүүд
Цуваа интерфэйсүүд
Цуваа интерфэйсүүд
Цуваа интерфэйсүүд
Цуваа интерфэйсүүд

Эдгээр модульд ашигласан хоёр чип нь SPI, I2C, эсвэл UART (HSSP) -ээр дамжуулан харилцах чадвартай. PN532 модуль нь хүссэн интерфэйсийг сонгоход хэрэглэгддэг DIP унтраалгатай боловч MFRC522 модуль нь SPI интерфейсэд зориулагдсан байдаг. Би PIC-ийн суулгасан UART-ийг ашиглахыг илүүд үздэг тул MFRC522 модулийг UART горимд оруулах арга байгаа эсэхийг олж мэдэхийн тулд онлайнаар ан хийдэг байсан. Миний олж мэдсэн зүйл бол самбар дээрх нэг ул мөрийг огтлох явдал юм. Энэхүү зүсэлт нь чипний EA зүүгээс 3.3 вольтыг үр дүнтэй арилгадаг. Техникийн хувьд EA зүүг газардуулгатай холбох ёстой боловч чипний зүүний нягтыг харгалзан олон хүн гагнуурын ажлыг хийж чадахгүй. Санаа зовох хэрэггүй, учир нь EA зүү нь дотоод таталтгүй бөгөөд хуучин TTL логик оролт шиг "хөвдөггүй". Таслах цэгийг чип диаграм болон самбарын хэсгийн зургийг үзнэ үү. Зөвхөн EA зүү рүү шууд очиж буй богино мөрийг хайчилж аваарай.

Алхам 2: Техник хангамж

Техник хангамж
Техник хангамж

UART холбооны тоног төхөөрөмжийн холболтыг дээрх диаграммд үзүүлэв. MFRC522 -ийн UART холболтыг самбар дээр тэмдэглээгүй боловч схемд үзүүлсэн шиг SDA зүү нь UART -ийн өгөгдлийг хүлээн авдаг бөгөөд MISO зүү нь UART -ийн өгөгдлийг дамжуулдаг. PN532 модуль нь самбарын доод талд UART тэмдэглэгээтэй байдаг.

Хоёр модуль нь 3.3 вольт дээр ажилладаг бөгөөд PIC TX зүүгээс 5 вольтын логик түвшинг хязгаарлах шаардлагатай байдаг. LCD холболт бол миний өмнөх хэд хэдэн төслүүдэд ашигласан стандарт 4 битийн тохиргоо юм. Бүх зурвасын анхдагч форматыг стандарт 1602 LCD (2 мөр 16 тэмдэгт) болгон тохируулсан болно. Надад дибаг хийх явцад түүхий өгөгдлийн овоолго хийхэд ашигладаг 2 мөр бүхий 40 тэмдэгт бүхий LCD дэлгэц байдаг тул дэлгэцийн нэмэлт зайг ашиглах боломжийг олгодог програм хангамжид тодорхойлолтыг оруулсан болно.

Алхам 3: Мэдээллийн блокууд

Энэхүү төсөлд ашиглагдах Mifare Classic 1k хаягууд нь 16 салбар, салбар бүрт 4 өгөгдлийн блок, өгөгдлийн блок тутамд 16 байтаар тохируулагдсан болно. 64 дата блокоос ердөө 47 -ийг нь ашиглах боломжтой. Өгөгдлийн блок 0 нь үйлдвэрлэгчийн өгөгдлийг агуулдаг бөгөөд 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63 блокуудыг Трейлер блок гэж нэрлэдэг. Чиргүүлийн блокууд нь салбар бүрийн хамгийн сүүлийн блок бөгөөд тэдгээр нь хоёр түлхүүр болон блок руу нэвтрэх битүүдийг агуулдаг. Түлхүүрүүд ба блок руу нэвтрэх битүүд нь зөвхөн тухайн салбарын өгөгдлийн блокуудад хамаардаг тул та салбар бүрт өөр өөр түлхүүрүүд болон хандалтын дүрмүүдтэй байж болно. Анхдагч түлхүүрүүдийг "FF FF FF FF FFh" гэж тохируулсан болно. Энэхүү үндсэн төслийн хувьд би зөвхөн нэг өгөгдлийн блок ашигладаг бөгөөд үндсэн түлхүүрүүд болон хандалтын битүүдийг хадгалдаг. Эдгээр карттай холбоотой олон баримт бичиг байдаг тул тэдгээрийг илүү нарийвчлан судлахыг хүсвэл "Mifare" -ийг онлайнаар хайж олох эсвэл NXP вэбсайтад зочлоорой.

Алхам 4: Ерөнхий ажиллагаа

Хоёр модуль хоёулаа хандах хандлага, хаягууд руу хандах хандлагаараа өвөрмөц боловч ажил гүйцэтгэхийн тулд ерөнхий процесс шаардлагатай байдаг. Энэ төслийн хувьд шошго нь Mifare Classic 1k төрөл бөгөөд антенны талбарт нэг удаад зөвхөн нэг хаягийг зөвшөөрдөг гэж бид үзэж байна. Үндсэн алхамуудыг доор тодорхойлсон болно.

· Модулийг эхлүүлэх: Ерөнхийдөө энэ нь чипт бүртгүүлэхдээ утга бичих, "сэрээх" командыг илгээх, антен руу тэжээл асаах гэх мэт зүйлсийг шаарддаг. Батерейгаар ажилладаг аппликейшн дээр та батерейгаа хэмнэхийн тулд антенны хүчийг асаах, унтраахыг хүсч байна, гэхдээ энэ энгийн програмын хувьд бид үүнийг нэг удаа асаагаад дараа нь асаах болно.

· Крипто тугийг цэвэрлэ (зөвхөн 522): Шошго баталгаажсан үед хэрэглэгчид шошго бүхий харилцаа холбоо шифрлэгдэх болно гэдгийг мэдэгдэхийн тулд туг тохируулдаг. Энэ тугийг скан хийж буй шошго ижил байсан ч гэсэн дараагийн скан хийхээс өмнө хэрэглэгч цэвэрлэх шаардлагатай.

· Шошго хайх: Модуль нь үндсэндээ "Тэнд хэн нэгэн байна уу?" ба тэмдэг нь "Би энд байна" гэж хариулна. Хэрэв модуль хурдан хариу өгөхгүй бол сонсохоо болино. Энэ нь модулийг шошго олох хүртэл скан хийх командыг дахин дахин илгээх шаардлагатай гэсэн үг юм.

· Хэрэглэгчийн таних дугаар (UID) гэсэн шошго авах: Таг нь скан хийх хүсэлтэд хаягны төрөл гэх мэт хязгаарлагдмал мэдээллээр хариу өгөх болно. Энэ нь бид UID -ийг авахын тулд өөр тушаал илгээх шаардлагатай болж магадгүй гэсэн үг юм. UID нь Mifare Classic 1k хаягийн дөрвөн байт юм. Хэрэв бусад шошгуудын хувьд илүү урт байж болох ч энэ төсөл нь тэдгээрийг хөндөөгүй болно.

· Тагийг сонгоно уу (зөвхөн 522): UID нь хэрэглэгчийн унших, бичихийн тулд баталгаажуулахыг хүссэн тагийг сонгоход хэрэглэгддэг. Энэ нь антенны талбарт нэгээс олон шошго байж болох магадлал дээр үндэслэсэн болно. Энэ нь бидний энгийн програмын хувьд тийм биш боловч бид ямар ч байсан шошгыг сонгох хэрэгтэй.

· Шошгыг баталгаажуулах: Хэрэв бид шошгыг унших эсвэл бичихийг хүсч байвал энэ алхам шаардлагатай болно. Хэрэв бидний хийх ёстой зүйл бол аюулгүй байдлын энгийн програмын хаягийг ялгах явдал юм бол UID нь хангалттай. Баталгаажуулалт нь UID -ийг мэддэг байх ёстой бөгөөд нэвтрэхийг хүсч буй шошгоны өгөгдлийн салбарын крипто түлхүүрийг мэддэг байхыг шаарддаг. Энэ төслийн хувьд бид анхдагч түлхүүрүүдийг дагаж мөрддөг боловч миний дагаж мөрдөж буй төсөл нь түлхүүрүүдийг өөрчилдөг бөгөөд ингэснээр хаягийг цахим хэтэвч болгон ашиглах боломжтой болно.

· Шошгыг унших эсвэл бичих: Унших нь хүссэн өгөгдлийн блокийн бүх 16 байтыг буцааж өгдөг. Бичихийн тулд бүх 16 байтыг нэгэн зэрэг бичих шаардлагатай. Хэрэв та ижил мэдээллийн салбарт өөр блок унших эсвэл бичихийг хүсч байвал шошгыг дахин баталгаажуулах шаардлагагүй болно. Хэрэв та өөр мэдээллийн салбарт блок унших эсвэл бичихийг хүсч байвал тухайн салбарын түлхүүрийг ашиглан шошгыг дахин баталгаажуулах шаардлагатай болно.

Алхам 5: MFRC522 модульд нэвтрэх дараалал

Эхлэх журам нь миний үзсэн ихэнх програмуудаас олж авсан эдгээр үндсэн алхмуудыг агуулдаг.

· Дамми өгөгдлийн байт илгээх (дараагийн догол мөрийг үзнэ үү)

· Зөөлөн дахин тохируулах

· RF хүлээн авагчийн ашиг тусыг тохируулах (хэрэв анхдагчаас өөр зүйл хүсвэл)

· ASK модуляцийн хувийг 100% болгож тохируулна уу.

· ХХЗХ -ны тооцооллын үрийн утгыг тогтоох

· Антеныг асаана уу

· Програм хангамжийн хувилбарыг авах (шаардлагагүй)

Тодорхой бус шалтгааны улмаас миний модуль хүчээ авч, өгөгдлийн байтгүйгээр бичих командыг хүлээн авсан гэж бодож байна. Энэ бол миний модульд гарсан асуудал мөн эсэхийг би мэдэхгүй, гэхдээ би өөр газраас лавлагаа олж хараагүй. Би техник хангамж, програм хангамжийн аль алиныг нь туршиж үзсэн боловч асуудлыг шийдээгүй. Миний шийдэл бол модулийг эхлүүлэх горимын эхэнд "0" (тодорхойгүй) бүртгүүлэхийн тулд дам унших дуудлага нэмэх явдал байв. Хэрэв модуль үүнийг үл мэдэгдэх бичих командын өгөгдөл гэж үзвэл ямар нэгэн сөрөг нөлөө үзүүлэхгүй. Хэрэв үүнийг унших тушаал гэж үзвэл ямар ч ашигтай зүйл болохгүй. Ялангуяа зөвхөн модулийг тоног төхөөрөмжийг дахин тохируулах нь асуудлыг шийдэж чадахгүй байгаа тул би асуудлыг бүрэн тодорхойлж чадахгүй байгаа нь надад төвөг учруулж байна.

RC522 чип нь олон тооны бүртгэлээс бүрддэг бөгөөд ихэнх нь уншиж, бичдэг. Бичих ажлыг гүйцэтгэхийн тулд регистрийн дугаарыг модульд, дараа нь бичих утгыг илгээнэ. Уншихын тулд бүртгэлийн дугаарыг 0x80 дээр нэмж модульд илгээдэг. Бичих командын хариу нь хандсан бүртгэлийн цуурай юм. Унших командын хариу нь бүртгэлийн агуулга юм. Програм хангамж нь энэхүү мэдлэгийг ашиглан командыг зохих ёсоор гүйцэтгэсэн эсэхийг баталгаажуулдаг.

Алхам 6: PN532 модульд нэвтрэх дараалал

Эхлэх журам нь дараахь шаардлагатай алхмуудыг агуулна.

· Эхлүүлэх мөрийг илгээх: Энэ нь UART интерфэйсийн онцлог юм. Энэхүү гарын авлагад UART интерфэйс нь интерфэйс дээр илэрсэн тав дахь дээшлэх ирмэг дээр сэрэх болно гэж заасан болно. Энэ нь 0x55, 0x55, 0x00, 0x00, 0x00, 0x00 илгээхийг зөвлөж байна. Ихэнх тохиолдолд ирмэг нь дээшлэх хангалттай тооны тэмдэгт байх ёстой бөгөөд тэдгээр нь командын оршил шиг харагдахгүй байх ёстой (00 00 FF).

· Модулийг сэрээх: Хэрэглэгчийн гарын авлагад оршуулснаар модуль нь "LowVbat" нэртэй унтах төлөвт шилжсэн болохыг харуулж байна. Энэ төлөвөөс гарахын тулд бид "SAMConfiguration" командыг илгээх ёстой.

PN532 нь оршил, мессеж, шуудангийн хэсгийг агуулсан тодорхой мессеж хэлбэрээр командыг илгээхийг хүлээж байна. Хариу мессежүүд ижил форматтай байна. Тушаал ба хариу мессежүүд хоёулаа TFI (Frame Identifier) болон командын хувилбарыг агуулдаг. Тушаал нь 0xD4 -ийн TFI -ийг ашигладаг бөгөөд хариу нь 0xD5 -ийг ашигладаг. Тушаалын хувилбарууд өөр өөр боловч хариулт нь үргэлж командын хувилбарыг нэмэгдүүлж, TFI -ийн дагуу байтаар буцаана. Энэхүү тууштай байдал нь хариултын мессежийг холбогдох мэдээллийг хялбархан сканнердах боломжийг олгодог.

Тушаалын мессеж бүр (оршил хэсгийг дагасан) нь зурвасын урт, 2 -р зурвасын урт, TFI, тушаал, өгөгдөл, хяналтын дүн, шуудангийн хэсгээс бүрдэнэ. Програм хангамж нь тус тусдаа тушаалуудыг бүтээдэг бөгөөд дараа нь хяналтын дүнг тооцоолж, шуудангийн догол мөрийг хавсаргадаг.

Хариу өгөх зурвасын формат нь командын хэлбэртэй төстэй юм. Ердийн хариулт нь ACK (00 00 FF 00 FF 00), дараа нь командын тодорхой хариултыг агуулна. Командын хариулт бүр 00 00 FF -ийн оршилоос эхэлдэг. Хариулт нь мөн TFI байт D5 байх ёстой бөгөөд дараа нь командын дугаарыг 1 -ээр нэмэгдүүлнэ. Манай "SAMConfiguration" командын хувьд (14) энэ нь 15 байх болно. "SAMConfiguration" комманд дараах хариуг авна: 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00.

Илгээх боломжтой модульд зориулагдсан бусад командууд байдаг боловч энэ програмд шаардлагагүй байдаг. Гэсэн хэдий ч би програмын хувилбарын дугаарыг авахын тулд дуудаж болох ердийн горимыг оруулсан болно. Ердийн хариулт (ACK ба оршилын дараа) нь: 06 FA D5 03 32 01 06 07 E8 00. "01 06 07" нь firmware хувилбарын дугаар 1.6.7 -ийг заана.

Алхам 7: Tag Access дараалал

Модуль бэлэн болсны дараа бид хаягууд руу тусгай команд илгээж болно. Шошгоны өгөгдлийг унших, бичихийн тулд түүний таних дугаар (UID) байх шаардлагатай. UID болон түлхүүрийг дараа нь өгөгдлийн тодорхой салбарыг унших/бичих эрх олгоход ашиглах болно. Өгөгдлийг унших/бичих нь өгөгдлийн блок дахь бүх 16 байт дээр үргэлж хийгддэг. Энэ нь ердийн програм нь өгөгдлийн блокыг уншиж, өгөгдлийг хүссэнээр өөрчилж, дараа нь шинэ өгөгдлийг шошгон дээр бичнэ гэсэн үг юм.

Алхам 8: Програм хангамж

PIC UART нь байтын өгөгдлийг хүлээн авах бүрт тасалдал зохицуулагч програм хангамжийг дууддаг. Өмнөх UART төслүүдийн заримд би тасалдал зохицуулагч ашиглахын оронд RX тасалдлын тугийг зүгээр л асууж чадсан. Энэ нь энэ програм хангамжийн хувьд тийм биш юм, ялангуяа PN532 нь RC522 -ээс хамаагүй өндөр хурдны хурдтай ажилладаг. RC522 -ийн UART интерфейс нь 9600 baud -аар хязгаарлагддаг бол PN532 -ийн анхдагч утга нь 115k бөгөөд 1.288M Baud хүртэл өндөрт тохируулж болно. Хүлээн авсан байтыг буфер хэсэгт хадгалдаг бөгөөд програм хангамжийн үндсэн хэсэг нь шаардлагатай бол тэдгээрийг сэргээдэг.

New_Msg туг нь байт хүлээн авсныг, Byte_Count нь хичнээн их байгааг харуулна. Би програм хангамжид дибаг хийх явцад хүлээн авах буферын агуулгыг харуулахын тулд дуудаж болох "Disp_Buff" горимыг оруулсан болно. Зарим буцах зурвасууд нь ердийн 1602 дэлгэцийг дүүргэх болно, гэхдээ би онлайн илүүдэл электроникийн сайт дээрээс олсон 2 мөр бүхий LCD -ийн 40 тэмдэгттэй. "Max_Line" тодорхойлолтыг таны LCD хэмжээтэй тохируулж болно. Хэрэв "Max_Line" -д хүрсэн бол "Disp_Buff" горимыг хоёр дахь мөрөнд бичиж үргэлжлүүлнэ. Хэрэв та 4 мөртэй LCD дэлгэцтэй бол гурав, дөрөв дэх мөрөнд үргэлжлүүлэхийн тулд энэ горимд бага зэрэг код нэмж болно. PN532 -ийн хувьд тугийг тохируулах боломжтой бөгөөд ингэснээр горим нь хүлээн авсан бүх байтыг хаядаг эсвэл уншсан хариултаас 16 өгөгдлийн байтыг хаядаг.

Хүлээн авах буфер эсвэл Byte_Count -ийг цэвэрлэх шаардлагагүй, учир нь New_Msg тугийг цэвэрлэх нь Byte_Count -ийг тасалдлын зохицуулагчаар цэвэрлэхэд хүргэдэг бөгөөд үүнийг буферт индекс болгон ашигладаг. New_Msg нь тушаалын алхам бүрийн өмнө ихэвчлэн цэвэрлэгддэг бөгөөд ингэснээр тухайн командын үр дүнг хялбархан олж, шалгаж болно. RC522 -д энэ нь хүлээн авах буфер нь ихэвчлэн 1 -ээс 4 байттай байдаг гэсэн үг юм. Өгөгдлийн блок унших гэх мэт зарим тохиолдолд байтуудыг FIFO -аас хүлээн авах буфер руу шилжүүлэхийн тулд Read_FIFO командыг олон удаа өгөх ёстой. PN532 -ийн бүх командын үр дүн хүлээн авах буферт дуусдаг тул шаардлагатай байтуудыг олохын тулд скан хийх процедурыг гүйцэтгэдэг.

Програм хангамжийн гол давталт нь таг хайж, дараа нь унших/бичихийн тулд шошгыг баталгаажуулдаг. Энд орсон туршилтын програм хангамжийн хувьд Junk_Num хувьсагчийг үндсэн давталт бүрт өөрчилж, хаяг руу бичих явцад ашигладаг. Бичсэн утгууд нь Junk_Num -ийн утга ба Junk_Num -ийн 1 -ийн нэмэлтүүдийн хооронд ээлжлэн солигддог. Эцэст нь бичсэн 16 утгыг уншиж, харуулна. Мессеж бүрийг унших цаг гаргахын тулд ердийн дуудлага хоцорсон алхам бүрт дэлгэцийн зурвасууд байдаг. Алдааны мессежийг бас өгдөг боловч ихэвчлэн үйлдлийн явцад хаяг устгагдсан тохиолдолд л гардаг.

Програм хангамжийг эхлүүлэх хэсэг нь зөвхөн хүчийг асаахад хийгддэг кодын хэсэг бөгөөд хэрэв програм хангамжийг дахин тохируулах нь тогтоогдвол алгасдаг. Алдааны мэдэгдлүүд нь үндсэн давталтаас гарах арга зам болох програм хангамжийг дахин тохируулснаар дуусгавар болдог. Дахин тохируулах нь "Tilt" горимд явагддаг бөгөөд энэ нь зүгээр л Watchdog Timer -ийг идэвхжүүлж, дараа нь хязгаарлалтыг хүлээж хязгааргүй хүрд рүү ордог.

Алхам 9: MFRC522 өвөрмөц програм хангамж

RC522 чип нь шошготой холбоо тогтоохын тулд PN532 чипээс илүү бага түвшний зааварчилгаа шаарддаг. Энэ нь "C" програмчлалын эсрэг ассемблер хэл дээр програмчлахтай адил юм. Өөр нэг мэдэгдэхүйц ялгаа нь RC522 нь тагтай харилцах нь FIFO буфераар дамжихыг шаарддаг явдал юм. "Write_FIFO" ба "Read_FIFO" горимууд нь эдгээр ажлуудыг гүйцэтгэдэг. MFRC522 програм хангамж нь үндсэн функцүүдийг бүтээсэн доод түвшний олон командуудын хэсгийг агуулдаг.

RC522 -ийн таг командын хяналтын дүнг тооцоолох нь PN532 -ээс ялгаатай. FIFO дээр tag командыг байгуулсны дараа хяналтын дүнг тооцоолох модулийн командыг илгээдэг. 16 битийн үр дүнг tag командад автоматаар нэмдэггүй боловч 8 битийн хоёр регистрээс унших боломжтой. Хяналтын дүнг тооцоолох нь FIFO дахь өгөгдлийг устгадаг тул шаардлагатай дараалал дараах байдалтай байна.

· FIFO дээр командыг бий болгох

· Хяналтын дүнг тооцоолох тушаал өгөх

· FIFO дээрх командыг дахин бүтээнэ үү

· ХХЗХ -ны бүртгэлийг уншиж, хяналтын дүнгийн байтыг FIFO -д бичнэ үү

· Transceive эсвэл Authenticate командыг илгээнэ үү

Transceive тушаал нь FIFO -ийн буферийг дамжуулж, дараа нь шошгоноос хариу ирэхийг хүлээж авахын тулд хүлээн авах горимд автоматаар шилжих болно. Өгөгдлийг бодитоор дамжуулахын тулд Transceive командын дараа BitFramingRegister дэх StartSend битийн тохиргоог хийх ёстой. Баталгаажуулах тушаалд ийм шаардлага байхгүй.

Ерөнхийдөө онлайнаар ашиглах боломжтой Arduino "C" кодын програмууд нь зөв хариултыг цаг тухайд нь хүлээн авахын тулд тасалдлын тугны бүртгэл болон завсарлагааны бүртгэлийг ашигладаг. Миний бодлоор энэ нь цаг хугацааны хувьд чухал биш програмын хувьд хэт их зүйл юм. Үүний оронд би програм хангамжийн богино хугацааны хоцролтыг ашиглан хариуг хүлээж, дараа нь зөв эсэхийг нь шалгадаг. Mifare хаягийн гарын авлагад янз бүрийн гүйлгээ хийх цаг хугацаа, хүлээгдэж буй тооны байтыг хүлээн авах хугацааг нарийвчлан тусгасан болно. Эдгээр цагийн хоцрогдол нь ихэнх доод түвшний тушаалын дэд програмуудад суурилагдсан байдаг.

Алхам 10: PN532 өвөрмөц програм хангамж

Модулийг эхлүүлсний дараа шошгыг хайж олох, баталгаажуулахын тулд шаардлагатай алхмуудыг зохих тушаалыг бичиж өгсний дараа шаардлагатай өгөгдлийг бичснээр гүйцэтгэнэ. Скан хийх тушаал нь UID -ийг буцааж өгдөг бөгөөд үүнийг баталгаажуулалтад ашигладаг. Үүний дараа шошгыг уншиж, бичээд хаягласан өгөгдлийн блокийн 16 байтыг илгээх эсвэл буцаана.

Эхлүүлэх дарааллыг өмнө нь нарийвчлан тодорхойлсон бөгөөд програмын ижил горим нь модулийг "LowVbat" төлөвөөс гаргахын тулд SAMConfiguration командыг илгээдэг. Scan, Authentication, Tag унших/бичих гэх мэт бусад үндсэн тушаалуудыг холбогдох горимд дэс дараалан суулгасан болно. Хяналтын дүнг тооцоолохдоо командын байтыг нэмж, нэмэлтийг хийж, дараа нь 1 -ийг нэмж 2 -ийн нэмэлт болгоно. 8 битийн үр дүнг postamble-ийн өмнөхөн тушаалын мөрөнд нэмнэ.

RC522 шиг FIFO байдаггүй тул бүрэн хариултын мессежийг автоматаар хүлээн авдаг. "Find_Response" горим нь хүлээн авах өгөгдлийн буферийг TFI (0xD5) -д сканнерддаг. Уг процедур нь хүлээгдэж буй мессеж ямар байх ёстойг мэддэг бөгөөд давуу талтай бөгөөд өгөгдөл агуулаагүй энгийн ACK хариултыг үл тоомсорлодог. TFI -ийг олсны дараа хүссэн хариултууд нь үүнээс мэдэгдэж буй офсет юм. Командын echo болон тушаалын статусын байтыг "Read_Buff" горимоор хадгалж дараа нь баталгаажуулдаг.

Энэ бол энэ нийтлэлд зориулагдсан зүйл юм. Миний электроникийн бусад төслүүдийг www.boomerrules.wordpress.com дээрээс үзнэ үү

Зөвлөмж болгож буй: