题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.# k7 h ?1 O; W$ L/ j# z7 Q+ n
1.原理图
6 t9 k3 M, k Z, H6 V& h
6 K5 m& C0 [/ x! @/ E7 q9 Q
扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。
; Q0 `# D z' R& F! \1 p6 Q% w( s( b* s `$ E0 v6 v" \! S. r9 _
2.spi配置
; A: Z0 f2 [* [" Q' t
# C1 l* r; y3 f( |8 P: ^$ B7 a
上图是本次移植中,笔者使用的配置,亲测可行
& h9 r7 z3 K- @( U, Z& f5 S: t" D" k" I% ?
3.外部中断配置
6 @- a" u5 R. b4 ]) o i7 i. b2 p' ]) O- /**( w# T$ u8 t. {5 }5 U
- * @brief This function handles EXTI line3 interrupt., [3 {, J! L7 m
- */3 v& R6 { d( c8 N2 s
- void EXTI3_IRQHandler(void)
. i7 t. a- F. H X! a. }* i0 ?; A - {% `' {4 [: ?: f1 b
- /* USER CODE BEGIN EXTI3_IRQn 0 */1 }. z0 C5 m' ^3 F, ^
6 E% k# V) j- K- /* USER CODE END EXTI3_IRQn 0 */
3 k- v* j: t% n1 k; E0 }5 F1 q$ A. j - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);* P" `( O" T" a7 x, g- s1 A& K
- /* USER CODE BEGIN EXTI3_IRQn 1 */
3 X# E- X; J2 }* | - st25r3916Isr();% R/ ~' M8 W8 ~% Q: U. E1 n5 `& \
- /* USER CODE END EXTI3_IRQn 1 */9 Z: f" V! G( w) [. O; I8 A# u0 |
- }
复制代码 需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。! Z# O8 I% w& [0 E7 C5 ^& \% `! s k
) v! Q6 g4 ] _
6 b8 A9 B$ n! ?9 E, _+ U4.代码配置
$ p8 K( _3 k5 i2 @4 L; d基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。
& C2 I( ~, o7 U4 R- Q- #define RFAL_FEATURE_LISTEN_MODE true /*!< Enable/Disable RFAL support for Listen Mode */9 W- T2 a' R0 n( O* }. r1 [
- #define RFAL_FEATURE_WAKEUP_MODE true /*!< Enable/Disable RFAL support for the Wake-Up mode */
/ ~7 e8 g2 H6 D6 ~0 k) Z - #define RFAL_FEATURE_NFCA true /*!< Enable/Disable RFAL support for NFC-A (ISO14443A) */& J0 ~1 A( n6 e7 b+ ]' ~* `5 b3 c7 ^
- #define RFAL_FEATURE_NFCB true /*!< Enable/Disable RFAL support for NFC-B (ISO14443B) */ h8 t- J9 I+ {4 M- I
- #define RFAL_FEATURE_NFCF true /*!< Enable/Disable RFAL support for NFC-F (FeliCa) *// R! q8 V# x! d- E. X
- #define RFAL_FEATURE_NFCV true /*!< Enable/Disable RFAL support for NFC-V (ISO15693) */
0 e ~* x2 Q7 O* b: Q7 d# T - #define RFAL_FEATURE_T1T true /*!< Enable/Disable RFAL support for T1T (Topaz) */
9 ~2 `2 O9 u! o - #define RFAL_FEATURE_T2T true /*!< Enable/Disable RFAL support for T2T (Mifare) */
$ I+ S# u) y/ @' h& o3 {0 I- }8 l0 a - #define RFAL_FEATURE_T4T true /*!< Enable/Disable RFAL support for T4T */
# v7 z% P) b$ H* L1 o - #define RFAL_FEATURE_ST25TB true /*!< Enable/Disable RFAL support for ST25TB */( _4 ^: O' V) t7 Y- p
- #define RFAL_FEATURE_ST25xV true /*!< Enable/Disable RFAL support for ST25TV/ST25DV */
5 h3 X0 _ Z7 E J8 E8 d - #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG false /*!< Enable/Disable Analog Configs to be dynamically updated (RAM) */9 A9 l& ]- h% S4 N
- #define RFAL_FEATURE_DPO false /*!< Enable/Disable RFAL dynamic power support */8 f# s9 I2 @' {! [2 B* s) w( }' r
- #define RFAL_FEATURE_ISO_DEP true /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4) */( G+ {5 |( G+ O5 v1 ?
- #define RFAL_FEATURE_ISO_DEP_POLL true /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4) */
" {4 R0 b" o+ \1 ]" R3 E4 H3 ^ - #define RFAL_FEATURE_ISO_DEP_LISTEN true /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4) */4 u" Y5 ?) a. C. o( L
- #define RFAL_FEATURE_NFC_DEP true /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P) */. C1 T& c6 U4 |0 l, r0 \
- , Y( D5 T0 n5 O! G1 @8 j
- #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN 256U /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */
. O `* y5 r$ g& | - #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN 254U /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254 */0 `) }$ T" G! ?* j
- #define RFAL_FEATURE_NFC_RF_BUF_LEN 258U /*!< RF buffer length used by RFAL NFC layer */
' o0 v9 Y2 }* H5 F8 Y, [ ^ - ' N" b1 u2 n! ]" l8 [9 ^
- #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN 512U /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length */: E q5 ^5 \( Z- J
- #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN 512U /*!< NFC-DEP PDU max length. */
复制代码 2 N# G9 G# d: u6 y4 T
9 c) Z W4 ?# o# X) w
效果演示:5 V$ s7 D- [- B; O Z& n
W* W8 D; Q4 X( H0 s( E9 E6 ^6 r
读取M1卡卡号,不支持M1协议,但是支持NRFA。
7 E0 ~! J- V+ P7 A7 G
; ?% S" M/ S9 B. h Q4 k
* \0 M' T% t7 O4 V0 @手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。 m& g' |5 T) V8 Z$ l, K
* }5 c6 @2 S( k6 r3 h/ Z
5 u* l/ [4 Q I) X9 R6 p
相关打印
# u" p9 h% K& k/ U
, w% h" B+ e$ d2 | _- j. ^最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件1 F- Y, z+ D5 H1 m6 ?* g8 w
nfc.zip
(6.59 MB, 下载次数: 0)
|