M5Unit-NFC 0.0.3 git rev:59f5362
Loading...
Searching...
No Matches
ST25R3916_definition.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_ST25R3916_DEFINITION_HPP
11#define M5_UNIT_NFC_ST25R3916_DEFINITION_HPP
12
13#include <cstdint>
14
15namespace m5 {
16namespace unit {
17
22namespace st25r3916 {
23
29enum class InitiatorOperationMode : uint8_t {
30 NFCIP1 = 0x00 << 3,
31 ISO14443A = 0x01 << 3,
32 ISO14443B = 0x02 << 3,
33 FeliCa = 0x03 << 3,
34 NFCForumType1 = 0x04 << 3,
35 SubCarrierStream = 0x0E << 3,
36 BPSKStream = 0x0F << 3,
37};
38
44enum class TargetOperationMode : uint8_t {
45 ISO14443A = 0x01 << 3,
46 Felica = 0x04 << 3,
47 NFCIP1 = 0x07 << 3,
48 FelicaBitrate = 0x0C << 3,
49 ISO14443ABitrate = 0x09 << 3,
50 // BothBitrate = 0x0D << 3, //!< Felica and ISO14443A bit rate detection mode
51};
52
55constexpr uint32_t PT_MEMORY_A_LENGTH{15};
56constexpr uint32_t PT_MEMORY_F_LENGTH{21};
57constexpr uint32_t PT_MEMORY_TSN_LENGTH{12};
60
61namespace command {
63// ==== Space-A
64// I/O configuration
65constexpr uint8_t REG_IO_CONFIGURATION_1{0x00};
66constexpr uint8_t REG_IO_CONFIGURATION_2{0x01};
67// Operation control and mode definition
68constexpr uint8_t REG_OPERATION_CONTROL{0x02};
69constexpr uint8_t REG_MODE_DEFINITION{0x03};
70constexpr uint8_t REG_BITRATE_DEFINITION{0x04};
71// Protocol configuration
72constexpr uint8_t REG_ISO14443A_SETTINGS{0x05};
73constexpr uint8_t REG_ISO14443B_SETTINGS{0x06};
74constexpr uint8_t REG_FELICA_SETTINGS{0x07};
75constexpr uint8_t REG_NFCIP_1_PASSIVE_TARGET_DEFINITION{0x08};
76constexpr uint8_t REG_STREAM_MODE_DEFINITION{0x09};
77constexpr uint8_t REG_AUXILIARY_DEFINITION{0x0A};
78// Receiver configuration
79constexpr uint8_t REG_RECEIVER_CONFIGURATION_1{0x0B};
80constexpr uint8_t REG_RECEIVER_CONFIGURATION_2{0x0C};
81constexpr uint8_t REG_RECEIVER_CONFIGURATION_3{0x0D};
82constexpr uint8_t REG_RECEIVER_CONFIGURATION_4{0x0E};
83// Timer definition
84constexpr uint8_t REG_MASK_RECEIVER_TIMER{0x0F};
85constexpr uint8_t REG_NO_RESPONSE_TIMER_1{0x10};
86constexpr uint8_t REG_NO_RESPONSE_TIMER_2{0x11};
87constexpr uint8_t REG_TIMER_AND_EMV_CONTROL{0x12};
88constexpr uint8_t REG_GENERAL_PURPOSE_TIMER_1{0x13};
89constexpr uint8_t REG_GENERAL_PURPOSE_TIMER_2{0x14};
90constexpr uint8_t REG_PPON2_FIELD_WAITING{0x15};
91// Interrupt and associated reporting
92constexpr uint8_t REG_MASK_MAIN_INTERRUPT{0x16};
93constexpr uint8_t REG_MASK_TIMER_AND_NFC_INTERRUPT{0x17};
94constexpr uint8_t REG_MASK_ERROR_AND_WAKEUP_INTERRUPT{0x18};
95constexpr uint8_t REG_MASK_PASSIVE_TARGET_INTERRUPT{0x19};
96constexpr uint8_t REG_MAIN_INTERRUPT{0x1A};
97constexpr uint8_t REG_TIMER_AND_NFC_INTERRUPT{0x1B};
98constexpr uint8_t REG_ERROR_AND_WAKEUP_INTERRUPT{0x1C};
99constexpr uint8_t REG_PASSIVE_TARGET_INTERRUPT{0x1D};
100constexpr uint8_t REG_FIFO_STATUS_1{0x1E};
101constexpr uint8_t REG_FIFO_STATUS_2{0x1F};
102constexpr uint8_t REG_COLLISION_DISPLAY{0x20};
103constexpr uint8_t REG_PASSIVE_TARGET_DISPLAY{0x21};
104// Definition of number of transmitted bytes
105constexpr uint8_t REG_NUMBER_OF_TRANSMITTED_BYTES_1{0x22};
106constexpr uint8_t REG_NUMBER_OF_TRANSMITTED_BYTES_2{0x23};
107constexpr uint8_t REG_BITRATE_DETECTION_DISPLAY{0x24};
108// A/D converter output
109constexpr uint8_t REG_AD_CONVERTER_OUTPUT{0x25};
110// Antenna calibration
111constexpr uint8_t REG_ANTENNA_TUNING_CONTROL_1{0x26};
112constexpr uint8_t REG_ANTENNA_TUNING_CONTROL_2{0x27};
113// Antenna driver and modulation
114constexpr uint8_t REG_TX_DRIVER{0x28};
115constexpr uint8_t REG_PASSIVE_TARGET_MODULATION{0x29};
116// External field detector threshold
117constexpr uint8_t REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD{0x2A};
118constexpr uint8_t REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD{0x2B};
119// Regulator
120constexpr uint8_t REG_REGULATOR_VOLTAGE_CONTROL{0x2C};
121// Receiver state display
122constexpr uint8_t REG_RSSI_DISPLAY{0x2D};
123constexpr uint8_t REG_GAIN_REDUCTION_STATE{0x2E};
124// Capacitive sensor
125constexpr uint8_t REG_CAPACITIVE_SENSOR_CONTROL{0x2F};
126constexpr uint8_t REG_CAPACITIVE_SENSOR_DISPLAY{0x30};
127// Auxiliary display
128constexpr uint8_t REG_AUXILIARY_DISPLAY{0x31};
129// Wake-up
130constexpr uint8_t REG_WAKEUP_TIMER_CONTROL{0x32};
131constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_CONFIGURATION{0x33};
132constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_REFERENCE{0x34};
133constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_AUTO_AVERAGING_DISPLAY{0x35};
134constexpr uint8_t REG_AMPLITUDE_MEASUREMENT_DISPLAY{0x36};
135constexpr uint8_t REG_PHASE_MEASUREMENT_CONFIGURATION{0x37};
136constexpr uint8_t REG_PHASE_MEASUREMENT_REFERENCE{0x38};
137constexpr uint8_t REG_PHASE_MEASUREMENT_AUTO_AVERAGING_DISPLAY{0x39};
138constexpr uint8_t REG_PHASE_MEASUREMENT_DISPLAY{0x3A};
139constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_CONFIGURATION{0x3B};
140constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_REFERENCE{0x3C};
141constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_AUTO_AVERAGING_DISPLAY{0x3D};
142constexpr uint8_t REG_CAPACITANCE_MEASUREMENT_DISPLAY{0x3E};
143// IC identity
144constexpr uint8_t REG_IC_IDENTITY{0x3F};
145
146// ==== Space-B
147// Protocol configuration
148constexpr uint16_t REG_EMD_SUPPRESSION_CONFIGURATION{0x0005};
149constexpr uint16_t REG_SUBCARRIER_START_TIMER{0x0006};
150// Receiver configuration
151constexpr uint16_t REG_P2P_RECEIVER_CONFIGURATION{0x000B};
152constexpr uint16_t REG_CORRELATOR_CONFIGURATION_1{0x000C};
153constexpr uint16_t REG_CORRELATOR_CONFIGURATION_2{0x000D};
154// Timer definition
155constexpr uint16_t REG_SQUELCH_TIMER{0x000F};
156constexpr uint16_t REG_NFC_FIELD_ON_GUARD_TIMER{0x0015};
157// Antenna driver and modulation
158constexpr uint16_t REG_AUXILIARY_MODULATION_SETTING{0x0028};
159constexpr uint16_t REG_TX_DRIVER_TIMING{0x0029};
160// External field detector threshold
161constexpr uint16_t REG_RESISTIVE_AM_MODULATION{0x002A};
162constexpr uint16_t REG_TX_DRIVER_TIMING_DISPLAY{0x002B};
163// Regulator
164constexpr uint16_t REG_REGULATOR_DISPLAY{0x002C};
165// Protection
166constexpr uint16_t REG_OVERSHOOT_PROTECTION_CONFIGURATION_1{0x0030};
167constexpr uint16_t REG_OVERSHOOT_PROTECTION_CONFIGURATION_2{0x0031};
168constexpr uint16_t REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1{0x0032};
169constexpr uint16_t REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2{0x0033};
170
171// ==== Direct commands
172constexpr uint8_t CMD_SET_DEFAULT{0xC1}; // Puts the ST25R3916/7 into powerup state
173constexpr uint8_t CMD_STOP_ALL_ACTIVITIES{0xC2}; // Stops all activities
174constexpr uint8_t CMD_TRANSMIT_WITH_CRC{0xC4}; // Starts a transmit sequence with automatic CRC generation
175constexpr uint8_t CMD_TRANSMIT_WITHOUT_CRC{0xC5}; // Starts a transmit sequence without automatic CRC generation
176constexpr uint8_t CMD_TRANSMIT_REQA{0xC6}; // Transmits REQA command (ISO14443A only)
177constexpr uint8_t CMD_TRANSMIT_WUPA{0xC7}; // Transmits WUPA command (ISO14443A only)
178constexpr uint8_t CMD_NFC_INITIAL_FIELD_ON{0xC8}; // Performs Initial RF Collision avoidance and switches on the field
179constexpr uint8_t CMD_NFC_RESPONSE_FIELD_ON{0xC9}; // Performs Response
180 // RF Collision avoidance and switches on the field
181constexpr uint8_t CMD_GO_TO_SENSE{0xCD}; // Puts the passive target logic into Sense (Idle) state
182constexpr uint8_t CMD_GO_TO_SLEEP{0xCE}; // Puts the passive target logic into Sleep (Halt) state
183constexpr uint8_t CMD_MASK_RECEIVE_DATA{0xD0}; // Stops receivers and RX decoders
184constexpr uint8_t CMD_UNMASK_RECEIVE_DATA{0xD1}; // Starts receivers and RX decoders
185constexpr uint8_t CMD_CHANGE_AM_MODULATION_STATE{0xD2}; // Changes AM modulation state
186constexpr uint8_t CMD_MEASURE_AMPLITUDE{0xD3}; // Measures the amplitude of the signal present on RFI inputs
187constexpr uint8_t CMD_RESET_RX_GAIN{0xD5}; // Resets receiver gain
188constexpr uint8_t CMD_ADJUST_REGULATORS{0xD6}; // Adjusts supply regulators according
189 // to the current supply voltage level
190constexpr uint8_t CMD_CALIBRATE_DRIVER_TIMING{0xD8}; // Starts the driver timing calibration
191constexpr uint8_t CMD_MEASURE_PHASE{0xD9}; // Measures the phase difference between the signal on RFO and RFI
192constexpr uint8_t CMD_CLEAR_RSSI{0xDA}; // Clears the RSSI bits and restarts the measurement
193constexpr uint8_t CMD_CLEAR_FIFO{0xDB}; // Clears FIFO
194constexpr uint8_t CMD_ENTER_TRANSPARENT_MODE{0xDC}; // Enters in Transparent mode
195constexpr uint8_t CMD_CALIBRATE_CAPACITIVE_SENSOR{0xDD}; // Calibrates capacitive sensor
196constexpr uint8_t CMD_MEASURE_CAPACITANCE{0xDE}; // Measures capacitance between CSO and CSI pin
197constexpr uint8_t CMD_MEASURE_POWER_SUPPLY{0xDF}; //
198constexpr uint8_t CMD_START_GENERAL_PURPOSE_TIMER{0xE0}; //
199constexpr uint8_t CMD_START_WAKEUP_TIMER{0xE1}; //
200constexpr uint8_t CMD_START_MASK_RECEIVE_TIMER{0xE2}; // Starts the mask-receive timer and squelch operation
201constexpr uint8_t CMD_Start_NO_RESPONSE_TIMER{0xE3}; //
202constexpr uint8_t CMD_START_PPON2_TIMER{0xE4}; //
203constexpr uint8_t CMD_STOP_NO_RESPONSE_TIMER{0xE8}; //
204constexpr uint8_t CMD_REGISTER_SPACEB_ACCESS{0xFB}; // Enables R/W access to register Space-B
205constexpr uint8_t CMD_TEST_ACCESS{0xFC}; // Enable R/W access to Test register
207} // namespace command
208
209constexpr uint8_t VALID_IDENTIFY_TYPE{0x05}; // 00000101b (ST25R3916/7)
210constexpr uint16_t MAX_FIFO_DEPTH{512};
211constexpr uint16_t PREFIX_SPACE_B{(uint16_t)command::CMD_REGISTER_SPACEB_ACCESS << 8};
212
213// Operation modes
214constexpr uint8_t OP_TRAILER_MASK{0x3F}; // 00111111b
215constexpr uint8_t OP_WRITE_REGISTER{0x00}; // 00xxxxxxb
216constexpr uint8_t OP_READ_REGISTER{0x40}; // 01xxxxxxb
217constexpr uint8_t OP_LOAD_FIFO{0x80}; // 10000000b
218constexpr uint8_t OP_LOAD_PT_MEMORY_A_CONFIG{0xA0}; // 10100000b
219constexpr uint8_t OP_LOAD_PT_MEMORY_F_CONFIG{0xA8}; // 10101000b
220constexpr uint8_t OP_LOAD_PT_MEMORY_TSN_DATA{0xAC}; // 10101100b
221constexpr uint8_t OP_READ_PT_MEMORY{0xBF}; // 10111111b
222constexpr uint8_t OP_READ_FIFO{0x9F}; // 10011111b
223constexpr uint8_t OP_DIRECT_COMMAND{0xC0}; // 11xxxxxxb;
224
229namespace regval {
231// 0x00 IO configuration register 1
232constexpr uint8_t i2c_thd1{0x20};
233constexpr uint8_t i2c_thd0{0x10};
234
235constexpr uint16_t i2c_thd116{0x2000};
236constexpr uint16_t i2c_thd016{0x1000};
237
238// 0x01 IO configuration register 2
239constexpr uint8_t sup3v{0x80};
240constexpr uint8_t aat_en{0x20};
241constexpr uint8_t io_drv_lvl{0x04};
242constexpr uint8_t miso_pd1{0x08};
243constexpr uint8_t miso_pd2{0x10};
244
245// 0x02 Operation control register
246constexpr uint8_t en{0x80}; // 1: Enables oscillator and regulator(Ready mode)
247constexpr uint8_t rx_en{0x40}; // 1: Enables Rx operation
248constexpr uint8_t tx_en{0x08}; // 1: Enables Tx operation
249constexpr uint8_t wu{0x04}; // 1: Enables Wake-up mode
250constexpr uint8_t en_fd_c1{0x02};
251constexpr uint8_t en_fd_c0{0x01};
252
253constexpr uint8_t en_fd_mask{0x03};
254constexpr uint8_t en_fd_off{0x00};
255constexpr uint8_t en_fd_manual_ca{0x01};
256constexpr uint8_t en_fd_manual_pdt{0x02};
257constexpr uint8_t en_fd_manual_auto{0x03};
258
259// 0x03 Mode definition register
260constexpr uint8_t targ{0x80}; // 0: Initiator 1: Target
261constexpr uint8_t tr_am{0x04};
262constexpr uint8_t nfc_ar0{0x01};
263constexpr uint8_t nfc_ar1{0x02};
264
265constexpr uint8_t nfc_ar8_off{0x00};
266constexpr uint8_t nfc_ar8_auto{0x01};
267constexpr uint8_t nfc_ar8_always{0x02};
268constexpr uint8_t nfc_ar8_RFI{0x03};
269
270// 0x05 ISO14443A and NFC 106kb/s settings register
271constexpr uint8_t no_tx_par{0x80};
272constexpr uint8_t no_rx_par{0x40};
273constexpr uint8_t nfc_f0{0x20};
274constexpr uint8_t antcl{0x01};
275
276// 0x08 NFCIP-1 passive target definition register
277constexpr uint8_t d_ac_ap2p{0x08};
278constexpr uint8_t d_212_424_1r{0x04};
279constexpr uint8_t d_106_ac_a{0x01};
280
281// 0x0A Auxiliary definition register
282constexpr uint8_t no_crc_rx{0x80};
283constexpr uint8_t dis_corr{0x04};
284constexpr uint8_t nfc_n1{0x02};
285constexpr uint8_t nfc_n0{0x01};
286
287constexpr uint8_t nfc_n_mask{0x03};
288
289// 0x0B Receiver configuration register 1
290constexpr uint8_t ch_sel{0x80};
291constexpr uint8_t z_600k{0x08};
292constexpr uint8_t h200{0x04};
293constexpr uint8_t h80{0x02};
294constexpr uint8_t z12k{0x01};
295
296// 0x0C Receiver configuration register 2
297constexpr uint8_t sqm_dyn{0x20}; // Automatic squelch activation after end of TX
298constexpr uint8_t puz_61{0x10}; // Select squelch trigger level.
299constexpr uint8_t agc_en{0x08}; // AGC enabled
300constexpr uint8_t agc_m{0x04}; // AGC operates during complete receive period
301constexpr uint8_t agc6_3{0x01}; // AGC ratio 0:3 1:6
302
303// 0x12 Timer and EMV control register
304constexpr uint8_t mrt_step{0x08}; // Mask receive timer step size 0:64/fc, 1:5126/fc
305constexpr uint8_t nrt_nfc{0x04}; // No-response timer start condition in AP2P initiator and target mode.
306constexpr uint8_t nrt_emv{0x02}; // 1: No-response timer EMV mode
307constexpr uint8_t nrt_step{0x01}; // No-response timer step size 0:64/fc, 1:4096/fc
308
309constexpr uint8_t nrt_gptc_none{0x00};
310constexpr uint8_t nrt_gptc_erx{0x01 << 5}; // Additionally starts at End of RX (after EOF)
311constexpr uint8_t nrt_gptc_srx{0x02 << 5}; // Additionally starts at Start of RX
312constexpr uint8_t nrt_gptc_etx{0x03 << 5}; // Additionally starts at End of TX
313
314// 0x1A Main interrupt register
315constexpr uint8_t I_osc{0x80}; // IRQ when oscillator frequency is stable
316constexpr uint8_t I_wl{0x40}; // IRQ due to FIFO water level
317constexpr uint8_t I_rxs{0x20}; // IRQ due to start of receive
318constexpr uint8_t I_rxe{0x10}; // IRQ due to end of receive
319constexpr uint8_t I_txe{0x08}; // IRQ due to end of transmission
320constexpr uint8_t I_col{0x04}; // IRQ due to bit collision
321constexpr uint8_t I_rx_rest{0x02}; // 1: Mask IRQ due to automatic reception restart
322constexpr uint8_t I_RFU1{0x01}; // RFU
323
324constexpr uint32_t I_osc32 = ((uint32_t)I_osc << 24);
325constexpr uint32_t I_wl32 = ((uint32_t)I_wl << 24);
326constexpr uint32_t I_rxs32 = ((uint32_t)I_rxs << 24);
327constexpr uint32_t I_rxe32 = ((uint32_t)I_rxe << 24);
328constexpr uint32_t I_txe32 = ((uint32_t)I_txe << 24);
329constexpr uint32_t I_col32 = ((uint32_t)I_col << 24);
330constexpr uint32_t I_rx_rest32 = ((uint32_t)I_rx_rest << 24);
331
332// 0x1B Timer and NFC interrupt register
333constexpr uint8_t I_dct{0x80}; // IRQ due to termination of direct command
334constexpr uint8_t I_nre{0x40}; // IRQ due to No-response timer expire
335constexpr uint8_t I_gpe{0x20}; // IRQ due to general purpose timer expire
336constexpr uint8_t I_eon{0x10}; // IRQ due to detection of external field
337constexpr uint8_t I_eof{0x08}; // IRQ due to detection of external field drop
338constexpr uint8_t I_cac{0x04}; // IRQ due to detection of collision during RF collision avoidance
339constexpr uint8_t I_cat{0x02}; // IRQ after minimum guard time expire
340constexpr uint8_t I_nfct{0x01}; // IRQ when in target mode the initiator bit rate was recognized
341
342constexpr uint32_t I_nre32 = ((uint32_t)I_nre << 16);
343constexpr uint32_t I_eon32 = ((uint32_t)I_eon << 16);
344constexpr uint32_t I_eof32 = ((uint32_t)I_eof << 16);
345constexpr uint32_t I_cac32 = ((uint32_t)I_cac << 16);
346constexpr uint32_t I_cat32 = ((uint32_t)I_cat << 16);
347constexpr uint32_t I_nfct32 = ((uint32_t)I_nfct << 16);
348
349// 0x1C Error and wake-up interrupt register
350constexpr uint8_t I_crc{0x80};
351constexpr uint8_t I_par{0x40};
352constexpr uint8_t I_err2{0x20};
353constexpr uint8_t I_err1{0x10};
354constexpr uint8_t I_wt{0x08};
355constexpr uint8_t I_wam{0x04};
356constexpr uint8_t I_wph{0x02};
357constexpr uint8_t I_wcap{0x01};
358
359constexpr uint32_t I_crc32 = ((uint32_t)I_crc << 8);
360constexpr uint32_t I_par32 = ((uint32_t)I_par << 8);
361constexpr uint32_t I_err232 = ((uint32_t)I_err2 << 8);
362constexpr uint32_t I_err132 = ((uint32_t)I_err1 << 8);
363
364// 0x1D Passive target interrupt register
365constexpr uint8_t I_ppon2{0x80}; // PPON2 field on waiting timer interrupt
366constexpr uint8_t I_sl_wl{0x40}; // IRQ for passive target slot number water level
367constexpr uint8_t I_apon{0x20}; // IRQ due to active P2P field on event
368constexpr uint8_t I_rxe_pta{0x10}; // IRQ due to end of receive
369constexpr uint8_t I_wu_f{0x08}; // NFC 212/424kb/s passive target Active interrupt
370constexpr uint8_t I_RFU4{0x04}; // RFU
371constexpr uint8_t I_wu_ax{0x02}; // Passive target Active* interrupt
372constexpr uint8_t I_wu_a{0x01}; // Passive target Active interrupt
373
374constexpr uint32_t I_apon32 = I_apon;
375constexpr uint32_t I_rxe_pta32 = I_rxe_pta;
376constexpr uint32_t I_wu_f32 = I_wu_f;
377constexpr uint32_t I_wu_ax32 = I_wu_ax;
378constexpr uint32_t I_wu_a32 = I_wu_a;
379
380// 0x21 Passive target display register
381constexpr uint8_t pta_state_power_off{0x00};
382constexpr uint8_t pta_state_idle{0x01};
383constexpr uint8_t pta_state_ready_l1{0x02};
384constexpr uint8_t pta_state_ready_l2{0x03};
385constexpr uint8_t pta_state_active{0x05};
386constexpr uint8_t pta_state_halt{0x09};
387constexpr uint8_t pta_state_ready_l1_x{0x0A};
388constexpr uint8_t pta_state_ready_l2_x{0x0B};
389constexpr uint8_t pta_state_active_x{0x0D};
390
391// 0x31 Auxiliary display register
392constexpr uint8_t a_cha{0x80};
393constexpr uint8_t efd_o{0x40};
394constexpr uint8_t tx_on{0x20};
395constexpr uint8_t osc_ok{0x10};
396constexpr uint8_t rx_on{0x08};
397constexpr uint8_t rx_act{0x04};
398constexpr uint8_t en_peer{0x02};
399constexpr uint8_t en_ac{0x01};
400
402} // namespace regval
403
404inline bool has_irq32_error(const uint32_t irq32)
405{
406 return irq32 & 0x0000FF00;
407}
408
409inline bool is_irq32_timeout(const uint32_t irq32)
410{
411 return irq32 & regval::I_nre32;
412}
413
414inline bool is_irq32_rxe(const uint32_t irq32)
415{
416 return irq32 & regval::I_rxe32;
417}
418
419inline bool is_irq32_rxs(const uint32_t irq32)
420{
421 return irq32 & regval::I_rxs32;
422}
423
424inline bool is_irq32_txe(const uint32_t irq32)
425{
426 return irq32 & regval::I_txe32;
427}
428
429inline bool is_irq32_collision(const uint32_t irq32)
430{
431 return irq32 & regval::I_col32;
432}
433
434uint8_t calculate_mrt(const uint32_t us, const bool mrt_step /* false:64, true:512*/);
435uint16_t calculate_nrt(const uint32_t ms, const bool nrt_step /* false:64, true:4096*/);
436inline uint8_t calculate_fdt(const uint32_t us);
437
438} // namespace st25r3916
439
440} // namespace unit
441} // namespace m5
442#endif
constexpr uint16_t MAX_FIFO_DEPTH
Maximum FIFO depth.
Definition ST25R3916_definition.hpp:210
constexpr uint32_t PT_MEMORY_F_LENGTH
F-config length.
Definition ST25R3916_definition.hpp:56
constexpr uint32_t PT_MEMORY_A_LENGTH
A-config length.
Definition ST25R3916_definition.hpp:55
InitiatorOperationMode
Initiator operation modes.
Definition ST25R3916_definition.hpp:29
@ SubCarrierStream
Sub-carrier stream mode.
@ NFCForumType1
NFC Forum Type 1 tag (Topaz)
@ NFCIP1
NFCIP-1 active communication.
TargetOperationMode
Target operation modes.
Definition ST25R3916_definition.hpp:44
@ FelicaBitrate
FeliCa bit rate detection mode.
@ ISO14443ABitrate
ISO14443A bit rate detection mode.
@ Felica
FeliCa™ passive target mode.
constexpr uint32_t PT_MEMORY_LENGTH
all length
Definition ST25R3916_definition.hpp:58
constexpr uint32_t PT_MEMORY_TSN_LENGTH
TSN data length.
Definition ST25R3916_definition.hpp:57
Top level namespace of M5stack.
Register setting value.
For ST25R3916.
Unit-related namespace.