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

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

[复制链接]
奇迹 发布时间:2021-9-20 00:43
题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.( K% H' ?8 j) S# |5 M; {8 l
1.原理图
- R! V1 U+ K* `+ d: O QQ截图20210920002529.png QQ截图20210920002542.png
5 k% S, b* g' @3 V扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。- H4 B& E% V3 n* g0 x
; ~3 b' A$ Y9 w( R. n1 _7 a
2.spi配置8 W1 H( y0 K+ \9 }' s' n
QQ截图20210920002701.png
, a/ ?9 H( U+ `; \6 Q' g上图是本次移植中,笔者使用的配置,亲测可行9 Z* b' V8 @0 Y# C

! t2 P# U- M% }- [( G' p  U3.外部中断配置2 |/ l0 V4 t; R6 X, L2 m
  1. /**
    ! j. L1 K5 c* q* s
  2.   * @brief This function handles EXTI line3 interrupt.
    , ]& P+ B6 V: d6 `* m
  3.   */, v+ [, C- q7 S
  4. void EXTI3_IRQHandler(void)
    : e$ |! @; i8 o) x7 i% ]) c+ \5 E: T
  5. {
    9 Y3 h0 e  ~9 x' l+ M; j- J
  6.   /* USER CODE BEGIN EXTI3_IRQn 0 */
    4 a1 u4 [) W3 @9 R8 k- m' d, q/ h
  7. * G& X7 _0 j, R: ]/ q
  8.   /* USER CODE END EXTI3_IRQn 0 */
    . D0 \* h1 K1 A
  9.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
    $ A7 G+ ]0 z( m! v
  10.   /* USER CODE BEGIN EXTI3_IRQn 1 */
    * P0 Y( ~) C: x  j2 G8 E' b
  11.     st25r3916Isr();
    6 V$ M# v0 }( ~  {: d5 m
  12.   /* USER CODE END EXTI3_IRQn 1 */
      n% ^- k0 e# u; N% Y, b: v
  13. }
复制代码
需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。
5 f* Y8 z7 \/ e2 f
) j- D  c7 b: Q

7 \4 {, A. i+ Y* w! p: a, |: J( g4.代码配置4 E* W* Q# v5 C0 l( s3 {
基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。
2 L/ R" C  z/ @' M
  1. #define RFAL_FEATURE_LISTEN_MODE               true       /*!< Enable/Disable RFAL support for Listen Mode                               */
    9 T% Q9 }) L! N3 a6 E
  2. #define RFAL_FEATURE_WAKEUP_MODE               true       /*!< Enable/Disable RFAL support for the Wake-Up mode                          */
    - i3 ?. x0 H4 a0 A# H* H7 F/ V
  3. #define RFAL_FEATURE_NFCA                      true       /*!< Enable/Disable RFAL support for NFC-A (ISO14443A)                         */
    " |' A! p% b' p5 M. a, s
  4. #define RFAL_FEATURE_NFCB                      true       /*!< Enable/Disable RFAL support for NFC-B (ISO14443B)                         */. F9 t. |, B8 h8 a( n9 d4 m2 r" i
  5. #define RFAL_FEATURE_NFCF                      true       /*!< Enable/Disable RFAL support for NFC-F (FeliCa)                            */8 Y; L4 l" z& B+ C9 a
  6. #define RFAL_FEATURE_NFCV                      true       /*!< Enable/Disable RFAL support for NFC-V (ISO15693)                          *// a# w8 N" V7 E- K& E. R3 w+ O
  7. #define RFAL_FEATURE_T1T                       true       /*!< Enable/Disable RFAL support for T1T (Topaz)                               */: Y! T- O5 _& G* _: D9 w4 Q
  8. #define RFAL_FEATURE_T2T                       true       /*!< Enable/Disable RFAL support for T2T (Mifare)                              */5 C! S6 }: |4 W
  9. #define RFAL_FEATURE_T4T                       true       /*!< Enable/Disable RFAL support for T4T                                       */
    6 [7 @2 s$ m% m: J: o: G
  10. #define RFAL_FEATURE_ST25TB                    true       /*!< Enable/Disable RFAL support for ST25TB                                    */
    7 D8 [* Y: W3 J
  11. #define RFAL_FEATURE_ST25xV                    true       /*!< Enable/Disable RFAL support for  ST25TV/ST25DV                            */) r/ t+ I4 N. x8 ~3 s9 |5 i" g
  12. #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG     false      /*!< Enable/Disable Analog Configs to be dynamically updated (RAM)             */
    , d$ d. j, C, B$ F3 `
  13. #define RFAL_FEATURE_DPO                       false      /*!< Enable/Disable RFAL dynamic power support                                 */
    ) B/ x6 ^2 b% u/ u; m
  14. #define RFAL_FEATURE_ISO_DEP                   true       /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4)                      */
    3 ]% f, @- M2 i5 }+ z, |7 @, h
  15. #define RFAL_FEATURE_ISO_DEP_POLL              true       /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4)    */  s% A# {0 p2 A' S8 ]1 m
  16. #define RFAL_FEATURE_ISO_DEP_LISTEN            true       /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4)   */
    5 T( V- |) P3 P8 P1 G5 ^1 u& _
  17. #define RFAL_FEATURE_NFC_DEP                   true       /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P)                      */
    & j* f- z% T7 V- G. u  D9 h) N

  18. % |7 D& S9 T, S. W
  19. #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN    256U       /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */
    & ^- G) W- Y0 D, y1 P
  20. #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN     254U       /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254           */# M) l1 Z+ O  D8 e2 y, {
  21. #define RFAL_FEATURE_NFC_RF_BUF_LEN            258U       /*!< RF buffer length used by RFAL NFC layer                                   */
    0 ]- W; {! |) ?+ U+ f5 V! e
  22. 2 R8 {$ W  @" O; D6 K2 {. g0 p
  23. #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN      512U       /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length       */! G0 o! Z3 ?. V9 K  Y, c
  24. #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN       512U       /*!< NFC-DEP PDU max length.                                                   */
复制代码

6 g4 T$ }$ u: A4 A% E
6 K2 q6 ]- v+ I' B效果演示:* c) H$ c+ \$ ^
IMG_20210920_001819.jpg 0 x+ x3 S7 q6 ~! B/ g
读取M1卡卡号,不支持M1协议,但是支持NRFA。
8 a: T4 C( O" ~9 w- d: ]% k) F& O* M. t. V
IMG_20210920_001842.jpg
( t3 J% k, {+ {3 B& G8 v; S1 y手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。: F& {1 R- m6 b/ j' ~! M

' K! C( \0 D5 V. ^ QQ截图20210920001916.png 2 |' }3 l' R! |+ l
相关打印
! x# q+ G3 M  {; N6 m8 `
% i- E" l  }; l# @8 a# F2 O最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件' P6 u& E7 b/ w
nfc.zip (6.59 MB, 下载次数: 0)
收藏 评论0 发布时间:2021-9-20 00:43

举报

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