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

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

[复制链接]
奇迹 发布时间:2021-9-20 00:43
题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.
+ u6 V' ]( ^) D7 N1.原理图9 L0 P0 n0 F' }2 F( g  e6 G; |5 e
QQ截图20210920002529.png QQ截图20210920002542.png ' A, S7 a# ^+ C4 f  X0 m( S8 D
扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。
2 H% {7 m# z9 j! g; J
8 I0 x- Z+ D2 _+ v+ N7 J
2.spi配置
$ u& h; J- D5 n/ J: F( C6 u QQ截图20210920002701.png
; F) S5 D6 G, S上图是本次移植中,笔者使用的配置,亲测可行
) H2 @6 t% R, v) E
* Z/ b) P4 J# \. B3.外部中断配置& k1 ?9 ~; R  F4 K0 {$ U- F& x' ~5 f3 d
  1. /**3 _/ Y* H5 K; W4 l7 w+ E
  2.   * @brief This function handles EXTI line3 interrupt.
    : n  `9 p6 }5 K: n' s7 g/ z# G
  3.   */
    : Q: o. \. P1 P0 \; m3 T
  4. void EXTI3_IRQHandler(void)' r& l7 L/ k' G
  5. {
    5 L- i6 ]6 n% j3 {$ n2 ~
  6.   /* USER CODE BEGIN EXTI3_IRQn 0 */
    ! ^+ V, U' k' M( r; b; w, ~

  7. " E$ q; W! v* t- K0 C" V
  8.   /* USER CODE END EXTI3_IRQn 0 */0 s/ z+ H- e# J5 r) D
  9.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);2 v3 U1 l9 @8 @5 Y$ t; o
  10.   /* USER CODE BEGIN EXTI3_IRQn 1 */4 l2 z5 w5 O* L) {  j. B. @2 b
  11.     st25r3916Isr();
    5 V( w( u/ d/ N) ?- l$ v
  12.   /* USER CODE END EXTI3_IRQn 1 */
    & U1 ~( g5 T- U7 e) C7 e* x
  13. }
复制代码
需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。
  I9 `* x* M0 a7 {+ ?- ^) t- x/ J9 m6 h7 \* b. a: b
" ]9 M" x" L. ^; q4 x/ G# J  n" M
4.代码配置/ B6 r! n' c- Z, N/ q
基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。& m1 S- l& c  x
  1. #define RFAL_FEATURE_LISTEN_MODE               true       /*!< Enable/Disable RFAL support for Listen Mode                               */
    8 l, D5 v, c) N# U+ m
  2. #define RFAL_FEATURE_WAKEUP_MODE               true       /*!< Enable/Disable RFAL support for the Wake-Up mode                          */* A: z1 I. S4 v
  3. #define RFAL_FEATURE_NFCA                      true       /*!< Enable/Disable RFAL support for NFC-A (ISO14443A)                         */# u, V1 ]9 |. B0 n
  4. #define RFAL_FEATURE_NFCB                      true       /*!< Enable/Disable RFAL support for NFC-B (ISO14443B)                         */7 F2 d1 K2 f" u4 J7 p
  5. #define RFAL_FEATURE_NFCF                      true       /*!< Enable/Disable RFAL support for NFC-F (FeliCa)                            */) g  u6 d( `" C$ R# ~
  6. #define RFAL_FEATURE_NFCV                      true       /*!< Enable/Disable RFAL support for NFC-V (ISO15693)                          */5 i5 E: J+ t( m3 Z: W6 U
  7. #define RFAL_FEATURE_T1T                       true       /*!< Enable/Disable RFAL support for T1T (Topaz)                               */8 w* Z9 }) T+ c* }
  8. #define RFAL_FEATURE_T2T                       true       /*!< Enable/Disable RFAL support for T2T (Mifare)                              */, n" Q$ N  Q9 s+ t6 V4 h
  9. #define RFAL_FEATURE_T4T                       true       /*!< Enable/Disable RFAL support for T4T                                       */& m$ L8 I" r' ~
  10. #define RFAL_FEATURE_ST25TB                    true       /*!< Enable/Disable RFAL support for ST25TB                                    */
    9 R( t' k2 I' \7 ]) q! J) V4 T
  11. #define RFAL_FEATURE_ST25xV                    true       /*!< Enable/Disable RFAL support for  ST25TV/ST25DV                            */9 v/ y# C+ D9 i+ J! e
  12. #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG     false      /*!< Enable/Disable Analog Configs to be dynamically updated (RAM)             */
    8 e! S& J* ]+ e
  13. #define RFAL_FEATURE_DPO                       false      /*!< Enable/Disable RFAL dynamic power support                                 */
    1 Y0 r0 W7 V& M
  14. #define RFAL_FEATURE_ISO_DEP                   true       /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4)                      */
    ! m; `% N  h+ c) F6 v
  15. #define RFAL_FEATURE_ISO_DEP_POLL              true       /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4)    */
    ' _, E0 q/ {8 \, F
  16. #define RFAL_FEATURE_ISO_DEP_LISTEN            true       /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4)   */
    * z' m; t  b! r1 _
  17. #define RFAL_FEATURE_NFC_DEP                   true       /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P)                      */
    2 w0 M: |+ @; D& K

  18. 3 L" @4 r2 F" c. g4 d
  19. #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN    256U       /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */, A7 v$ A1 I0 L* W1 }* S: x) O- \
  20. #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN     254U       /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254           */
    + b  f* ^- q# d) p
  21. #define RFAL_FEATURE_NFC_RF_BUF_LEN            258U       /*!< RF buffer length used by RFAL NFC layer                                   */8 E+ G  H; K/ X1 P' L
  22. , G+ E% o. \- [
  23. #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN      512U       /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length       *// Z. A1 O8 X+ c& Y: D3 Y& Y
  24. #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN       512U       /*!< NFC-DEP PDU max length.                                                   */
复制代码

* v+ a- `8 \  u9 O8 j% `- o8 E  G% L7 m) d/ v0 `2 C6 ~
效果演示:
# n& e  M3 V0 f IMG_20210920_001819.jpg ) F# L9 J0 d2 s- r% C$ E* g
读取M1卡卡号,不支持M1协议,但是支持NRFA。6 m% {' c+ ~5 G& J) B

& r  Z- c8 }2 g# p# t  V6 y' y/ A IMG_20210920_001842.jpg % B, W' ]: |5 O# O$ ]
手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。
  {7 r7 Y( d% _% V( T. m
, N" |9 _/ D' I. p QQ截图20210920001916.png
1 @+ D$ X: _- X# x! S1 ], s$ l( [. [相关打印0 J* Y) r' u& J+ j% V

+ e# a3 X+ Y2 B+ J" \0 y0 z+ ~最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件+ [( c$ @! b9 p) Z+ Q- j, j
nfc.zip (6.59 MB, 下载次数: 0)
赞 收藏 评论0 发布时间:2021-9-20 00:43

举报

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