你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

[中秋活动]使用STM32L552驱动25R3916C操作NFC

[复制链接]
奇迹 发布时间:2021-9-20 00:43
题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.# k7 h  ?1 O; W$ L/ j# z7 Q+ n
1.原理图
6 t9 k3 M, k  Z, H6 V& h QQ截图20210920002529.png QQ截图20210920002542.png 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 QQ截图20210920002701.png # 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
  1. /**( w# T$ u8 t. {5 }5 U
  2.   * @brief This function handles EXTI line3 interrupt., [3 {, J! L7 m
  3.   */3 v& R6 {  d( c8 N2 s
  4. void EXTI3_IRQHandler(void)
    . i7 t. a- F. H  X! a. }* i0 ?; A
  5. {% `' {4 [: ?: f1 b
  6.   /* USER CODE BEGIN EXTI3_IRQn 0 */1 }. z0 C5 m' ^3 F, ^

  7. 6 E% k# V) j- K
  8.   /* USER CODE END EXTI3_IRQn 0 */
    3 k- v* j: t% n1 k; E0 }5 F1 q$ A. j
  9.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);* P" `( O" T" a7 x, g- s1 A& K
  10.   /* USER CODE BEGIN EXTI3_IRQn 1 */
    3 X# E- X; J2 }* |
  11.     st25r3916Isr();% R/ ~' M8 W8 ~% Q: U. E1 n5 `& \
  12.   /* USER CODE END EXTI3_IRQn 1 */9 Z: f" V! G( w) [. O; I8 A# u0 |
  13. }
复制代码
需要在外部中断中加入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
  1. #define RFAL_FEATURE_LISTEN_MODE               true       /*!< Enable/Disable RFAL support for Listen Mode                               */9 W- T2 a' R0 n( O* }. r1 [
  2. #define RFAL_FEATURE_WAKEUP_MODE               true       /*!< Enable/Disable RFAL support for the Wake-Up mode                          */
    / ~7 e8 g2 H6 D6 ~0 k) Z
  3. #define RFAL_FEATURE_NFCA                      true       /*!< Enable/Disable RFAL support for NFC-A (ISO14443A)                         */& J0 ~1 A( n6 e7 b+ ]' ~* `5 b3 c7 ^
  4. #define RFAL_FEATURE_NFCB                      true       /*!< Enable/Disable RFAL support for NFC-B (ISO14443B)                         */  h8 t- J9 I+ {4 M- I
  5. #define RFAL_FEATURE_NFCF                      true       /*!< Enable/Disable RFAL support for NFC-F (FeliCa)                            *// R! q8 V# x! d- E. X
  6. #define RFAL_FEATURE_NFCV                      true       /*!< Enable/Disable RFAL support for NFC-V (ISO15693)                          */
    0 e  ~* x2 Q7 O* b: Q7 d# T
  7. #define RFAL_FEATURE_T1T                       true       /*!< Enable/Disable RFAL support for T1T (Topaz)                               */
    9 ~2 `2 O9 u! o
  8. #define RFAL_FEATURE_T2T                       true       /*!< Enable/Disable RFAL support for T2T (Mifare)                              */
    $ I+ S# u) y/ @' h& o3 {0 I- }8 l0 a
  9. #define RFAL_FEATURE_T4T                       true       /*!< Enable/Disable RFAL support for T4T                                       */
    # v7 z% P) b$ H* L1 o
  10. #define RFAL_FEATURE_ST25TB                    true       /*!< Enable/Disable RFAL support for ST25TB                                    */( _4 ^: O' V) t7 Y- p
  11. #define RFAL_FEATURE_ST25xV                    true       /*!< Enable/Disable RFAL support for  ST25TV/ST25DV                            */
    5 h3 X0 _  Z7 E  J8 E8 d
  12. #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG     false      /*!< Enable/Disable Analog Configs to be dynamically updated (RAM)             */9 A9 l& ]- h% S4 N
  13. #define RFAL_FEATURE_DPO                       false      /*!< Enable/Disable RFAL dynamic power support                                 */8 f# s9 I2 @' {! [2 B* s) w( }' r
  14. #define RFAL_FEATURE_ISO_DEP                   true       /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4)                      */( G+ {5 |( G+ O5 v1 ?
  15. #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 ^
  16. #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
  17. #define RFAL_FEATURE_NFC_DEP                   true       /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P)                      */. C1 T& c6 U4 |0 l, r0 \
  18. , Y( D5 T0 n5 O! G1 @8 j
  19. #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& |
  20. #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN     254U       /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254           */0 `) }$ T" G! ?* j
  21. #define RFAL_FEATURE_NFC_RF_BUF_LEN            258U       /*!< RF buffer length used by RFAL NFC layer                                   */
    ' o0 v9 Y2 }* H5 F8 Y, [  ^
  22. ' N" b1 u2 n! ]" l8 [9 ^
  23. #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
  24. #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
IMG_20210920_001819.jpg   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 IMG_20210920_001842.jpg
* \0 M' T% t7 O4 V0 @手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。  m& g' |5 T) V8 Z$ l, K
* }5 c6 @2 S( k6 r3 h/ Z
QQ截图20210920001916.png 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)
收藏 评论0 发布时间:2021-9-20 00:43

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版