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

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

[复制链接]
奇迹 发布时间:2021-9-20 00:43
题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.
: a9 u: @% [" q, h  I- n& l: x1.原理图; m, a+ k3 R. T5 K- d; s
QQ截图20210920002529.png QQ截图20210920002542.png & L7 Q* `$ b, b
扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。
4 H7 {3 ?2 K4 O& A$ N* w, z/ ^) O

' X9 j. y# [& |* Q; a# W3 S0 ^& b2.spi配置( ?9 u2 P' X/ p( X& b  v" L
QQ截图20210920002701.png
1 }2 ~3 h1 d: g8 \上图是本次移植中,笔者使用的配置,亲测可行" X. X0 M7 ~9 J2 ?5 Q
. b1 k. q0 B8 |. P* i
3.外部中断配置
7 v' x! v" Q  s2 V
  1. /**
    4 c3 `8 a3 ^' {; D
  2.   * @brief This function handles EXTI line3 interrupt.
    : Q! H1 X$ N$ M1 h% b7 J" d5 r* ~5 X
  3.   */
      `( |5 i' n0 ?  [
  4. void EXTI3_IRQHandler(void)
    , _; e. i3 K5 T: {. D0 V: g3 Q
  5. {; @7 I7 x* V- C
  6.   /* USER CODE BEGIN EXTI3_IRQn 0 */
    5 f% O8 j, m2 w: b
  7. ( v( p  h5 @* ?& `5 [
  8.   /* USER CODE END EXTI3_IRQn 0 */4 D3 W% O1 K9 M8 X% v$ e
  9.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);* A) ]: |7 p' l- ]; b4 D
  10.   /* USER CODE BEGIN EXTI3_IRQn 1 */
    , T( n& x0 k) {
  11.     st25r3916Isr();. Q0 K3 `8 A  }) ]
  12.   /* USER CODE END EXTI3_IRQn 1 */$ B1 L( T: i1 _2 Y# G% \9 ~
  13. }
复制代码
需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。4 p0 C+ X: A- X: a) C1 L

6 |; ?3 e. d% A- A* N  N- W
1 U- @5 z7 _; v# ?* h
4.代码配置
% P3 }+ G# k2 T7 l基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。" V  B: h5 e! ^7 K4 a6 H! [+ {# j* `' _
  1. #define RFAL_FEATURE_LISTEN_MODE               true       /*!< Enable/Disable RFAL support for Listen Mode                               */! X- n; M3 E3 U0 F& U
  2. #define RFAL_FEATURE_WAKEUP_MODE               true       /*!< Enable/Disable RFAL support for the Wake-Up mode                          */
    * ^: g; V7 R+ b4 b& G2 x
  3. #define RFAL_FEATURE_NFCA                      true       /*!< Enable/Disable RFAL support for NFC-A (ISO14443A)                         */
    9 a: B+ z9 i" F8 r
  4. #define RFAL_FEATURE_NFCB                      true       /*!< Enable/Disable RFAL support for NFC-B (ISO14443B)                         */
    4 q$ V" D& P. P5 z. L! h  F" ]
  5. #define RFAL_FEATURE_NFCF                      true       /*!< Enable/Disable RFAL support for NFC-F (FeliCa)                            */
    # M9 U3 ]# g* q. J( u* o+ J
  6. #define RFAL_FEATURE_NFCV                      true       /*!< Enable/Disable RFAL support for NFC-V (ISO15693)                          */
    * s% V$ k: ^7 D/ t
  7. #define RFAL_FEATURE_T1T                       true       /*!< Enable/Disable RFAL support for T1T (Topaz)                               */4 z( k3 N" T  \. W4 A
  8. #define RFAL_FEATURE_T2T                       true       /*!< Enable/Disable RFAL support for T2T (Mifare)                              */0 M* b( J  R4 s6 u' O6 o3 j0 m
  9. #define RFAL_FEATURE_T4T                       true       /*!< Enable/Disable RFAL support for T4T                                       */0 b( X0 x6 X0 r2 L7 b2 R6 b; h
  10. #define RFAL_FEATURE_ST25TB                    true       /*!< Enable/Disable RFAL support for ST25TB                                    */' `0 h! i% `( X9 u( N
  11. #define RFAL_FEATURE_ST25xV                    true       /*!< Enable/Disable RFAL support for  ST25TV/ST25DV                            */
    1 J9 X. S  p2 q5 G& A
  12. #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG     false      /*!< Enable/Disable Analog Configs to be dynamically updated (RAM)             */
    9 M$ `+ x/ e8 q2 F
  13. #define RFAL_FEATURE_DPO                       false      /*!< Enable/Disable RFAL dynamic power support                                 */: [9 G/ l1 S2 [) g, a
  14. #define RFAL_FEATURE_ISO_DEP                   true       /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4)                      */
    4 z' y. s0 u1 }/ o/ V7 I9 W7 H$ }
  15. #define RFAL_FEATURE_ISO_DEP_POLL              true       /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4)    */
    2 V( \( V. v0 k+ f2 z: C+ A
  16. #define RFAL_FEATURE_ISO_DEP_LISTEN            true       /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4)   */( L' y7 R, ~) e' Y* `9 ~8 A4 D! a  i* q
  17. #define RFAL_FEATURE_NFC_DEP                   true       /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P)                      *// _- ?8 j( y7 b, s

  18. 4 s( i) @2 W# [& \
  19. #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN    256U       /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */- I* o/ u$ u+ C' l
  20. #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN     254U       /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254           */+ g' W: m6 b1 L& b: @- S) t' X
  21. #define RFAL_FEATURE_NFC_RF_BUF_LEN            258U       /*!< RF buffer length used by RFAL NFC layer                                   */
    , z( \# }. }2 {4 l# _# ^
  22. 6 z& r( f. ^$ O  K
  23. #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN      512U       /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length       */0 ^5 P, T' _/ ~% i5 }
  24. #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN       512U       /*!< NFC-DEP PDU max length.                                                   */
复制代码
! Y; F5 T$ y; j/ ^

( K$ A( g3 D7 b" l" O  ~) ]/ T效果演示:; Z  g& s& A( G, \- g2 a
IMG_20210920_001819.jpg
+ ]0 y  O. j1 b$ t' ^( w0 m读取M1卡卡号,不支持M1协议,但是支持NRFA。
  t, V1 I; k3 O- U# c
* g5 S& ]# r8 h+ E& _0 u) } IMG_20210920_001842.jpg
5 j/ ]6 S# E, T: }9 d1 s手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。* @+ G+ I# Z3 ~2 [  K* }( h" Q% R) h
0 D) c9 ~! P; \3 b+ g0 V
QQ截图20210920001916.png ' m; H7 O+ @& R% n2 [* u+ {6 `, V& H. N' |
相关打印% L, l1 e- v# j, `
6 Y; f! q+ q) q% D0 m
最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件' g7 Z9 a2 i0 X" E2 ^% g. G
nfc.zip (6.59 MB, 下载次数: 0)
收藏 评论0 发布时间:2021-9-20 00:43

举报

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