M5Unit-NFC 0.0.3 git rev:59f5362
Loading...
Searching...
No Matches
unit_ST25R3916.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
10#ifndef M5_UNIT_NFC_UNIT_ST25R3916_HPP
11#define M5_UNIT_NFC_UNIT_ST25R3916_HPP
12
13#include <M5UnitComponent.hpp>
15#include "nfc/nfc.hpp"
16#include "nfc/a/nfca.hpp"
17#include "nfc/a/mifare.hpp"
19#include "nfc/b/nfcb.hpp"
20#include "nfc/f/nfcf.hpp"
21#include "nfc/v/nfcv.hpp"
22
23namespace m5 {
24namespace nfc {
25struct ListenerST25R3916ForA;
26struct ListenerST25R3916ForF;
27} // namespace nfc
28namespace unit {
29
30namespace nfc {
31struct AdapterST25R3916;
32} // namespace nfc
33
38class UnitST25R3916 : public Component {
39 M5_UNIT_COMPONENT_HPP_BUILDER(UnitST25R3916, 0x50 /* I2C address */);
40
41public:
42 explicit UnitST25R3916(const uint8_t arg = DEFAULT_ADDRESS) : Component(arg)
43 {
44 auto ccfg = component_config();
45 ccfg.clock = 400 * 1000U;
46 component_config(ccfg);
47 }
48 virtual ~UnitST25R3916() = default;
49
50 virtual bool begin() override;
51 virtual void update(const bool force = false) override;
52
57 struct config_t {
58 m5::nfc::NFC mode{m5::nfc::NFC::A};
59 bool vdd_voltage_5V{false};
60 uint8_t tx_am_modulation{13};
61 bool using_irq{};
62 uint8_t irq{};
63 bool emulation{};
64 };
65
68
70 {
71 return _cfg;
72 }
74 inline void config(const config_t& cfg)
75 {
76 _cfg = cfg;
77 }
79
81 inline m5::nfc::NFC NFCMode() const
82 {
83 return _nfcMode;
84 }
90 bool configureNFCMode(const m5::nfc::NFC mode);
96 bool configureEmulationMode(const m5::nfc::NFC mode);
97
103 inline bool isNFCMode(const m5::nfc::NFC mode)
104 {
105 return NFCMode() == mode;
106 }
107
115 bool writeDirectCommand(const uint8_t cmd, const uint8_t* data = nullptr, const uint32_t dlen = 0u);
116
119
123 bool clearInterrupts();
125
128
135 bool writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional = 0);
143 bool writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional = 0);
144
145 bool writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx);
147
150
157 bool readFIFOSize(uint16_t& bytes, uint8_t& bits);
166 uint32_t readFIFO(uint16_t& actual, uint8_t* buf, const uint16_t buf_size);
173 bool writeFIFO(const uint8_t* buf, const uint16_t buf_size);
175
178
183 inline bool readIOConfiguration1(uint8_t& value)
184 {
185 return read_register8(st25r3916::command::REG_IO_CONFIGURATION_1, value);
186 }
192 inline bool writeIOConfiguration1(const uint8_t value)
193 {
194 return write_register8(st25r3916::command::REG_IO_CONFIGURATION_1, value);
195 }
201 inline bool readIOConfiguration2(uint8_t& value)
202 {
203 return read_register8(st25r3916::command::REG_IO_CONFIGURATION_2, value);
204 }
210 inline bool writeIOConfiguration2(const uint8_t value)
211 {
212 return write_register8(st25r3916::command::REG_IO_CONFIGURATION_2, value);
213 }
219 inline bool readIOConfiguration(uint16_t& value)
220 {
221 return read_register16(st25r3916::command::REG_IO_CONFIGURATION_1, value);
222 }
228 inline bool writeIOConfiguration(const uint16_t value)
229 {
230 return write_register16(st25r3916::command::REG_IO_CONFIGURATION_1, value);
231 }
233
236
241 inline bool readOperationControl(uint8_t& value)
242 {
243 return read_register8(st25r3916::command::REG_OPERATION_CONTROL, value);
244 }
250 inline bool writeOperationControl(const uint8_t value)
251 {
252 return write_register8(st25r3916::command::REG_OPERATION_CONTROL, value);
253 }
259 inline bool readModeDefinition(uint8_t& value)
260 {
261 return read_register8(st25r3916::command::REG_MODE_DEFINITION, value);
262 }
268 inline bool writeModeDefinition(const uint8_t value)
269 {
270 return write_register8(st25r3916::command::REG_MODE_DEFINITION, value);
271 }
277 inline bool readBitrateDefinition(uint8_t& value)
278 {
279 return read_register8(st25r3916::command::REG_BITRATE_DEFINITION, value);
280 }
286 inline bool writeBitrateDefinition(const uint8_t value)
287 {
288 return write_register8(st25r3916::command::REG_BITRATE_DEFINITION, value);
289 }
291
294
299 inline bool readSettingsISO14443A(uint8_t& value)
300 {
301 return read_register8(st25r3916::command::REG_ISO14443A_SETTINGS, value);
302 }
308 inline bool writeSettingsISO14443A(const uint8_t value)
309 {
310 return write_register8(st25r3916::command::REG_ISO14443A_SETTINGS, value);
311 }
317 inline bool readSettingsISO14443B(uint8_t& value)
318 {
319 return read_register8(st25r3916::command::REG_ISO14443B_SETTINGS, value);
320 }
326 inline bool writeSettingsISO14443B(const uint8_t value)
327 {
328 return write_register8(st25r3916::command::REG_ISO14443B_SETTINGS, value);
329 }
335 inline bool readSettingsFelica(uint8_t& value)
336 {
337 return read_register8(st25r3916::command::REG_FELICA_SETTINGS, value);
338 }
344 inline bool writeSettingsFelica(const uint8_t value)
345 {
346 return write_register8(st25r3916::command::REG_FELICA_SETTINGS, value);
347 }
353 inline bool readNFCIP1PassiveTargetDefinition(uint8_t& value)
354 {
355 return read_register8(st25r3916::command::REG_NFCIP_1_PASSIVE_TARGET_DEFINITION, value);
356 }
362 inline bool writeNFCIP1PassiveTargetDefinition(const uint8_t value)
363 {
364 return write_register8(st25r3916::command::REG_NFCIP_1_PASSIVE_TARGET_DEFINITION, value);
365 }
371 inline bool readStreamModeDefinition(uint8_t& value)
372 {
373 return read_register8(st25r3916::command::REG_STREAM_MODE_DEFINITION, value);
374 }
380 inline bool writeStreamModeDefinition(const uint8_t value)
381 {
382 return write_register8(st25r3916::command::REG_STREAM_MODE_DEFINITION, value);
383 }
389 inline bool readAuxiliaryDefinition(uint8_t& value)
390 {
391 return read_register8(st25r3916::command::REG_AUXILIARY_DEFINITION, value);
392 }
398 inline bool writeAuxiliaryDefinition(const uint8_t value)
399 {
400 return write_register8(st25r3916::command::REG_AUXILIARY_DEFINITION, value);
401 }
402
408 inline bool readEMDSuppressionConfiguration(uint8_t& value)
409 {
410 return read_register8(st25r3916::command::REG_EMD_SUPPRESSION_CONFIGURATION, value);
411 }
417 inline bool writeEMDSuppressionConfiguration(const uint8_t value)
418 {
419 return write_register8(st25r3916::command::REG_EMD_SUPPRESSION_CONFIGURATION, value);
420 }
426 inline bool readSubcarrierStartTimer(uint8_t& value)
427 {
428 return read_register8(st25r3916::command::REG_SUBCARRIER_START_TIMER, value);
429 }
435 inline bool writeSubcarrierStartTimer(const uint8_t value)
436 {
437 return write_register8(st25r3916::command::REG_SUBCARRIER_START_TIMER, value);
438 }
440
443
448 inline bool readReceiverConfiguration1(uint8_t& value)
449 {
450 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
451 }
457 inline bool writeReceiverConfiguration1(const uint8_t value)
458 {
459 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
460 }
466 inline bool readReceiverConfiguration2(uint8_t& value)
467 {
468 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_2, value);
469 }
475 inline bool writeReceiverConfiguration2(const uint8_t value)
476 {
477 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_2, value);
478 }
484 inline bool readReceiverConfiguration3(uint8_t& value)
485 {
486 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_3, value);
487 }
493 inline bool writeReceiverConfiguration3(const uint8_t value)
494 {
495 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_3, value);
496 }
502 inline bool readReceiverConfiguration4(uint8_t& value)
503 {
504 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_4, value);
505 }
511 inline bool writeReceiverConfiguration4(const uint8_t value)
512 {
513 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_4, value);
514 }
520 inline bool readReceiverConfiguration(uint32_t& value)
521 {
522 return read_register32(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
523 }
529 inline bool writeReceiverConfiguration(const uint32_t value)
530 {
531 return write_register32(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
532 }
533
539 inline bool readP2PReceiverConfiguration(uint8_t& value)
540 {
541 return read_register8(st25r3916::command::REG_P2P_RECEIVER_CONFIGURATION, value);
542 }
548 inline bool writeP2PReceiverConfiguration(const uint8_t value)
549 {
550 return write_register8(st25r3916::command::REG_P2P_RECEIVER_CONFIGURATION, value);
551 }
557 inline bool readCorrelatorConfiguration1(uint8_t& value)
558 {
559 return read_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
560 }
566 inline bool writeCorrelatorConfiguration1(const uint8_t value)
567 {
568 return write_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
569 }
575 inline bool readCorrelatorConfiguration2(uint8_t& value)
576 {
577 return read_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_2, value);
578 }
584 inline bool writeCorrelatorConfiguration2(const uint8_t value)
585 {
586 return write_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_2, value);
587 }
593 inline bool readCorrelatorConfiguration(uint16_t& value)
594 {
595 return read_register16(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
596 }
602 inline bool writeCorrelatorConfiguration(const uint16_t value)
603 {
604 return write_register16(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
605 }
607
610
615 inline bool readMaskReceiveTimer(uint8_t& value)
616 {
617 return read_register8(st25r3916::command::REG_MASK_RECEIVER_TIMER, value);
618 }
624 inline bool writeMaskReceiveTimer(const uint8_t value)
625 {
626 return write_register8(st25r3916::command::REG_MASK_RECEIVER_TIMER, value);
627 }
633 inline bool readNoResponseTimer1(uint8_t& value)
634 {
635 return read_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
636 }
642 inline bool writeNoResponseTimer1(const uint8_t value)
643 {
644 return write_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
645 }
651 inline bool readNoResponseTimer2(uint8_t& value)
652 {
653 return read_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_2, value);
654 }
660 inline bool writeNoResponseTimer2(const uint8_t value)
661 {
662 return write_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_2, value);
663 }
669 inline bool readNoResponseTimer(uint16_t& value)
670 {
671 return read_register16(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
672 }
678 inline bool writeNoResponseTimer(const uint16_t value)
679 {
680 return write_register16(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
681 }
687 inline bool readTimerAndEMVControl(uint8_t& value)
688 {
689 return read_register8(st25r3916::command::REG_TIMER_AND_EMV_CONTROL, value);
690 }
696 inline bool writeTimerAndEMVControl(const uint8_t value)
697 {
698 return write_register8(st25r3916::command::REG_TIMER_AND_EMV_CONTROL, value);
699 }
705 inline bool readGeneralPurposeTimer1(uint8_t& value)
706 {
707 return read_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
708 }
714 inline bool writeGeneralPurposeTimer1(const uint8_t value)
715 {
716 return write_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
717 }
723 inline bool readGeneralPurposeTimer2(uint8_t& value)
724 {
725 return read_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_2, value);
726 }
732 inline bool writeGeneralPurposeTimer2(const uint8_t value)
733 {
734 return write_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_2, value);
735 }
741 inline bool readGeneralPurposeTimer(uint16_t& value)
742 {
743 return read_register16(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
744 }
750 inline bool writeGeneralPurposeTimer(const uint16_t value)
751 {
752 return write_register16(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
753 }
759 inline bool readPPON2FieldWaiting(uint8_t& value)
760 {
761 return read_register8(st25r3916::command::REG_PPON2_FIELD_WAITING, value);
762 }
768 inline bool writePPON2FieldWaiting(const uint8_t value)
769 {
770 return write_register8(st25r3916::command::REG_PPON2_FIELD_WAITING, value);
771 }
772
778 inline bool readSquelchTimer(uint8_t& value)
779 {
780 return read_register8(st25r3916::command::REG_SQUELCH_TIMER, value);
781 }
787 inline bool writeSquelchTimer(const uint8_t value)
788 {
789 return write_register8(st25r3916::command::REG_SQUELCH_TIMER, value);
790 }
796 inline bool readNFCFieldOnGuardTimer(uint8_t& value)
797 {
798 return read_register8(st25r3916::command::REG_NFC_FIELD_ON_GUARD_TIMER, value);
799 }
805 inline bool writeNFCFieldOnGuardTimer(const uint8_t value)
806 {
807 return write_register8(st25r3916::command::REG_NFC_FIELD_ON_GUARD_TIMER, value);
808 }
810
813
818 inline bool readMaskMainInterrupt(uint8_t& value)
819 {
820 return read_register8(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value);
821 }
827 inline bool writeMaskMainInterrupt(const uint8_t value)
828 {
829 if (write_register8(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value)) {
830 _enabled_irq = (_enabled_irq & 0x00FFFFFF) | ((uint32_t)~value << 24);
831 return true;
832 }
833 return false;
834 }
840 inline bool readMaskTimerAndNFCInterrupt(uint8_t& value)
841 {
842 return read_register8(st25r3916::command::REG_MASK_TIMER_AND_NFC_INTERRUPT, value);
843 }
849 inline bool writeMaskTimerAndNFCInterrupt(const uint8_t value)
850 {
851 if (write_register8(st25r3916::command::REG_MASK_TIMER_AND_NFC_INTERRUPT, value)) {
852 _enabled_irq = (_enabled_irq & 0xFF00FFFF) | ((uint32_t)~value << 16);
853 return true;
854 }
855 return false;
856 }
862 inline bool readMaskErrorAndWakeupInterrupt(uint8_t& value)
863 {
864 return read_register8(st25r3916::command::REG_MASK_ERROR_AND_WAKEUP_INTERRUPT, value);
865 }
871 inline bool writeMaskErrorAndWakeupInterrupt(const uint8_t value)
872 {
873 if (write_register8(st25r3916::command::REG_MASK_ERROR_AND_WAKEUP_INTERRUPT, value)) {
874 _enabled_irq = (_enabled_irq & 0xFFFF00FF) | ((uint32_t)~value << 8);
875 return true;
876 }
877 return false;
878 }
884 inline bool readMaskPassiveTargetInterrupt(uint8_t& value)
885 {
886 return read_register8(st25r3916::command::REG_MASK_PASSIVE_TARGET_INTERRUPT, value);
887 }
893 inline bool writeMaskPassiveTargetInterrupt(const uint8_t value)
894 {
895 if (write_register8(st25r3916::command::REG_MASK_PASSIVE_TARGET_INTERRUPT, value)) {
896 _enabled_irq = (_enabled_irq & 0xFFFFFF00) | (uint32_t)~value;
897 return true;
898 }
899 return false;
900 }
906 inline bool readMaskInterrupts(uint32_t& value)
907 {
908 return read_register32(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value);
909 }
915 inline bool writeMaskInterrupts(const uint32_t value)
916 {
917 if (write_register32(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value)) {
918 _enabled_irq = ~value;
919 return true;
920 }
921 return false;
922 }
923
929 inline bool readMainInterrupt(uint8_t& value)
930 {
931 return read_register8(st25r3916::command::REG_MAIN_INTERRUPT, value);
932 }
938 inline bool readTimerAndNFCInterrupt(uint8_t& value)
939 {
940 return read_register8(st25r3916::command::REG_TIMER_AND_NFC_INTERRUPT, value);
941 }
948 inline bool readErrorAndWakeupInterrupt(uint8_t& value)
949 {
950 return read_register8(st25r3916::command::REG_ERROR_AND_WAKEUP_INTERRUPT, value);
951 }
957 inline bool readPassiveTargetInterrupt(uint8_t& value)
958 {
959 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_INTERRUPT, value);
960 }
966 bool readInterrupts(uint32_t& value);
967
973 inline bool readFIFOStatus1(uint8_t& value)
974 {
975 return read_register8(st25r3916::command::REG_FIFO_STATUS_1, value);
976 }
982 inline bool readFIFOStatus2(uint8_t& value)
983 {
984 return read_register8(st25r3916::command::REG_FIFO_STATUS_2, value);
985 }
991 inline bool readFIFOStatus(uint16_t& value)
992 {
993 return read_register16(st25r3916::command::REG_FIFO_STATUS_1, value);
994 }
995
1001 inline bool readCollisionDisplay(uint8_t& value)
1002 {
1003 return read_register8(st25r3916::command::REG_COLLISION_DISPLAY, value);
1004 }
1010 inline bool readPassiveTargetDisplay(uint8_t& value)
1011 {
1012 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_DISPLAY, value);
1013 }
1015
1018
1023 inline bool readNumberOfTransmittedBytes1(uint8_t& value)
1024 {
1025 return read_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1026 }
1032 inline bool writeNumberOfTransmittedBytes1(const uint8_t value)
1033 {
1034 return write_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1035 }
1041 inline bool readNumberOfTransmittedBytes2(uint8_t& value)
1042 {
1043 return read_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_2, value);
1044 }
1050 inline bool writeNumberOfTransmittedBytes2(const uint8_t value)
1051 {
1052 return write_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_2, value);
1053 }
1059 inline bool readNumberOfTransmittedBytes(uint16_t& value)
1060 {
1061 return read_register16(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1062 }
1068 inline bool writeNumberOfTransmittedBytes(const uint16_t value)
1069 {
1070 return write_register16(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1071 }
1072
1079 inline bool writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)
1080 {
1081 // M5_LIB_LOGD("TransmitBytes:%u, %u", bytes, bits);
1082 return writeNumberOfTransmittedBytes(((bytes & 0x01FF) << 3 /* ntx 0-12 */) | (bits & 0x07 /*nbtx 0-2*/));
1083 }
1084
1090 inline bool readBitrateDetectionDisplay(uint8_t& value)
1091 {
1092 return read_register8(st25r3916::command::REG_BITRATE_DETECTION_DISPLAY, value);
1093 }
1095
1098
1103 inline bool readADConverterOutput(uint8_t& value)
1104 {
1105 return read_register8(st25r3916::command::REG_AD_CONVERTER_OUTPUT, value);
1106 }
1108
1111
1116 inline bool readAntennaTuningControl1(uint8_t& value)
1117 {
1118 return read_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1119 }
1125 inline bool writeAntennaTuningControl1(const uint8_t value)
1126 {
1127 return write_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1128 }
1134 inline bool readAntennaTuningControl2(uint8_t& value)
1135 {
1136 return read_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_2, value);
1137 }
1143 inline bool writeAntennaTuningControl2(const uint8_t value)
1144 {
1145 return write_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_2, value);
1146 }
1152 inline bool readAntennaTuningControl(uint16_t& value)
1153 {
1154 return read_register16(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1155 }
1161 inline bool writeAntennaTuningControl(const uint16_t value)
1162 {
1163 return write_register16(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1164 }
1166
1169
1174 inline bool readTXDriver(uint8_t& value)
1175 {
1176 return read_register8(st25r3916::command::REG_TX_DRIVER, value);
1177 }
1183 inline bool writeTXDriver(const uint8_t value)
1184 {
1185 return write_register8(st25r3916::command::REG_TX_DRIVER, value);
1186 }
1192 inline bool readPassiveTargetModulation(uint8_t& value)
1193 {
1194 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_MODULATION, value);
1195 }
1201 inline bool writePassiveTargetModulation(const uint8_t value)
1202 {
1203 return write_register8(st25r3916::command::REG_PASSIVE_TARGET_MODULATION, value);
1204 }
1205
1211 inline bool readAuxiliaryModulationSetting(uint8_t& value)
1212 {
1213 return read_register8(st25r3916::command::REG_AUXILIARY_MODULATION_SETTING, value);
1214 }
1220 inline bool writeAuxiliaryModulationSetting(const uint8_t value)
1221 {
1222 return write_register8(st25r3916::command::REG_AUXILIARY_MODULATION_SETTING, value);
1223 }
1229 inline bool readTXDriverTiming(uint8_t& value)
1230 {
1231 return read_register8(st25r3916::command::REG_TX_DRIVER_TIMING, value);
1232 }
1238 inline bool writeTXDriverTiming(const uint8_t value)
1239 {
1240 return write_register8(st25r3916::command::REG_TX_DRIVER_TIMING, value);
1241 }
1243
1246
1252 {
1253 return read_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD, value);
1254 }
1260 inline bool writeExternalFieldDetectorActivationThreshold(const uint8_t value)
1261 {
1262 return write_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD, value);
1263 }
1270 {
1271 return read_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD, value);
1272 }
1279 {
1280 return write_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD, value);
1281 }
1282
1288 inline bool readResistiveAMModulation(uint8_t& value)
1289 {
1290 return read_register8(st25r3916::command::REG_RESISTIVE_AM_MODULATION, value);
1291 }
1297 inline bool writeResistiveAMModulation(const uint8_t value)
1298 {
1299 return write_register8(st25r3916::command::REG_RESISTIVE_AM_MODULATION, value);
1300 }
1306 inline bool readTXDriverTimingDisplay(uint8_t& value)
1307 {
1308 return read_register8(st25r3916::command::REG_TX_DRIVER_TIMING_DISPLAY, value);
1309 }
1311
1314
1319 inline bool readRegulatorVoltageControl(uint8_t& value)
1320 {
1321 return read_register8(st25r3916::command::REG_REGULATOR_VOLTAGE_CONTROL, value);
1322 }
1328 inline bool writeRegulatorVoltageControl(const uint8_t value)
1329 {
1330 return write_register8(st25r3916::command::REG_REGULATOR_VOLTAGE_CONTROL, value);
1331 }
1337 inline bool readRegulatorDisplay(uint8_t& value)
1338 {
1339 return read_register8(st25r3916::command::REG_REGULATOR_DISPLAY, value);
1340 }
1342
1345
1350 inline bool readRSSIDisplay(uint8_t& value)
1351 {
1352 return read_register8(st25r3916::command::REG_RSSI_DISPLAY, value);
1353 }
1359 inline bool readGainReductionState(uint8_t& value)
1360 {
1361 return read_register8(st25r3916::command::REG_GAIN_REDUCTION_STATE, value);
1362 }
1364
1367
1372 inline bool readCapacitiveSensorControl(uint8_t& value)
1373 {
1374 return read_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_CONTROL, value);
1375 }
1381 inline bool writeCapacitiveSensorControl(const uint8_t value)
1382 {
1383 return write_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_CONTROL, value);
1384 }
1390 inline bool readCapacitiveSensorDisplay(uint8_t& value)
1391 {
1392 return read_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_DISPLAY, value);
1393 }
1395
1398
1403 inline bool readAuxiliaryDisplay(uint8_t& value)
1404 {
1405 return read_register8(st25r3916::command::REG_AUXILIARY_DISPLAY, value);
1406 }
1408
1411
1416 inline bool readWakeupTimerControl(uint8_t& value)
1417 {
1418 return read_register8(st25r3916::command::REG_WAKEUP_TIMER_CONTROL, value);
1419 }
1425 inline bool writeWakeupTimerControl(const uint8_t value)
1426 {
1427 return write_register8(st25r3916::command::REG_WAKEUP_TIMER_CONTROL, value);
1428 }
1429
1435 inline bool readAmplitudeMeasurementConfiguration(uint8_t& value)
1436 {
1437 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_CONFIGURATION, value);
1438 }
1444 inline bool writeAmplitudeMeasurementConfiguration(const uint8_t value)
1445 {
1446 return write_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_CONFIGURATION, value);
1447 }
1453 inline bool readAmplitudeMeasurementReference(uint8_t& value)
1454 {
1455 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_REFERENCE, value);
1456 }
1462 inline bool writeAmplitudeMeasurementReference(const uint8_t value)
1463 {
1464 return write_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_REFERENCE, value);
1465 }
1472 {
1473 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
1474 }
1480 inline bool readAmplitudeMeasurementDisplay(uint8_t& value)
1481 {
1482 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_DISPLAY, value);
1483 }
1484
1490 inline bool readPhaseMeasurementConfiguration(uint8_t& value)
1491 {
1492 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_CONFIGURATION, value);
1493 }
1499 inline bool writePhaseMeasurementConfiguration(const uint8_t value)
1500 {
1501 return write_register8(st25r3916::command::REG_PHASE_MEASUREMENT_CONFIGURATION, value);
1502 }
1508 inline bool readPhaseMeasurementReference(uint8_t& value)
1509 {
1510 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_REFERENCE, value);
1511 }
1517 inline bool writePhaseMeasurementReference(const uint8_t value)
1518 {
1519 return write_register8(st25r3916::command::REG_PHASE_MEASUREMENT_REFERENCE, value);
1520 }
1527 {
1528 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
1529 }
1535 inline bool readPhaseMeasurementDisplay(uint8_t& value)
1536 {
1537 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_DISPLAY, value);
1538 }
1539
1546 {
1547 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_CONFIGURATION, value);
1548 }
1554 inline bool writeCapacitanceMeasurementConfiguration(const uint8_t value)
1555 {
1556 return write_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_CONFIGURATION, value);
1557 }
1563 inline bool readCapacitanceMeasurementReference(uint8_t& value)
1564 {
1565 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_REFERENCE, value);
1566 }
1572 inline bool writeCapacitanceMeasurementReference(const uint8_t value)
1573 {
1574 return write_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_REFERENCE, value);
1575 }
1582 {
1583 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
1584 }
1590 inline bool readCapacitanceMeasurementDisplay(uint8_t& value)
1591 {
1592 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_DISPLAY, value);
1593 }
1595
1598
1603 inline bool readOvershootProtectionConfiguration1(uint8_t& value)
1604 {
1605 return read_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1606 }
1612 inline bool writeOvershootProtectionConfiguration1(const uint8_t value)
1613 {
1614 return write_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1615 }
1621 inline bool readOvershootProtectionConfiguration2(uint8_t& value)
1622 {
1623 return read_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_2, value);
1624 }
1630 inline bool writeOvershootProtectionConfiguration2(const uint8_t value)
1631 {
1632 return write_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_2, value);
1633 }
1639 inline bool readOvershootProtectionConfiguration(uint16_t& value)
1640 {
1641 return read_register16(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1642 }
1648 inline bool writeOvershootProtectionConfiguration(const uint16_t value)
1649 {
1650 return write_register16(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1651 }
1652
1658 inline bool readUndershootProtectionConfiguration1(uint8_t& value)
1659 {
1660 return read_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1661 }
1667 inline bool writeUndershootProtectionConfiguration1(const uint8_t value)
1668 {
1669 return write_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1670 }
1676 inline bool readUndershootProtectionConfiguration2(uint8_t& value)
1677 {
1678 return read_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2, value);
1679 }
1685 inline bool writeUndershootProtectionConfiguration2(const uint8_t value)
1686 {
1687 return write_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2, value);
1688 }
1694 inline bool readUndershootProtectionConfiguration(uint16_t& value)
1695 {
1696 return read_register16(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1697 }
1703 inline bool writeUndershootProtectionConfiguration(const uint16_t value)
1704 {
1705 return write_register16(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1706 }
1708
1711
1717 bool readICIdentity(uint8_t& type, uint8_t& rev);
1719
1722
1727 bool disableField();
1733 bool enableField();
1735
1736 // ----------------------------------------------------------------------------------------------
1739
1749 uint32_t nfcaTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
1750 const uint32_t timeout_ms);
1751 bool nfcaTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
1753 bool nfcaEmulationTransmit(const uint8_t* tx, const uint16_t tx_len);
1754 bool nfcaReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
1755
1761 inline bool nfcaRequest(uint16_t& atqa)
1762 {
1763 return nfca_request_wakeup(atqa, true);
1764 }
1770 inline bool nfcaWakeup(uint16_t& atqa)
1771 {
1772 return nfca_request_wakeup(atqa, false);
1773 }
1782 bool nfcaSelectWithAnticollision(bool& completed, m5::nfc::a::PICC& picc, const uint8_t lv);
1788 bool nfcaSelect(const m5::nfc::a::PICC& picc);
1796 bool nfcaReadBlock(uint8_t rx[16], const uint8_t block);
1803 bool nfcaWriteBlock(const uint8_t block, const uint8_t tx[16]);
1808 bool nfcaHlt();
1810
1811 // ----------------------------------------------------------------------------------------------
1814
1822 const m5::nfc::a::PICC& picc, const uint8_t block,
1823 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY)
1824 {
1825 return mifare_classic_authenticate(m5::nfc::a::Command::AUTH_WITH_KEY_A, picc, block, key);
1826 }
1835 const m5::nfc::a::PICC& picc, const uint8_t block,
1836 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY)
1837 {
1838 return mifare_classic_authenticate(m5::nfc::a::Command::AUTH_WITH_KEY_B, picc, block, key);
1839 }
1847 bool mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg = 0);
1849
1850 // ----------------------------------------------------------------------------------------------
1853
1862 bool nfcbTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
1863 const uint32_t timeout_ms);
1871 bool nfcbTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
1879 bool nfcbReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
1881
1882 // ----------------------------------------------------------------------------------------------
1885
1894 bool nfcfTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
1895 const uint32_t timeout_ms);
1903 bool nfcfTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
1905 bool nfcfEmulationTransmit(const uint8_t* tx, const uint16_t tx_len);
1913 bool nfcfReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
1915
1916 // ----------------------------------------------------------------------------------------------
1919
1930 bool nfcvTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_bytes,
1931 const uint32_t timeout_ms,
1932 const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4);
1941 bool nfcvTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms,
1942 const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4);
1950 bool nfcvReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms);
1952
1955 bool writePtMemoryA(const uint8_t* tx, const uint32_t tx_len);
1956 bool writePtMemoryF(const uint8_t* tx, const uint32_t tx_len);
1957 bool writePtMemoryTSN(const uint8_t* tx, const uint32_t tx_len);
1958 bool readPtMemory(uint8_t* rx, const uint32_t rx_len);
1960
1961 // For debug
1962 void dumpRegister();
1963
1964protected:
1965 friend struct m5::nfc::ListenerST25R3916ForA;
1966 friend struct m5::nfc::ListenerST25R3916ForF;
1967
1968 static void IRAM_ATTR on_irq(void* arg);
1969
1970 bool read_register8(const uint8_t reg, uint8_t& v);
1971 bool read_register8(const uint16_t reg, uint8_t& v);
1972 bool write_register8(const uint8_t reg, const uint8_t v);
1973 bool write_register8(const uint16_t reg, const uint8_t v);
1974 bool read_register16(const uint8_t reg, uint16_t& v);
1975 bool read_register16(const uint16_t reg, uint16_t& v);
1976 bool write_register16(const uint8_t reg, const uint16_t v);
1977 bool write_register16(const uint16_t reg, const uint16_t v);
1978 bool read_register32(const uint8_t reg, uint32_t& v);
1979 bool read_register32(const uint16_t reg, uint32_t& v);
1980 bool write_register32(const uint8_t reg, const uint32_t v);
1981 bool write_register32(const uint16_t reg, const uint32_t v);
1982
1983 bool write_fwt_timer(const uint32_t ms);
1984 bool write_mask_receiver_timer(const uint32_t us);
1985 bool write_squelch_timer(const uint32_t us);
1986
1987 uint32_t wait_for_interrupt(const uint32_t irq, const uint32_t timeout_ms = 100);
1988
1989 bool wait_for_FIFO(const uint32_t timeout_ms, const uint16_t required_size = 0);
1990 bool read_FIFO(std::vector<uint8_t>& out);
1991
1992 // Mode configuration
1993 bool configure_nfc_a();
1994 bool configure_nfc_b();
1995 bool configure_nfc_f();
1996 bool configure_nfc_v();
1997 bool nfc_initial_field_on();
1998
1999 bool configure_emulation_a();
2000 bool configure_emulation_f();
2001
2002 // Utility
2003 bool modify_bit_register8(const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask);
2004 bool modify_bit_register8(const uint16_t reg, const uint8_t set_mask, const uint8_t clear_mask);
2005 bool set_bit_register8(const uint8_t reg, const uint8_t bits);
2006 bool set_bit_register8(const uint16_t reg, const uint8_t bits);
2007 bool clear_bit_register8(const uint8_t reg, const uint8_t bits);
2008 bool clear_bit_register8(const uint16_t reg, const uint8_t bits);
2009 inline bool change_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask)
2010 {
2011 return modify_bit_register8(reg, mask & bits, mask);
2012 }
2013 inline bool change_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask)
2014 {
2015 return modify_bit_register8(reg, mask & bits, mask);
2016 }
2017 bool change_test_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask);
2018 bool change_test_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask);
2019
2020 bool modify_interrupts(const uint32_t clr, const uint32_t set);
2021 inline bool enable_interrupts(const uint32_t mask)
2022 {
2023 return modify_interrupts(mask, 0);
2024 }
2025 inline bool disable_interrupts(const uint32_t mask)
2026 {
2027 return modify_interrupts(0, mask);
2028 }
2029
2030 bool enable_osc();
2031 bool disable_field();
2032
2033 // NFC-A
2034 bool nfca_request_wakeup(uint16_t& atqa, const bool req);
2035 bool nfca_anti_collision(uint8_t rbuf[5], const uint8_t lv);
2036
2037 // MIFARE
2038 bool mifare_classic_send_encrypt(const uint8_t* tx, const uint16_t tx_len);
2039 bool mifare_classic_transceive_encrypt(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
2040 const uint32_t timeout_ms, const bool include_crc, const bool decrypt);
2041 bool mifare_classic_authenticate(const m5::nfc::a::Command cmd, const m5::nfc::a::PICC& picc, const uint8_t block,
2043
2044private:
2045 config_t _cfg{};
2046
2047 volatile uint32_t _stored_irq{};
2048 uint32_t _enabled_irq{}; // for !_using_irq
2049
2050 volatile bool _interrupt_occurred{};
2051 m5::nfc::NFC _nfcMode{};
2052 bool _encrypted{};
2053 bool _using_irq{};
2054
2056};
2057
2063 M5_UNIT_COMPONENT_HPP_BUILDER(CapST25R3916, 0x06 /* SPI CS pin */);
2064
2065public:
2066 explicit CapST25R3916(const uint8_t cs_pin = DEFAULT_ADDRESS);
2067 virtual ~CapST25R3916() = default;
2068
2069 virtual bool begin() override;
2070};
2071
2072} // namespace unit
2073} // namespace m5
2074#endif
Definitions for ST25R3916.
InitiatorOperationMode
Initiator operation modes.
Definition ST25R3916_definition.hpp:29
TargetOperationMode
Target operation modes.
Definition ST25R3916_definition.hpp:44
Crypto1 for MIFARE Classic.
Definition mifare_classic_crypto1.hpp:26
ST25R3916 unit in CapCC1101 (SPI)
Definition unit_ST25R3916.hpp:2062
ST25R3916 Unit.
Definition unit_ST25R3916.hpp:38
bool readFIFOStatus(uint16_t &value)
Read the FIFO status 1-2.
Definition unit_ST25R3916.hpp:991
bool readPhaseMeasurementAutoAveragingDisplay(uint8_t &value)
Read the phase measurement auto-averaging display.
Definition unit_ST25R3916.hpp:1526
bool writeMaskTimerAndNFCInterrupt(const uint8_t value)
Write the mask timer and NFC interrupt.
Definition unit_ST25R3916.hpp:849
bool readCapacitanceMeasurementAutoAveragingDisplay(uint8_t &value)
Read the capacitance measurement auto-averaging display.
Definition unit_ST25R3916.hpp:1581
bool readMaskMainInterrupt(uint8_t &value)
Read the mask main interrupt.
Definition unit_ST25R3916.hpp:818
bool readOperationControl(uint8_t &value)
Read the operation control.
Definition unit_ST25R3916.hpp:241
bool writeResistiveAMModulation(const uint8_t value)
Write the resistive AM modulation.
Definition unit_ST25R3916.hpp:1297
bool readADConverterOutput(uint8_t &value)
Read the number of transmitted bytes 2.
Definition unit_ST25R3916.hpp:1103
bool writeEMDSuppressionConfiguration(const uint8_t value)
Write the EMD suppression configuration.
Definition unit_ST25R3916.hpp:417
bool nfcaHlt()
Hlt for PICC.
Definition unit_ST25R3916_nfca.cpp:477
bool writeIOConfiguration1(const uint8_t value)
Write the I/O configuration 1.
Definition unit_ST25R3916.hpp:192
bool readSquelchTimer(uint8_t &value)
Read the squelch timer.
Definition unit_ST25R3916.hpp:778
bool readMaskReceiveTimer(uint8_t &value)
Read the mask receive timer.
Definition unit_ST25R3916.hpp:615
bool nfcaEmulationTransmit(const uint8_t *tx, const uint16_t tx_len)
Transmit in emulation (PICC) mode with minimal I2C overhead.
Definition unit_ST25R3916_nfca.cpp:208
bool readPassiveTargetInterrupt(uint8_t &value)
Read the passive target interrupt.
Definition unit_ST25R3916.hpp:957
bool readTimerAndNFCInterrupt(uint8_t &value)
Read the timer and NFC interrupt.
Definition unit_ST25R3916.hpp:938
bool readAntennaTuningControl1(uint8_t &value)
Read the Antenna tuning control 1.
Definition unit_ST25R3916.hpp:1116
bool writeMaskReceiveTimer(const uint8_t value)
Write the mask receive timer.
Definition unit_ST25R3916.hpp:624
bool writeNumberOfTransmittedBytes(const uint16_t value)
Write the number of transmitted bytes 1-2.
Definition unit_ST25R3916.hpp:1068
bool writeDirectCommand(const uint8_t cmd, const uint8_t *data=nullptr, const uint32_t dlen=0u)
Write the direct command with data.
Definition unit_ST25R3916.cpp:376
bool writeCorrelatorConfiguration(const uint16_t value)
Write the correlator configuration 1-2.
Definition unit_ST25R3916.hpp:602
bool writeExternalFieldDetectorDeactivationThreshold(const uint8_t value)
Write the external field detector deactivation threshold.
Definition unit_ST25R3916.hpp:1278
bool writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional=0)
Write the initiator operation mode and transition to target mode.
Definition unit_ST25R3916.cpp:411
uint32_t nfcaTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transceive.
Definition unit_ST25R3916_nfca.cpp:180
bool readExternalFieldDetectorActivationThreshold(uint8_t &value)
Read the external field detector activation threshold.
Definition unit_ST25R3916.hpp:1251
bool readRegulatorVoltageControl(uint8_t &value)
Read the regulator voltage control.
Definition unit_ST25R3916.hpp:1319
bool readICIdentity(uint8_t &type, uint8_t &rev)
Read the IC identity.
Definition unit_ST25R3916.cpp:472
bool writeAmplitudeMeasurementReference(const uint8_t value)
Write the amplitude measurement reference.
Definition unit_ST25R3916.hpp:1462
bool writeExternalFieldDetectorActivationThreshold(const uint8_t value)
Write the external field detector activation threshold.
Definition unit_ST25R3916.hpp:1260
bool readAntennaTuningControl(uint16_t &value)
Read the Antenna tuning control 1-2.
Definition unit_ST25R3916.hpp:1152
bool writeOvershootProtectionConfiguration(const uint16_t value)
Write the overshoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1648
bool readInterrupts(uint32_t &value)
Read the all interrupt.
Definition unit_ST25R3916.cpp:382
bool readErrorAndWakeupInterrupt(uint8_t &value)
Read the error and wake-up interrupt.
Definition unit_ST25R3916.hpp:948
bool writeNoResponseTimer(const uint16_t value)
Write the no-response timer 1-2.
Definition unit_ST25R3916.hpp:678
bool readReceiverConfiguration3(uint8_t &value)
Read the receiver configuration 3.
Definition unit_ST25R3916.hpp:484
bool readSubcarrierStartTimer(uint8_t &value)
Read the subcarrier start timer.
Definition unit_ST25R3916.hpp:426
bool writeAntennaTuningControl1(const uint8_t value)
Write the Antenna tuning control 1.
Definition unit_ST25R3916.hpp:1125
bool clearInterrupts()
Clear interrupts flag.
Definition unit_ST25R3916.cpp:397
bool readNFCIP1PassiveTargetDefinition(uint8_t &value)
Read the NFCIP-1 passive target definition.
Definition unit_ST25R3916.hpp:353
bool writeSettingsISO14443A(const uint8_t value)
Write the settings for ISO14443A and NFC 106kb/s.
Definition unit_ST25R3916.hpp:308
bool readIOConfiguration2(uint8_t &value)
Read the I/O configuration 2.
Definition unit_ST25R3916.hpp:201
bool writeUndershootProtectionConfiguration1(const uint8_t value)
Write the undershoot protection configuration 1.
Definition unit_ST25R3916.hpp:1667
bool writeAmplitudeMeasurementConfiguration(const uint8_t value)
Write the amplitude measurement configuration.
Definition unit_ST25R3916.hpp:1444
bool nfcbTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transmit to NFC-B PICC.
Definition unit_ST25R3916_nfcb.cpp:155
bool readOvershootProtectionConfiguration(uint16_t &value)
Read the overshoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1639
bool writeReceiverConfiguration4(const uint8_t value)
Write the receiver configuration 4.
Definition unit_ST25R3916.hpp:511
bool readCapacitanceMeasurementReference(uint8_t &value)
Read the capacitance measurement reference.
Definition unit_ST25R3916.hpp:1563
bool writeIOConfiguration(const uint16_t value)
Definition unit_ST25R3916.hpp:228
bool readSettingsFelica(uint8_t &value)
Read the settings for ISO14443B and FeliCa.
Definition unit_ST25R3916.hpp:335
void config(const config_t &cfg)
Set the configuration.
Definition unit_ST25R3916.hpp:74
bool writeGeneralPurposeTimer2(const uint8_t value)
Write the general purpose timer 2.
Definition unit_ST25R3916.hpp:732
bool writeSettingsISO14443B(const uint8_t value)
Write the settings for ISO14443B.
Definition unit_ST25R3916.hpp:326
bool writePPON2FieldWaiting(const uint8_t value)
Write the PPON2 field waiting.
Definition unit_ST25R3916.hpp:768
bool nfcvReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
Receive from NFC-V PICC.
Definition unit_ST25R3916_nfcv.cpp:132
bool readTXDriverTimingDisplay(uint8_t &value)
Read the TX driver timing display.
Definition unit_ST25R3916.hpp:1306
bool writeBitrateDefinition(const uint8_t value)
Write the bitrate definition.
Definition unit_ST25R3916.hpp:286
bool nfcaWriteBlock(const uint8_t block, const uint8_t tx[16])
Write the 1 block / 4 pages (16 bytes)
Definition unit_ST25R3916_nfca.cpp:520
bool writeWakeupTimerControl(const uint8_t value)
Write the Wake-up timer control.
Definition unit_ST25R3916.hpp:1425
bool nfcaRequest(uint16_t &atqa)
Request for idle PICC.
Definition unit_ST25R3916.hpp:1761
bool readBitrateDefinition(uint8_t &value)
Read the bitrate definition.
Definition unit_ST25R3916.hpp:277
bool readFIFOStatus1(uint8_t &value)
Read the FIFO status 1.
Definition unit_ST25R3916.hpp:973
bool readFIFOStatus2(uint8_t &value)
Read the FIFO status 1.
Definition unit_ST25R3916.hpp:982
bool writeCapacitiveSensorControl(const uint8_t value)
Write the capacitive sensor control.
Definition unit_ST25R3916.hpp:1381
bool readMaskTimerAndNFCInterrupt(uint8_t &value)
Read the mask timer and NFC interrupt.
Definition unit_ST25R3916.hpp:840
bool writeOperationControl(const uint8_t value)
Write the operation control.
Definition unit_ST25R3916.hpp:250
bool readStreamModeDefinition(uint8_t &value)
Read the stream mode definition.
Definition unit_ST25R3916.hpp:371
bool mifareClassicAuthenticateB(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
Authentication using keyB of the specified block.
Definition unit_ST25R3916.hpp:1834
bool writeTXDriverTiming(const uint8_t value)
Write the TX driver timing.
Definition unit_ST25R3916.hpp:1238
bool writeCorrelatorConfiguration1(const uint8_t value)
Write the correlator configuration 1.
Definition unit_ST25R3916.hpp:566
bool writeCapacitanceMeasurementReference(const uint8_t value)
Write the capacitance measurement reference.
Definition unit_ST25R3916.hpp:1572
bool readAuxiliaryModulationSetting(uint8_t &value)
Read the auxiliary modulation setting.
Definition unit_ST25R3916.hpp:1211
bool writeFIFO(const uint8_t *buf, const uint16_t buf_size)
Write to FIFO.
Definition unit_ST25R3916.cpp:458
bool readMaskInterrupts(uint32_t &value)
Read the all mask.
Definition unit_ST25R3916.hpp:906
bool readMaskPassiveTargetInterrupt(uint8_t &value)
Read the mask passive target interrupt.
Definition unit_ST25R3916.hpp:884
bool readUndershootProtectionConfiguration(uint16_t &value)
Read the undershoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1694
bool writeCorrelatorConfiguration2(const uint8_t value)
Write the correlator configuration 2.
Definition unit_ST25R3916.hpp:584
bool writeOvershootProtectionConfiguration2(const uint8_t value)
Write the overshoot protection configuration 2.
Definition unit_ST25R3916.hpp:1630
bool nfcaReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
Transceive.
Definition unit_ST25R3916_nfca.cpp:218
bool nfcfTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transceive with NFC-F PICC.
Definition unit_ST25R3916_nfcf.cpp:79
bool writeGeneralPurposeTimer(const uint16_t value)
Write the general purpose timer 1-2.
Definition unit_ST25R3916.hpp:750
bool readReceiverConfiguration(uint32_t &value)
Read the receiver configuration 1-4.
Definition unit_ST25R3916.hpp:520
bool readPhaseMeasurementConfiguration(uint8_t &value)
Read the phase measurement configuration.
Definition unit_ST25R3916.hpp:1490
bool readReceiverConfiguration2(uint8_t &value)
Read the receiver configuration 2.
Definition unit_ST25R3916.hpp:466
bool readSettingsISO14443A(uint8_t &value)
Read the settings for ISO14443A and NFC 106kb/s.
Definition unit_ST25R3916.hpp:299
bool writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional=0)
Write the initiator operation mode and transition to initiator mode.
Definition unit_ST25R3916.cpp:404
bool writeP2PReceiverConfiguration(const uint8_t value)
Write the P2P receiver configuration.
Definition unit_ST25R3916.hpp:548
bool writeNoResponseTimer2(const uint8_t value)
Write the no-response timer 2.
Definition unit_ST25R3916.hpp:660
bool nfcvTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_bytes, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
Transceive.
Definition unit_ST25R3916_nfcv.cpp:90
bool configureNFCMode(const m5::nfc::NFC mode)
Configure NFC mode.
Definition unit_ST25R3916.cpp:244
uint32_t readFIFO(uint16_t &actual, uint8_t *buf, const uint16_t buf_size)
Read from FIFO.
Definition unit_ST25R3916.cpp:437
bool readAmplitudeMeasurementConfiguration(uint8_t &value)
Read the amplitude measurement configuration.
Definition unit_ST25R3916.hpp:1435
bool readGainReductionState(uint8_t &value)
Read the gain reduction state.
Definition unit_ST25R3916.hpp:1359
bool writeNumberOfTransmittedBytes1(const uint8_t value)
Write the number of transmitted bytes 1.
Definition unit_ST25R3916.hpp:1032
bool readCapacitanceMeasurementDisplay(uint8_t &value)
Read the capacitance measurement display.
Definition unit_ST25R3916.hpp:1590
bool writeNoResponseTimer1(const uint8_t value)
Write the no-response timer 1.
Definition unit_ST25R3916.hpp:642
bool writeNFCFieldOnGuardTimer(const uint8_t value)
Write the NFC field on guard timer.
Definition unit_ST25R3916.hpp:805
bool readMainInterrupt(uint8_t &value)
Read the main interrupt.
Definition unit_ST25R3916.hpp:929
bool readAmplitudeMeasurementDisplay(uint8_t &value)
Read the amplitude measurement display.
Definition unit_ST25R3916.hpp:1480
bool readNumberOfTransmittedBytes1(uint8_t &value)
Read the number of transmitted bytes 1.
Definition unit_ST25R3916.hpp:1023
bool writePassiveTargetModulation(const uint8_t value)
Write the passive target modulation.
Definition unit_ST25R3916.hpp:1201
bool writeMaskErrorAndWakeupInterrupt(const uint8_t value)
Write the mask error and wake-up interrupt.
Definition unit_ST25R3916.hpp:871
bool readGeneralPurposeTimer2(uint8_t &value)
Read the general purpose timer 2.
Definition unit_ST25R3916.hpp:723
bool writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx)
Write the initiator operation mode and transition to initiator mode.
Definition unit_ST25R3916.cpp:418
bool writePhaseMeasurementReference(const uint8_t value)
Write the phase measurement reference.
Definition unit_ST25R3916.hpp:1517
bool readEMDSuppressionConfiguration(uint8_t &value)
Read the EMD suppression configuration.
Definition unit_ST25R3916.hpp:408
bool isNFCMode(const m5::nfc::NFC mode)
Is the current operating mode the one specified?
Definition unit_ST25R3916.hpp:103
bool readOvershootProtectionConfiguration1(uint8_t &value)
Read the overshoot protection configuration 1.
Definition unit_ST25R3916.hpp:1603
bool writePhaseMeasurementConfiguration(const uint8_t value)
Write the phase measurement configuration.
Definition unit_ST25R3916.hpp:1499
bool writeIOConfiguration2(const uint8_t value)
Definition unit_ST25R3916.hpp:210
bool writeUndershootProtectionConfiguration2(const uint8_t value)
Write the undershoot protection configuration 2.
Definition unit_ST25R3916.hpp:1685
bool readP2PReceiverConfiguration(uint8_t &value)
Read the P2P receiver configuration.
Definition unit_ST25R3916.hpp:539
bool writeRegulatorVoltageControl(const uint8_t value)
Write the regulator voltage control.
Definition unit_ST25R3916.hpp:1328
bool writeTimerAndEMVControl(const uint8_t value)
Write the timer and EMV control.
Definition unit_ST25R3916.hpp:696
bool writeNumberOfTransmittedBytes2(const uint8_t value)
Write the number of transmitted bytes 2.
Definition unit_ST25R3916.hpp:1050
bool writeReceiverConfiguration1(const uint8_t value)
Write the receiver configuration 1.
Definition unit_ST25R3916.hpp:457
bool nfcaTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transceive.
Definition unit_ST25R3916_nfca.cpp:190
bool readGeneralPurposeTimer(uint16_t &value)
Read the general purpose timer 1-2.
Definition unit_ST25R3916.hpp:741
bool nfcaReadBlock(uint8_t rx[16], const uint8_t block)
Read the 1 block / 4 pages (16 bytes)
Definition unit_ST25R3916_nfca.cpp:505
bool readTXDriver(uint8_t &value)
Read the TX driver.
Definition unit_ST25R3916.hpp:1174
bool mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)
Operation for the value block.
Definition unit_ST25R3916_nfca.cpp:771
bool readRegulatorDisplay(uint8_t &value)
Read the regulator display.
Definition unit_ST25R3916.hpp:1337
bool readMaskErrorAndWakeupInterrupt(uint8_t &value)
Read the mask error and wake-up interrupt.
Definition unit_ST25R3916.hpp:862
bool writeMaskMainInterrupt(const uint8_t value)
Write the mask main interrupt.
Definition unit_ST25R3916.hpp:827
bool readIOConfiguration(uint16_t &value)
Read the I/O configuration 1-2.
Definition unit_ST25R3916.hpp:219
bool readCollisionDisplay(uint8_t &value)
Read the collision display.
Definition unit_ST25R3916.hpp:1001
bool readExternalFieldDetectorDeactivationThreshold(uint8_t &value)
Read the external field detector deactivation threshold.
Definition unit_ST25R3916.hpp:1269
bool readCorrelatorConfiguration(uint16_t &value)
Read the correlator configuration 1-2.
Definition unit_ST25R3916.hpp:593
bool readOvershootProtectionConfiguration2(uint8_t &value)
Read the overshoot protection configuration 2.
Definition unit_ST25R3916.hpp:1621
bool writeMaskPassiveTargetInterrupt(const uint8_t value)
Write the mask passive target interrupt.
Definition unit_ST25R3916.hpp:893
bool nfcfEmulationTransmit(const uint8_t *tx, const uint16_t tx_len)
Transmit in emulation (PICC) mode with minimal I2C overhead.
Definition unit_ST25R3916_nfcf.cpp:104
config_t config()
Gets the configuration.
Definition unit_ST25R3916.hpp:69
bool writeReceiverConfiguration(const uint32_t value)
Write the receiver configuration 1-4.
Definition unit_ST25R3916.hpp:529
bool nfcaWakeup(uint16_t &atqa)
Wakeup for idle/halt PICC.
Definition unit_ST25R3916.hpp:1770
bool writeGeneralPurposeTimer1(const uint8_t value)
Write the general purpose timer 1.
Definition unit_ST25R3916.hpp:714
bool writeAuxiliaryModulationSetting(const uint8_t value)
Write the auxiliary modulation setting.
Definition unit_ST25R3916.hpp:1220
bool readCapacitiveSensorDisplay(uint8_t &value)
Read the capacitive sensor display.
Definition unit_ST25R3916.hpp:1390
bool readTimerAndEMVControl(uint8_t &value)
Read the timer and EMV control.
Definition unit_ST25R3916.hpp:687
bool readPhaseMeasurementReference(uint8_t &value)
Read the phase measurement reference.
Definition unit_ST25R3916.hpp:1508
bool disableField()
Disable the Field to stop communication with the PICC.
Definition unit_ST25R3916.cpp:484
bool readNoResponseTimer1(uint8_t &value)
Read the no-response timer 1.
Definition unit_ST25R3916.hpp:633
bool writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)
Write the number of transmitted bytes and after bytes.
Definition unit_ST25R3916.hpp:1079
bool readGeneralPurposeTimer1(uint8_t &value)
Read the general purpose timer 1.
Definition unit_ST25R3916.hpp:705
bool writeSquelchTimer(const uint8_t value)
Write the squelch timer.
Definition unit_ST25R3916.hpp:787
bool writeSettingsFelica(const uint8_t value)
Write the settings for ISO14443B and FeliCa.
Definition unit_ST25R3916.hpp:344
bool readReceiverConfiguration4(uint8_t &value)
Definition unit_ST25R3916.hpp:502
bool readNoResponseTimer(uint16_t &value)
Read the no-response timer 1-2.
Definition unit_ST25R3916.hpp:669
bool readCapacitiveSensorControl(uint8_t &value)
Read the capacitive sensor control.
Definition unit_ST25R3916.hpp:1372
bool readFIFOSize(uint16_t &bytes, uint8_t &bits)
Read the FIFO size.
Definition unit_ST25R3916.cpp:424
bool writeMaskInterrupts(const uint32_t value)
Write the all mask.
Definition unit_ST25R3916.hpp:915
bool writeReceiverConfiguration3(const uint8_t value)
Write the receiver configuration 3.
Definition unit_ST25R3916.hpp:493
bool writeNFCIP1PassiveTargetDefinition(const uint8_t value)
Definition unit_ST25R3916.hpp:362
m5::nfc::NFC NFCMode() const
Gets the current operating mode.
Definition unit_ST25R3916.hpp:81
bool readBitrateDetectionDisplay(uint8_t &value)
Read the bit rate detection display.
Definition unit_ST25R3916.hpp:1090
bool readCapacitanceMeasurementConfiguration(uint8_t &value)
Read the capacitance measurement configuration.
Definition unit_ST25R3916.hpp:1545
bool readNFCFieldOnGuardTimer(uint8_t &value)
Read the NFC field on guard timer.
Definition unit_ST25R3916.hpp:796
bool writeAuxiliaryDefinition(const uint8_t value)
Write the Auxiliary definition.
Definition unit_ST25R3916.hpp:398
bool readAntennaTuningControl2(uint8_t &value)
Read the Antenna tuning control 2.
Definition unit_ST25R3916.hpp:1134
bool readSettingsISO14443B(uint8_t &value)
Read the settings for ISO14443B.
Definition unit_ST25R3916.hpp:317
bool readCorrelatorConfiguration2(uint8_t &value)
Read the correlator configuration 2.
Definition unit_ST25R3916.hpp:575
bool writeAntennaTuningControl(const uint16_t value)
Write the Antenna tuning control 1-2.
Definition unit_ST25R3916.hpp:1161
bool nfcvTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
Definition unit_ST25R3916_nfcv.cpp:99
bool readPPON2FieldWaiting(uint8_t &value)
Read the PPON2 field waiting.
Definition unit_ST25R3916.hpp:759
bool writeModeDefinition(const uint8_t value)
Write the mode definition.
Definition unit_ST25R3916.hpp:268
bool configureEmulationMode(const m5::nfc::NFC mode)
Configure NFC mode for emulation.
Definition unit_ST25R3916.cpp:285
bool nfcbTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transceive with NFC-B PICC.
Definition unit_ST25R3916_nfcb.cpp:149
bool readUndershootProtectionConfiguration1(uint8_t &value)
Read the undershoot protection configuration 1.
Definition unit_ST25R3916.hpp:1658
bool readNumberOfTransmittedBytes(uint16_t &value)
Read the number of transmitted bytes 1-2.
Definition unit_ST25R3916.hpp:1059
bool enableField()
Enable the Field to begin communication with the PICC.
Definition unit_ST25R3916.cpp:494
bool readAmplitudeMeasurementAutoAveragingDisplay(uint8_t &value)
Read the amplitude measurement auto-averaging display.
Definition unit_ST25R3916.hpp:1471
bool readWakeupTimerControl(uint8_t &value)
Read the Wake-up timer control.
Definition unit_ST25R3916.hpp:1416
bool writeAntennaTuningControl2(const uint8_t value)
Write the Antenna tuning control 2.
Definition unit_ST25R3916.hpp:1143
bool readPassiveTargetDisplay(uint8_t &value)
Read the passive target.
Definition unit_ST25R3916.hpp:1010
bool writeStreamModeDefinition(const uint8_t value)
Write the stream mode definition.
Definition unit_ST25R3916.hpp:380
bool readModeDefinition(uint8_t &value)
Read the mode definition.
Definition unit_ST25R3916.hpp:259
bool readPhaseMeasurementDisplay(uint8_t &value)
Read the phase measurement display.
Definition unit_ST25R3916.hpp:1535
bool readAmplitudeMeasurementReference(uint8_t &value)
Read the amplitude measurement reference.
Definition unit_ST25R3916.hpp:1453
bool nfcaSelect(const m5::nfc::a::PICC &picc)
Select specific PICC.
Definition unit_ST25R3916_nfca.cpp:430
bool readIOConfiguration1(uint8_t &value)
Read the I/O configuration 1.
Definition unit_ST25R3916.hpp:183
bool writeReceiverConfiguration2(const uint8_t value)
Write the receiver configuration 2.
Definition unit_ST25R3916.hpp:475
bool readNoResponseTimer2(uint8_t &value)
Read the no-response timer 2.
Definition unit_ST25R3916.hpp:651
bool readRSSIDisplay(uint8_t &value)
Read the external field detector deactivation threshold.
Definition unit_ST25R3916.hpp:1350
bool readCorrelatorConfiguration1(uint8_t &value)
Read the correlator configuration 1.
Definition unit_ST25R3916.hpp:557
bool nfcfReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
Receive from NFC-F PICC.
Definition unit_ST25R3916_nfcf.cpp:114
bool writeTXDriver(const uint8_t value)
Write the TX driver.
Definition unit_ST25R3916.hpp:1183
bool nfcbReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms)
Receive from NFC-B PICC.
Definition unit_ST25R3916_nfcb.cpp:175
bool writeUndershootProtectionConfiguration(const uint16_t value)
Write the undershoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1703
bool readUndershootProtectionConfiguration2(uint8_t &value)
Read the undershoot protection configuration 2.
Definition unit_ST25R3916.hpp:1676
bool readAuxiliaryDefinition(uint8_t &value)
Read the Auxiliary definition.
Definition unit_ST25R3916.hpp:389
bool readReceiverConfiguration1(uint8_t &value)
Read the receiver configuration 1.
Definition unit_ST25R3916.hpp:448
bool nfcaSelectWithAnticollision(bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)
Select PICC with anti-collision.
Definition unit_ST25R3916_nfca.cpp:370
bool readAuxiliaryDisplay(uint8_t &value)
Read the auxiliary display.
Definition unit_ST25R3916.hpp:1403
bool writeSubcarrierStartTimer(const uint8_t value)
Write the subcarrier start timer.
Definition unit_ST25R3916.hpp:435
bool readResistiveAMModulation(uint8_t &value)
Read the resistive AM modulation.
Definition unit_ST25R3916.hpp:1288
bool nfcfTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Definition unit_ST25R3916_nfcf.cpp:85
bool writeOvershootProtectionConfiguration1(const uint8_t value)
Write the overshoot protection configuration 1.
Definition unit_ST25R3916.hpp:1612
bool readNumberOfTransmittedBytes2(uint8_t &value)
Read the number of transmitted bytes 2.
Definition unit_ST25R3916.hpp:1041
bool mifareClassicAuthenticateA(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
Authentication using keyA of the specified block.
Definition unit_ST25R3916.hpp:1821
bool readTXDriverTiming(uint8_t &value)
Read the TX driver timing.
Definition unit_ST25R3916.hpp:1229
bool readPassiveTargetModulation(uint8_t &value)
Read the passive target modulation.
Definition unit_ST25R3916.hpp:1192
bool writeCapacitanceMeasurementConfiguration(const uint8_t value)
Write the capacitance measurement configuration.
Definition unit_ST25R3916.hpp:1554
MIFARE definitions.
std::array< uint8_t, 6 > Key
MIFARE classic Key.
Definition mifare.hpp:50
Crypto1 for MIFARE Classic.
Top level namespace of M5stack.
NFC related definitions.
Unit-related namespace.
NFC-V definitions.
NFC definitions.
NFC
NFC type.
Definition nfc.hpp:27
Bitrate
Communication bitrate.
Definition nfc.hpp:52
NFC-A definitions.
Command
ISO-14443-3/4,MIFARE,NTAG commands.
Definition nfca.hpp:538
NFC-B definitions.
NFC-F definitions.
NFC-V definitions.
ModulationMode
Definition nfcv.hpp:73
Definition emulation_layer_a_ST25R3916.cpp:52
Definition emulation_layer_f_ST25R3916.cpp:67
PICC for NFC-A.
Definition nfca.hpp:335
Settings for begin.
Definition unit_ST25R3916.hpp:57
bool using_irq
Exists IRQ PIN?
Definition unit_ST25R3916.hpp:61
bool vdd_voltage_5V
VDD voltage true:5V false:3.3V.
Definition unit_ST25R3916.hpp:59
m5::nfc::NFC mode
Initial target for Poll/Listen.
Definition unit_ST25R3916.hpp:58
uint8_t irq
IRQ PIN.
Definition unit_ST25R3916.hpp:62
bool emulation
Emulation mode?
Definition unit_ST25R3916.hpp:63
uint8_t tx_am_modulation
0-15 See also 4.5.48 TX driver register
Definition unit_ST25R3916.hpp:60