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

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

[复制链接]
奇迹 发布时间:2021-9-20 00:43
题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.
: R# Q: J1 X: L! F1.原理图
% r) S- g! i5 w3 a4 { QQ截图20210920002529.png QQ截图20210920002542.png
& V  r7 i# ^0 X扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。
$ {3 l1 H7 [1 s

) x9 l: e6 Y. s9 A, }# w2.spi配置
+ e6 Z4 t6 T* E1 S QQ截图20210920002701.png + X# p5 i3 X( o
上图是本次移植中,笔者使用的配置,亲测可行
8 ~! M# k: D2 q2 x+ Q9 Y0 l6 w. k3 g0 `8 @
3.外部中断配置) R1 o: [3 d9 o
  1. /**7 j* X1 h% W) B
  2.   * @brief This function handles EXTI line3 interrupt.! Q+ j9 n2 @  u$ m" C6 m
  3.   */
    ! ~0 m- R& C5 q* C. ]& K
  4. void EXTI3_IRQHandler(void)) {0 q3 q: |2 _3 o* X. l4 Y: y
  5. {
    % @& U" Q5 T; U# V- x8 ?4 i
  6.   /* USER CODE BEGIN EXTI3_IRQn 0 */+ ?7 j! D% J1 }# c5 i$ w# p
  7. & O* `4 B* N$ l7 ]
  8.   /* USER CODE END EXTI3_IRQn 0 */& i& M8 d) q- l' c% |- q# H( Y
  9.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
      B( F* w0 b7 K/ V' n0 H
  10.   /* USER CODE BEGIN EXTI3_IRQn 1 */6 ]2 V! w9 Q0 `0 P
  11.     st25r3916Isr();
    . M* d4 v( y2 R( T; y
  12.   /* USER CODE END EXTI3_IRQn 1 */0 D5 K# B- Q* a0 Y$ |# d
  13. }
复制代码
需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。
! W, }; |( ~# N5 d+ b9 \& |0 Q3 X# d$ N7 K  S- e6 G6 @8 P
+ s) |$ s8 g. r, A
4.代码配置
& a+ w4 t8 C1 V基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。
" S/ Y: h+ ~* i2 G& r4 e- y
  1. #define RFAL_FEATURE_LISTEN_MODE               true       /*!< Enable/Disable RFAL support for Listen Mode                               */2 T/ I3 a0 u& H7 d7 A' n
  2. #define RFAL_FEATURE_WAKEUP_MODE               true       /*!< Enable/Disable RFAL support for the Wake-Up mode                          */
    ) l, m2 [& E+ n; r" N1 N0 F
  3. #define RFAL_FEATURE_NFCA                      true       /*!< Enable/Disable RFAL support for NFC-A (ISO14443A)                         */
    9 k6 T  V4 m# C$ w1 b/ P& H
  4. #define RFAL_FEATURE_NFCB                      true       /*!< Enable/Disable RFAL support for NFC-B (ISO14443B)                         */. _" |2 `, ?8 }* i
  5. #define RFAL_FEATURE_NFCF                      true       /*!< Enable/Disable RFAL support for NFC-F (FeliCa)                            */& e. u/ l( L, C2 ]# J
  6. #define RFAL_FEATURE_NFCV                      true       /*!< Enable/Disable RFAL support for NFC-V (ISO15693)                          */0 f; V+ [# ]9 ?' ^& t0 y! k
  7. #define RFAL_FEATURE_T1T                       true       /*!< Enable/Disable RFAL support for T1T (Topaz)                               */- ~% f$ _) r" n2 q( {
  8. #define RFAL_FEATURE_T2T                       true       /*!< Enable/Disable RFAL support for T2T (Mifare)                              */$ y0 R5 p* v1 i0 b
  9. #define RFAL_FEATURE_T4T                       true       /*!< Enable/Disable RFAL support for T4T                                       */2 b8 `: S- v: `2 ~9 W9 I
  10. #define RFAL_FEATURE_ST25TB                    true       /*!< Enable/Disable RFAL support for ST25TB                                    */
    6 [; ?- I1 [- M8 T
  11. #define RFAL_FEATURE_ST25xV                    true       /*!< Enable/Disable RFAL support for  ST25TV/ST25DV                            */( C; L7 D$ Z+ H
  12. #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG     false      /*!< Enable/Disable Analog Configs to be dynamically updated (RAM)             */
    ; `) u0 w5 q, H& x: x4 ]5 A
  13. #define RFAL_FEATURE_DPO                       false      /*!< Enable/Disable RFAL dynamic power support                                 */
    ( n% _* s( H! q2 y4 C  D6 c' P' R, v
  14. #define RFAL_FEATURE_ISO_DEP                   true       /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4)                      */' l) t- V- u  M. @( v
  15. #define RFAL_FEATURE_ISO_DEP_POLL              true       /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4)    */
    4 d8 f) y& I% k) C
  16. #define RFAL_FEATURE_ISO_DEP_LISTEN            true       /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4)   */
    ! u0 R% @$ _. V' Q* {
  17. #define RFAL_FEATURE_NFC_DEP                   true       /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P)                      */7 Z+ d; |( g6 d0 C  T* ?
  18. $ }3 ^! z! y3 P' X1 W9 C
  19. #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN    256U       /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */
    2 H" a6 s: F3 W& H) L; C8 w: M
  20. #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN     254U       /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254           */0 ]- B, S6 x, E3 Q! u6 h
  21. #define RFAL_FEATURE_NFC_RF_BUF_LEN            258U       /*!< RF buffer length used by RFAL NFC layer                                   */+ z# g, f$ s* `; V6 W, Y! A7 z

  22. $ }6 J5 C- k" C; t" r) J- Q+ g1 O1 M
  23. #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN      512U       /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length       */
    ! H4 ?' m; K  y7 {
  24. #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN       512U       /*!< NFC-DEP PDU max length.                                                   */
复制代码
  s; Z) S( j( X

9 o2 _3 m/ [- G* q% R. m6 x5 m8 k3 A效果演示:* G" @3 }+ d9 P8 M' ?
IMG_20210920_001819.jpg
% X$ B- B% G) u  p读取M1卡卡号,不支持M1协议,但是支持NRFA。
5 L) U: ~; r- s
0 u  o# X1 `; ?5 N- N& r IMG_20210920_001842.jpg # Z3 e9 X, K2 ^/ s5 F5 d: }
手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。; I0 V" }/ T" c
7 A9 g8 w  h: Z! T
QQ截图20210920001916.png 8 V, l; t( P% P) v. r" a* B
相关打印
8 `, E3 {' g7 A" w6 ^( z; o8 M) \: r" H! I
最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件
' U* I+ N1 ~4 m2 I nfc.zip (6.59 MB, 下载次数: 0)
收藏 评论0 发布时间:2021-9-20 00:43

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版