题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.9 E. s1 T$ D2 {8 h! u# u/ l9 e
1.原理图4 V" o* w, A z( e* ~3 G8 ^5 F& x% L
( e+ f" A0 J4 W. E
扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。4 p* U$ }% q4 C
" |6 R8 k( @0 V4 x3 e, Z2.spi配置
4 ?7 d, n5 f; ^- X/ n( E
5 m. n1 t7 h! m; k! M4 ]# b7 L/ i
上图是本次移植中,笔者使用的配置,亲测可行
% G; X+ V; _& S3 C* \
/ I5 P7 k/ W) p0 B* a6 N3.外部中断配置
x9 @% ~" V* {( L( b4 O% r- /**- g. R$ l5 h) H. z$ \# [- m
- * @brief This function handles EXTI line3 interrupt.& |, `( F8 [9 v/ ]& w
- */
' F9 H# n% V3 j# a# I - void EXTI3_IRQHandler(void). @' w# }. H$ g! j$ I
- {' @, } e- C( u1 d
- /* USER CODE BEGIN EXTI3_IRQn 0 */+ T5 ^/ T A; d; ]
4 w2 j% X3 L$ h3 G0 T1 z0 n% q- /* USER CODE END EXTI3_IRQn 0 *// }; m# d* k# l
- HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
. E. k. a: [6 c* R& X - /* USER CODE BEGIN EXTI3_IRQn 1 */3 k) Z2 H v' O9 w0 {
- st25r3916Isr();5 ~* P- p( ?5 G, N0 f# K+ K
- /* USER CODE END EXTI3_IRQn 1 */
* f. c* K: i( {' _0 W9 ~ - }
复制代码 需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。3 r% y; n6 Q# _
; Q" \$ i. ^& p1 E( f. X6 b
: z$ g6 q$ Y( N: }" q7 K w; J9 E( Z4.代码配置2 v$ B5 I# t" [2 c
基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。" h/ M: B) j5 T6 |" a3 X
- #define RFAL_FEATURE_LISTEN_MODE true /*!< Enable/Disable RFAL support for Listen Mode */
+ H$ x0 I$ v$ j1 v- W D( U/ Q - #define RFAL_FEATURE_WAKEUP_MODE true /*!< Enable/Disable RFAL support for the Wake-Up mode */
2 ]% ~( x- T( o3 Q: }$ V - #define RFAL_FEATURE_NFCA true /*!< Enable/Disable RFAL support for NFC-A (ISO14443A) */
# a+ ^- K B6 g1 {7 {4 I4 [ - #define RFAL_FEATURE_NFCB true /*!< Enable/Disable RFAL support for NFC-B (ISO14443B) */
. l6 i* S& S$ I# m2 i% ^ - #define RFAL_FEATURE_NFCF true /*!< Enable/Disable RFAL support for NFC-F (FeliCa) */
4 j _ A4 v: | m6 Z - #define RFAL_FEATURE_NFCV true /*!< Enable/Disable RFAL support for NFC-V (ISO15693) */
' R% P" X4 O! i% I! F - #define RFAL_FEATURE_T1T true /*!< Enable/Disable RFAL support for T1T (Topaz) */
2 U/ k8 P- y; Z - #define RFAL_FEATURE_T2T true /*!< Enable/Disable RFAL support for T2T (Mifare) */
, [( `0 }' x4 }! Z' e - #define RFAL_FEATURE_T4T true /*!< Enable/Disable RFAL support for T4T */
# o' ~2 P8 m3 F& f+ ^( Q - #define RFAL_FEATURE_ST25TB true /*!< Enable/Disable RFAL support for ST25TB */
7 U1 Q' v* V; A- E - #define RFAL_FEATURE_ST25xV true /*!< Enable/Disable RFAL support for ST25TV/ST25DV */
. ]5 s% w* d7 P - #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG false /*!< Enable/Disable Analog Configs to be dynamically updated (RAM) */, ~6 H1 {- l. ]4 ~' z, ^: M
- #define RFAL_FEATURE_DPO false /*!< Enable/Disable RFAL dynamic power support */7 ~" N9 x6 K$ Y9 o3 }
- #define RFAL_FEATURE_ISO_DEP true /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4) */
% o. s1 ^% C+ Z; H, X. B" R; r - #define RFAL_FEATURE_ISO_DEP_POLL true /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4) */5 X3 v8 n" G2 t( j& }* ^: |7 O
- #define RFAL_FEATURE_ISO_DEP_LISTEN true /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4) */: P4 x% X. t# j# U& O6 b( B
- #define RFAL_FEATURE_NFC_DEP true /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P) */" A; Y5 o' O; D* h3 h( |" @
- K9 n, u$ C- C
- #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN 256U /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */
) L! q$ u8 f0 F: W& F - #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN 254U /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254 */
4 A: ]1 D8 ~* x* w- U5 G - #define RFAL_FEATURE_NFC_RF_BUF_LEN 258U /*!< RF buffer length used by RFAL NFC layer */4 o o t& F# Q
- : ~2 I) a G' ^! V7 S* `, i% h
- #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN 512U /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length */
4 `9 |/ _* D# f7 v - #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN 512U /*!< NFC-DEP PDU max length. */
复制代码
) A# Z& ]8 U$ {: b( ~' U0 ]# I& C- h* i9 M( A. K* I( T7 j4 x. \$ L8 q3 M
效果演示:
: z) g. @$ g, O6 B; e6 W
4 T" v9 C( S! [读取M1卡卡号,不支持M1协议,但是支持NRFA。
' R4 p3 A" p4 @# j& R5 T) o! V4 M1 S4 d3 W# k' n5 T/ g# H
0 S# j( @7 D( r4 `手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。7 ^( \# {6 A! W6 }6 p- W$ b
5 q* b8 A# ?9 B/ ]
" j% _9 D' V) J9 f7 b
相关打印
! g; t5 H4 W* J a0 _. T" \" Y' Q% e' _6 X
最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件- o' m$ A1 c/ s- s1 T
nfc.zip
(6.59 MB, 下载次数: 0)
|