Go to the documentation of this file.
35 #include "mikrosdk_version.h"
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_i2c_master.h"
69 #define NTAG5LINK_CONFIG_SIGNATURE 0x1000
70 #define NTAG5LINK_CONFIG_HEADER 0x1008
71 #define NTAG5LINK_CONFIG_ID 0x1009
72 #define NTAG5LINK_CONFIG_NFC_GCH 0x100C
73 #define NTAG5LINK_CONFIG_NFC_CCH 0x100D
74 #define NTAG5LINK_CONFIG_NFC_AUTH_LIMIT 0x100E
75 #define NTAG5LINK_CONFIG_NFC_KH0 0x1010
76 #define NTAG5LINK_CONFIG_NFC_KP0 0x1011
77 #define NTAG5LINK_CONFIG_NFC_KH1 0x1012
78 #define NTAG5LINK_CONFIG_NFC_KP1 0x1013
79 #define NTAG5LINK_CONFIG_NFC_KH2 0x1014
80 #define NTAG5LINK_CONFIG_NFC_KP2 0x1015
81 #define NTAG5LINK_CONFIG_NFC_KH3 0x1016
82 #define NTAG5LINK_CONFIG_NFC_KP3 0x1017
83 #define NTAG5LINK_CONFIG_KEY_0 0x1020
84 #define NTAG5LINK_CONFIG_KEY_1 0x1024
85 #define NTAG5LINK_CONFIG_KEY_2 0x1028
86 #define NTAG5LINK_CONFIG_KEY_3 0x102C
87 #define NTAG5LINK_CONFIG_I2C_KH 0x1030
88 #define NTAG5LINK_CONFIG_I2C_PP_AND_PPC 0x1031
89 #define NTAG5LINK_CONFIG_I2C_AUTH_LIMIT 0x1032
90 #define NTAG5LINK_CONFIG_I2C_PWD_0 0x1033
91 #define NTAG5LINK_CONFIG_I2C_PWD_1 0x1034
92 #define NTAG5LINK_CONFIG_I2C_PWD_2 0x1035
93 #define NTAG5LINK_CONFIG_I2C_PWD_3 0x1036
94 #define NTAG5LINK_CONFIG_CONFIG 0x1037
95 #define NTAG5LINK_CONFIG_SYNC_DATA_BLOCK 0x1038
96 #define NTAG5LINK_CONFIG_PWM_GPIO_CONFIG 0x1039
97 #define NTAG5LINK_CONFIG_PWM0_ON_OFF 0x103A
98 #define NTAG5LINK_CONFIG_PWM1_ON_OFF 0x103B
99 #define NTAG5LINK_CONFIG_WDT_CFG_AND_SRAM_COPY 0x103C
100 #define NTAG5LINK_CONFIG_EH_AND_ED_CONFIG 0x103D
101 #define NTAG5LINK_CONFIG_I2C_SLAVE_MASTER_CFG 0x103E
102 #define NTAG5LINK_CONFIG_SEC_SRAM_AND_PP_AREA_1 0x103F
103 #define NTAG5LINK_CONFIG_SRAM_DEFAULT 0x1045
104 #define NTAG5LINK_CONFIG_AFI 0x1055
105 #define NTAG5LINK_CONFIG_DSFID 0x1056
106 #define NTAG5LINK_CONFIG_EAS_ID 0x1057
107 #define NTAG5LINK_CONFIG_NFC_PP_AREA_0_AND_PPC 0x1058
108 #define NTAG5LINK_CONFIG_NFC_LOCK_BLOCK 0x106A
109 #define NTAG5LINK_CONFIG_I2C_LOCK_BLOCK 0x108A
110 #define NTAG5LINK_CONFIG_NFC_SECTION_LOCK 0x1092
111 #define NTAG5LINK_CONFIG_I2C_SECTION_LOCK 0x1094
112 #define NTAG5LINK_CONFIG_I2C_PWD_0_AUTH 0x1096
113 #define NTAG5LINK_CONFIG_I2C_PWD_1_AUTH 0x1097
114 #define NTAG5LINK_CONFIG_I2C_PWD_2_AUTH 0x1098
115 #define NTAG5LINK_CONFIG_I2C_PWD_3_AUTH 0x1099
121 #define NTAG5LINK_SESSION_REG_STATUS 0x10A0
122 #define NTAG5LINK_SESSION_REG_CONFIG 0x10A1
123 #define NTAG5LINK_SESSION_REG_SYNC_DATA_BLOCK 0x10A2
124 #define NTAG5LINK_SESSION_REG_PWM_GPIO_CONFIG 0x10A3
125 #define NTAG5LINK_SESSION_REG_PWM0_ON_OFF 0x10A4
126 #define NTAG5LINK_SESSION_REG_PWM1_ON_OFF 0x10A5
127 #define NTAG5LINK_SESSION_REG_WDT_CONFIG 0x10A6
128 #define NTAG5LINK_SESSION_REG_EH_CONFIG 0x10A7
129 #define NTAG5LINK_SESSION_REG_ED_CONFIG 0x10A8
130 #define NTAG5LINK_SESSION_REG_I2C_SLAVE_CONFIG 0x10A9
131 #define NTAG5LINK_SESSION_REG_RESET_GEN 0x10AA
132 #define NTAG5LINK_SESSION_REG_ED_INTR_CLEAR 0x10AB
133 #define NTAG5LINK_SESSION_REG_I2C_MASTER_CONFIG 0x10AC
134 #define NTAG5LINK_SESSION_REG_I2C_MASTER_STATUS 0x10AD
135 #define NTAG5LINK_SESSION_REG_BYTE_0 0x00
136 #define NTAG5LINK_SESSION_REG_BYTE_1 0x01
137 #define NTAG5LINK_SESSION_REG_BYTE_2 0x02
138 #define NTAG5LINK_SESSION_REG_BYTE_3 0x03
156 #define NTAG5LINK_USER_MEMORY_ADDRESS_MIN 0x0000
157 #define NTAG5LINK_USER_MEMORY_ADDRESS_MAX 0x01FF
158 #define NTAG5LINK_CONFIG_MEMORY_ADDRESS_MIN 0x1000
159 #define NTAG5LINK_CONFIG_MEMORY_ADDRESS_MAX 0x109F
160 #define NTAG5LINK_SESSION_REG_ADDRESS_MIN 0x10A0
161 #define NTAG5LINK_SESSION_REG_ADDRESS_MAX 0x10AF
162 #define NTAG5LINK_MEMORY_BLOCK_SIZE 4
168 #define NTAG5LINK_CONFIG_0_SRAM_COPY_ENABLE 0x80
169 #define NTAG5LINK_CONFIG_0_EH_LOW_FIELD_STR 0x08
170 #define NTAG5LINK_CONFIG_0_EH_HIGH_FIELD_STR 0x0C
171 #define NTAG5LINK_CONFIG_0_LOCK_SESSION_REG 0x02
172 #define NTAG5LINK_CONFIG_0_AUTO_STANDBY_MODE_EN 0x01
173 #define NTAG5LINK_CONFIG_1_EH_ARBITER_MODE_EN 0x80
174 #define NTAG5LINK_CONFIG_1_USE_CASE_I2C_SLAVE 0x00
175 #define NTAG5LINK_CONFIG_1_USE_CASE_I2C_MASTER 0x10
176 #define NTAG5LINK_CONFIG_1_USE_CASE_GPIO_PWM 0x20
177 #define NTAG5LINK_CONFIG_1_USE_CASE_3_STATE 0x30
178 #define NTAG5LINK_CONFIG_1_ARBITER_NORMAL_MODE 0x00
179 #define NTAG5LINK_CONFIG_1_ARBITER_SRAM_MIRROR 0x04
180 #define NTAG5LINK_CONFIG_1_ARBITER_SRAM_PT 0x08
181 #define NTAG5LINK_CONFIG_1_ARBITER_SRAM_PHDC 0x0C
182 #define NTAG5LINK_CONFIG_1_SRAM_ENABLE 0x02
183 #define NTAG5LINK_CONFIG_1_PT_TRANSFER_I2C_NFC 0x00
184 #define NTAG5LINK_CONFIG_1_PT_TRANSFER_NFC_I2C 0x01
185 #define NTAG5LINK_CONFIG_2_GPIO1_IN_DISABLE 0x00
186 #define NTAG5LINK_CONFIG_2_GPIO1_IN_PULL_UP 0x40
187 #define NTAG5LINK_CONFIG_2_GPIO1_IN_ENABLE 0x80
188 #define NTAG5LINK_CONFIG_2_GPIO1_IN_PULL_DOWN 0xC0
189 #define NTAG5LINK_CONFIG_2_GPIO0_IN_DISABLE 0x00
190 #define NTAG5LINK_CONFIG_2_GPIO0_IN_PULL_UP 0x10
191 #define NTAG5LINK_CONFIG_2_GPIO0_IN_ENABLE 0x20
192 #define NTAG5LINK_CONFIG_2_GPIO0_IN_PULL_DOWN 0x30
193 #define NTAG5LINK_CONFIG_2_EXT_CMD_SUPPORT 0x08
194 #define NTAG5LINK_CONFIG_2_LOCK_BLK_CMD_SUPPORT 0x04
195 #define NTAG5LINK_CONFIG_2_GPIO1_HIGH_SLEW_RATE 0x02
196 #define NTAG5LINK_CONFIG_2_GPIO0_HIGH_SLEW_RATE 0x01
202 #define NTAG5LINK_CAPABILITY_CONTAINER_ADDRESS 0x0000
203 #define NTAG5LINK_CAPABILITY_CONTAINER 0xE1, 0x40, 0x80, 0x01
204 #define NTAG5LINK_NDEF_MESSAGE_START_ADDRESS 0x0001
205 #define NTAG5LINK_TYPE_NDEF_MESSAGE 0x03
206 #define NTAG5LINK_NDEF_RECORD_HEADER 0xD1
207 #define NTAG5LINK_NDEF_TYPE_LENGTH 0x01
208 #define NTAG5LINK_NDEF_URI_TYPE 'U'
209 #define NTAG5LINK_NDEF_MESSAGE_END_MARK 0xFE
215 #define NTAG5LINK_URI_PREFIX_0 0x00
216 #define NTAG5LINK_URI_PREFIX_1 0x01
217 #define NTAG5LINK_URI_PREFIX_2 0x02
218 #define NTAG5LINK_URI_PREFIX_3 0x03
219 #define NTAG5LINK_URI_PREFIX_4 0x04
220 #define NTAG5LINK_URI_PREFIX_5 0x05
221 #define NTAG5LINK_URI_PREFIX_6 0x06
222 #define NTAG5LINK_URI_PREFIX_7 0x07
223 #define NTAG5LINK_URI_PREFIX_8 0x08
224 #define NTAG5LINK_URI_PREFIX_9 0x09
225 #define NTAG5LINK_URI_PREFIX_10 0x0A
226 #define NTAG5LINK_URI_PREFIX_11 0x0B
227 #define NTAG5LINK_URI_PREFIX_12 0x0C
228 #define NTAG5LINK_URI_PREFIX_13 0x0D
229 #define NTAG5LINK_URI_PREFIX_14 0x0E
230 #define NTAG5LINK_URI_PREFIX_15 0x0F
231 #define NTAG5LINK_URI_PREFIX_16 0x10
232 #define NTAG5LINK_URI_PREFIX_17 0x11
233 #define NTAG5LINK_URI_PREFIX_18 0x12
234 #define NTAG5LINK_URI_PREFIX_19 0x13
235 #define NTAG5LINK_URI_PREFIX_20 0x14
236 #define NTAG5LINK_URI_PREFIX_21 0x15
237 #define NTAG5LINK_URI_PREFIX_22 0x16
238 #define NTAG5LINK_URI_PREFIX_23 0x17
239 #define NTAG5LINK_URI_PREFIX_24 0x18
240 #define NTAG5LINK_URI_PREFIX_25 0x19
241 #define NTAG5LINK_URI_PREFIX_26 0x1A
242 #define NTAG5LINK_URI_PREFIX_27 0x1B
243 #define NTAG5LINK_URI_PREFIX_28 0x1C
244 #define NTAG5LINK_URI_PREFIX_29 0x1D
245 #define NTAG5LINK_URI_PREFIX_30 0x1E
246 #define NTAG5LINK_URI_PREFIX_31 0x1F
247 #define NTAG5LINK_URI_PREFIX_32 0x20
248 #define NTAG5LINK_URI_PREFIX_33 0x21
249 #define NTAG5LINK_URI_PREFIX_34 0x22
250 #define NTAG5LINK_URI_PREFIX_35 0x23
257 #define NTAG5LINK_DEVICE_ADDRESS 0x54
275 #define NTAG5LINK_MAP_MIKROBUS( cfg, mikrobus ) \
276 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
277 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
278 cfg.hpd = MIKROBUS( mikrobus, MIKROBUS_RST ); \
279 cfg.ed = MIKROBUS( mikrobus, MIKROBUS_INT )
291 uint8_t value_bytes[ 4 ];
472 uint8_t mask, uint8_t data_in );
583 #endif // NTAG5LINK_H
void ntag5link_enable_device(ntag5link_t *ctx)
NTAG 5 Link enable device function.
err_t ntag5link_read_multiple_memory_block(ntag5link_t *ctx, uint16_t block_addr, ntag5link_block_t *block, uint8_t num_blocks)
NTAG 5 Link read multiple memory block function.
digital_out_t hpd
Definition: ntag5link.h:302
err_t ntag5link_read_memory_block(ntag5link_t *ctx, uint16_t block_addr, ntag5link_block_t *block)
NTAG 5 Link read memory block function.
pin_name_t scl
Definition: ntag5link.h:321
err_t ntag5link_init(ntag5link_t *ctx, ntag5link_cfg_t *cfg)
NTAG 5 Link initialization function.
@ NTAG5LINK_ERROR
Definition: ntag5link.h:339
err_t ntag5link_write_session_register(ntag5link_t *ctx, uint16_t block_addr, uint8_t byte_num, uint8_t mask, uint8_t data_in)
NTAG 5 Link write session register function.
err_t ntag5link_write_multiple_memory_block(ntag5link_t *ctx, uint16_t block_addr, ntag5link_block_t *block, uint8_t num_blocks)
NTAG 5 Link write multiple memory block function.
NTAG 5 Link Click memory block union definition.
Definition: ntag5link.h:290
@ NTAG5LINK_OK
Definition: ntag5link.h:338
err_t ntag5link_write_ndef_uri_record(ntag5link_t *ctx, uint8_t uri_prefix, uint8_t *uri_data, uint8_t data_len)
NTAG 5 Link write NDEF URI record function.
void ntag5link_disable_device(ntag5link_t *ctx)
NTAG 5 Link disable device function.
ntag5link_return_value_t
NTAG 5 Link Click return value data.
Definition: ntag5link.h:337
uint32_t value
Definition: ntag5link.h:292
uint8_t ntag5link_get_event_detection_pin(ntag5link_t *ctx)
NTAG 5 Link get event detection pin function.
pin_name_t sda
Definition: ntag5link.h:322
uint32_t i2c_speed
Definition: ntag5link.h:327
err_t ntag5link_read_session_register(ntag5link_t *ctx, uint16_t block_addr, uint8_t byte_num, uint8_t *data_out)
NTAG 5 Link read session register function.
void ntag5link_cfg_setup(ntag5link_cfg_t *cfg)
NTAG 5 Link configuration object setup function.
err_t ntag5link_read_message_from_memory(ntag5link_t *ctx, uint16_t block_addr, uint8_t *message, uint16_t message_len)
NTAG 5 Link read message from memory function.
err_t ntag5link_write_message_to_memory(ntag5link_t *ctx, uint16_t block_addr, uint8_t *message, uint16_t message_len)
NTAG 5 Link write message to memory function.
err_t ntag5link_format_memory(ntag5link_t *ctx)
NTAG 5 Link format memory function.
digital_in_t ed
Definition: ntag5link.h:305
uint8_t i2c_address
Definition: ntag5link.h:328
NTAG 5 Link Click context object.
Definition: ntag5link.h:300
uint8_t slave_address
Definition: ntag5link.h:311
pin_name_t hpd
Definition: ntag5link.h:324
err_t ntag5link_write_memory_block(ntag5link_t *ctx, uint16_t block_addr, ntag5link_block_t *block)
NTAG 5 Link write memory block function.
i2c_master_t i2c
Definition: ntag5link.h:308
err_t ntag5link_default_cfg(ntag5link_t *ctx)
NTAG 5 Link default configuration function.
NTAG 5 Link Click configuration object.
Definition: ntag5link.h:320
pin_name_t ed
Definition: ntag5link.h:325