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

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

[复制链接]
奇迹 发布时间:2021-9-20 00:43
题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点." M$ O9 \$ Q4 k% @. S
1.原理图/ E/ Q. E$ ?+ d" Q; q
QQ截图20210920002529.png QQ截图20210920002542.png 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
QQ截图20210920002701.png 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
  1. /**
    % w& B' \5 t, n0 F- a0 f
  2.   * @brief This function handles EXTI line3 interrupt.. ^! x3 u6 O/ l' m
  3.   */
    5 g4 J% T. \9 w* [5 }
  4. void EXTI3_IRQHandler(void)
    6 N5 T) ]  B& T- y/ `
  5. {9 d/ s* _& @* D2 R. W
  6.   /* USER CODE BEGIN EXTI3_IRQn 0 */
    4 b& n" \( X: c& J5 I# C
  7. 9 X5 D6 j& l4 Q+ s5 L
  8.   /* USER CODE END EXTI3_IRQn 0 */' z: D: e" p3 F9 t- ]0 v! z
  9.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
    + ~# i5 H+ r; X8 o) H
  10.   /* USER CODE BEGIN EXTI3_IRQn 1 */
    2 Z, K4 X$ X1 m8 R) T- A3 b
  11.     st25r3916Isr();4 P, S! h- ?; m2 K% @
  12.   /* USER CODE END EXTI3_IRQn 1 */4 b$ h) ]- O0 B8 ?
  13. }
复制代码
需要在外部中断中加入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
  1. #define RFAL_FEATURE_LISTEN_MODE               true       /*!< Enable/Disable RFAL support for Listen Mode                               */
    / d0 X% q1 x4 S  y1 j; W# G9 [$ s
  2. #define RFAL_FEATURE_WAKEUP_MODE               true       /*!< Enable/Disable RFAL support for the Wake-Up mode                          */7 F- ?% y6 O" J/ [1 t( b$ C
  3. #define RFAL_FEATURE_NFCA                      true       /*!< Enable/Disable RFAL support for NFC-A (ISO14443A)                         */
    4 Q. R7 x) k6 d; ^- h, j3 [+ i) V
  4. #define RFAL_FEATURE_NFCB                      true       /*!< Enable/Disable RFAL support for NFC-B (ISO14443B)                         */
    . k$ D0 O! Z* K3 g
  5. #define RFAL_FEATURE_NFCF                      true       /*!< Enable/Disable RFAL support for NFC-F (FeliCa)                            */$ T( u" M5 O2 i
  6. #define RFAL_FEATURE_NFCV                      true       /*!< Enable/Disable RFAL support for NFC-V (ISO15693)                          */
    $ o) N* t$ M, u$ X
  7. #define RFAL_FEATURE_T1T                       true       /*!< Enable/Disable RFAL support for T1T (Topaz)                               */
    1 J6 _0 V1 T' g9 f/ Z
  8. #define RFAL_FEATURE_T2T                       true       /*!< Enable/Disable RFAL support for T2T (Mifare)                              */
    - |9 W8 G$ ~& W9 U, M/ t3 ~# b
  9. #define RFAL_FEATURE_T4T                       true       /*!< Enable/Disable RFAL support for T4T                                       */
    # q. M, A# Q- R4 T
  10. #define RFAL_FEATURE_ST25TB                    true       /*!< Enable/Disable RFAL support for ST25TB                                    */
    ! T* a* Z- D9 p5 j( p8 y
  11. #define RFAL_FEATURE_ST25xV                    true       /*!< Enable/Disable RFAL support for  ST25TV/ST25DV                            */7 G4 P5 s- a* X2 g" V7 J  v  I
  12. #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG     false      /*!< Enable/Disable Analog Configs to be dynamically updated (RAM)             */
    ( A# H. ^4 p! I: P6 F6 A
  13. #define RFAL_FEATURE_DPO                       false      /*!< Enable/Disable RFAL dynamic power support                                 */
    - I2 ^1 A5 x3 {' j
  14. #define RFAL_FEATURE_ISO_DEP                   true       /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4)                      */
    - N1 M) e5 \8 w& x0 r
  15. #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 ]
  16. #define RFAL_FEATURE_ISO_DEP_LISTEN            true       /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4)   */7 J/ M3 K+ Z$ ~
  17. #define RFAL_FEATURE_NFC_DEP                   true       /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P)                      */* ~* ^1 W5 g( B- I- @
  18. 7 A- T7 n! P. F4 C4 M( L
  19. #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
  20. #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
  21. #define RFAL_FEATURE_NFC_RF_BUF_LEN            258U       /*!< RF buffer length used by RFAL NFC layer                                   */8 b! _: a" @: c7 A

  22. 0 R% B: u9 e! j: \  E8 @
  23. #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
  24. #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
IMG_20210920_001819.jpg ) 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
IMG_20210920_001842.jpg ' \) F1 y* n8 z% ~
手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。
5 r! a) `: u5 M' j: P! M0 P# b- j5 H# ]  i
QQ截图20210920001916.png - 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)
收藏 评论0 发布时间:2021-9-20 00:43

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版