题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点." M$ O9 \$ Q4 k% @. S
1.原理图/ E/ Q. E$ ?+ d" Q; q
1 i! e G2 O! Y$ Z" V
扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。0 V) h( H6 }2 O5 U
, ^ K0 G( ~% S0 I2 H( o2 u
2.spi配置# ]0 z4 J: ~- S: B
2 A* p% w C& N2 P( I5 P
上图是本次移植中,笔者使用的配置,亲测可行1 r' P( N; ]5 q3 i6 [; t7 G i' I/ u
4 B* Z; e( F7 g
3.外部中断配置6 X0 Z& Q. u G9 r% H! Y" x
- /**
% w& B' \5 t, n0 F- a0 f - * @brief This function handles EXTI line3 interrupt.. ^! x3 u6 O/ l' m
- */
5 g4 J% T. \9 w* [5 } - void EXTI3_IRQHandler(void)
6 N5 T) ] B& T- y/ ` - {9 d/ s* _& @* D2 R. W
- /* USER CODE BEGIN EXTI3_IRQn 0 */
4 b& n" \( X: c& J5 I# C - 9 X5 D6 j& l4 Q+ s5 L
- /* USER CODE END EXTI3_IRQn 0 */' z: D: e" p3 F9 t- ]0 v! z
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
+ ~# i5 H+ r; X8 o) H - /* USER CODE BEGIN EXTI3_IRQn 1 */
2 Z, K4 X$ X1 m8 R) T- A3 b - st25r3916Isr();4 P, S! h- ?; m2 K% @
- /* USER CODE END EXTI3_IRQn 1 */4 b$ h) ]- O0 B8 ?
- }
复制代码 需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。
5 b0 k) I8 {, U1 R8 N1 D! k' K% y% L- N, Z3 K3 k) v) \- \
# H4 n7 F; d8 F8 d
4.代码配置3 r! v/ O8 T1 w4 U* }
基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。
: ]4 T3 e5 V z2 n% R- #define RFAL_FEATURE_LISTEN_MODE true /*!< Enable/Disable RFAL support for Listen Mode */
/ d0 X% q1 x4 S y1 j; W# G9 [$ s - #define RFAL_FEATURE_WAKEUP_MODE true /*!< Enable/Disable RFAL support for the Wake-Up mode */7 F- ?% y6 O" J/ [1 t( b$ C
- #define RFAL_FEATURE_NFCA true /*!< Enable/Disable RFAL support for NFC-A (ISO14443A) */
4 Q. R7 x) k6 d; ^- h, j3 [+ i) V - #define RFAL_FEATURE_NFCB true /*!< Enable/Disable RFAL support for NFC-B (ISO14443B) */
. k$ D0 O! Z* K3 g - #define RFAL_FEATURE_NFCF true /*!< Enable/Disable RFAL support for NFC-F (FeliCa) */$ T( u" M5 O2 i
- #define RFAL_FEATURE_NFCV true /*!< Enable/Disable RFAL support for NFC-V (ISO15693) */
$ o) N* t$ M, u$ X - #define RFAL_FEATURE_T1T true /*!< Enable/Disable RFAL support for T1T (Topaz) */
1 J6 _0 V1 T' g9 f/ Z - #define RFAL_FEATURE_T2T true /*!< Enable/Disable RFAL support for T2T (Mifare) */
- |9 W8 G$ ~& W9 U, M/ t3 ~# b - #define RFAL_FEATURE_T4T true /*!< Enable/Disable RFAL support for T4T */
# q. M, A# Q- R4 T - #define RFAL_FEATURE_ST25TB true /*!< Enable/Disable RFAL support for ST25TB */
! T* a* Z- D9 p5 j( p8 y - #define RFAL_FEATURE_ST25xV true /*!< Enable/Disable RFAL support for ST25TV/ST25DV */7 G4 P5 s- a* X2 g" V7 J v I
- #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG false /*!< Enable/Disable Analog Configs to be dynamically updated (RAM) */
( A# H. ^4 p! I: P6 F6 A - #define RFAL_FEATURE_DPO false /*!< Enable/Disable RFAL dynamic power support */
- I2 ^1 A5 x3 {' j - #define RFAL_FEATURE_ISO_DEP true /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4) */
- N1 M) e5 \8 w& x0 r - #define RFAL_FEATURE_ISO_DEP_POLL true /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4) */& ^3 d3 k( ?6 \+ t- k5 ]
- #define RFAL_FEATURE_ISO_DEP_LISTEN true /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4) */7 J/ M3 K+ Z$ ~
- #define RFAL_FEATURE_NFC_DEP true /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P) */* ~* ^1 W5 g( B- I- @
- 7 A- T7 n! P. F4 C4 M( L
- #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN 256U /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */
6 E3 ?( c7 r; q: t - #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN 254U /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254 */
3 Q4 F! n6 i z. ^, p - #define RFAL_FEATURE_NFC_RF_BUF_LEN 258U /*!< RF buffer length used by RFAL NFC layer */8 b! _: a" @: c7 A
0 R% B: u9 e! j: \ E8 @- #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN 512U /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length */6 |$ M- T/ y% w/ Q0 Z6 L
- #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN 512U /*!< NFC-DEP PDU max length. */
复制代码
0 H4 n. W' B4 \: b' `; g: d& D' i" M# ?2 a- o) \) N
效果演示:1 f6 d3 c: A; _+ e8 k o( F/ I
) D' A: g Q. m# i
读取M1卡卡号,不支持M1协议,但是支持NRFA。7 ?" R+ ~, P5 _3 O( t' y. m
* O/ p/ L, p. S2 V0 R4 b% o
' \) F1 y* n8 z% ~
手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。
5 r! a) `: u5 M' j: P! M0 P# b- j5 H# ] i
- f3 K- `$ `( ^3 w# g' W2 ~7 g9 k8 c
相关打印
4 k; R8 }! t$ Z; G: k) Z+ B* [! {) l
最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件% v* f2 {- y. Z( U, E
nfc.zip
(6.59 MB, 下载次数: 0)
|