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

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

[复制链接]
奇迹 发布时间:2021-9-20 00:43
题目说是操作,其实主要是移植。该芯片支持iic与spi两种操作方式,对于现在我使用的NFC06A1扩展板来说,默认即为spi模式,本文将记录下移植时需要注意的点.' N4 M$ A: i  [* `* L# B
1.原理图
2 O& T1 U5 B) V. P; p QQ截图20210920002529.png QQ截图20210920002542.png
, y9 C6 {) W; `- _  H8 A扩展板引脚标注与实际板卡的引脚是不同的,这里需要根据实际修改一下。
6 u0 F: j0 ^) Q3 c9 R

- H% x* G! B2 h: J# L  P2.spi配置
- o- S1 F9 D& \9 M! z3 j3 a$ A QQ截图20210920002701.png " E; e$ x" p/ R. B
上图是本次移植中,笔者使用的配置,亲测可行
) T# f- E) x, s) I: z9 ^, X/ m9 r; M, R
3.外部中断配置/ H, @$ ]5 ]1 g+ F5 {/ P# c
  1. /**
    + s; p: v- R) _' X# ~3 O
  2.   * @brief This function handles EXTI line3 interrupt.
    ' k" ^$ _: E0 U) e# w  z4 v
  3.   */
    ) |2 M1 c2 ^$ g. {! h: [
  4. void EXTI3_IRQHandler(void)
    8 D+ X; h' U" W+ _- f
  5. {) s, a/ E! d! T1 w
  6.   /* USER CODE BEGIN EXTI3_IRQn 0 */# [. j2 C9 P+ g$ Y4 A% ~  L

  7. 8 j! f3 K9 a  p! ^' ]2 H) P
  8.   /* USER CODE END EXTI3_IRQn 0 */5 P. W$ B/ z7 N+ g+ P
  9.   HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);2 |" A' i0 T6 D: j
  10.   /* USER CODE BEGIN EXTI3_IRQn 1 *// \& [+ s2 b0 X+ |. p( R' ]# j+ [
  11.     st25r3916Isr();
    7 q% r+ U2 V% B5 O
  12.   /* USER CODE END EXTI3_IRQn 1 */
    $ j) F2 d0 {, y9 ^
  13. }
复制代码
需要在外部中断中加入st25r3916Isr();处理。注意:该函数操作了接口的读写,如果使用spi中断或者iic中断接受需要注意。建议使用操作系统的时候使用通知进行操作。
5 g! X# {: ~! r7 O
. X+ k+ Y8 z+ H* x
( `: ]+ {8 Z( A- W/ ^- ^
4.代码配置, p/ `$ F& i: X8 C" r
基本所有的配置都集中在platform.h文件里面。下面代码是关于NFC支持相关功能的开关。. V$ h: F9 I, }$ _+ ]! j
  1. #define RFAL_FEATURE_LISTEN_MODE               true       /*!< Enable/Disable RFAL support for Listen Mode                               */
    " K+ ~* F; t( T9 q* h# q
  2. #define RFAL_FEATURE_WAKEUP_MODE               true       /*!< Enable/Disable RFAL support for the Wake-Up mode                          */
    " {. I+ e) k2 |& z( Q7 M
  3. #define RFAL_FEATURE_NFCA                      true       /*!< Enable/Disable RFAL support for NFC-A (ISO14443A)                         */6 ]9 \- W; }+ m( `# V1 o
  4. #define RFAL_FEATURE_NFCB                      true       /*!< Enable/Disable RFAL support for NFC-B (ISO14443B)                         */
    % I; Y* e' C- c( b
  5. #define RFAL_FEATURE_NFCF                      true       /*!< Enable/Disable RFAL support for NFC-F (FeliCa)                            */
    ' T4 I& e+ ?- [
  6. #define RFAL_FEATURE_NFCV                      true       /*!< Enable/Disable RFAL support for NFC-V (ISO15693)                          */
    . [/ B- e. j9 c" k, H
  7. #define RFAL_FEATURE_T1T                       true       /*!< Enable/Disable RFAL support for T1T (Topaz)                               */
    - D8 t8 \! u+ L2 c5 b9 M9 [
  8. #define RFAL_FEATURE_T2T                       true       /*!< Enable/Disable RFAL support for T2T (Mifare)                              */+ O0 A0 s6 r, c8 P$ d. E/ i5 C8 s
  9. #define RFAL_FEATURE_T4T                       true       /*!< Enable/Disable RFAL support for T4T                                       */0 C/ h: D. W- J  G8 V* B. X- K4 P
  10. #define RFAL_FEATURE_ST25TB                    true       /*!< Enable/Disable RFAL support for ST25TB                                    */
    0 Z! L2 B, s) ^
  11. #define RFAL_FEATURE_ST25xV                    true       /*!< Enable/Disable RFAL support for  ST25TV/ST25DV                            */  z' L- q4 E" v  a
  12. #define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG     false      /*!< Enable/Disable Analog Configs to be dynamically updated (RAM)             */2 x! e" Y+ A3 Z1 [4 O3 }/ G6 D  K
  13. #define RFAL_FEATURE_DPO                       false      /*!< Enable/Disable RFAL dynamic power support                                 */$ Z! H+ o; }& z
  14. #define RFAL_FEATURE_ISO_DEP                   true       /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4)                      */
    7 _6 ?* k1 a# d& _+ p
  15. #define RFAL_FEATURE_ISO_DEP_POLL              true       /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4)    */6 r* |8 B% r+ V4 _
  16. #define RFAL_FEATURE_ISO_DEP_LISTEN            true       /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4)   */4 {' {8 C1 ~) C6 Y9 }1 i
  17. #define RFAL_FEATURE_NFC_DEP                   true       /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P)                      */
    - r- a* e8 Z( ?4 x$ B& E" S

  18. 7 }! L& o! q8 y% O1 r
  19. #define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN    256U       /*!< ISO-DEP I-Block max length. Please use values as defined by rfalIsoDepFSx */4 u! R( G+ E; x9 q( F
  20. #define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN     254U       /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254           */2 c1 U6 }$ o. A0 E# @
  21. #define RFAL_FEATURE_NFC_RF_BUF_LEN            258U       /*!< RF buffer length used by RFAL NFC layer                                   */
    ( M2 ?: v5 G' O" M* m, f: U8 V; p3 s
  22. 1 V0 |1 a4 d+ L* F$ T
  23. #define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN      512U       /*!< ISO-DEP APDU max length. Please use multiples of I-Block max length       */
    8 V5 W- _" k; O  i. S8 D' T& C5 [
  24. #define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN       512U       /*!< NFC-DEP PDU max length.                                                   */
复制代码

9 Q+ t9 M% h1 B0 I6 r0 T/ b6 P0 y; V7 Z6 L, A* D& h5 J, x
效果演示:
  \- K9 U. s4 R* b# ?, c6 U IMG_20210920_001819.jpg
% k5 p* {9 a8 @读取M1卡卡号,不支持M1协议,但是支持NRFA。
0 ?9 K4 n# @& u
6 r) B& v7 ~0 c2 A IMG_20210920_001842.jpg . U3 ^! k  _9 ~2 M
手机读取板子,识别为NFCF协议了,其实是因为手机啥都支持,读到的就看板子处在那种模式。
4 f7 p# y  H- b7 a& O& C2 a3 W0 }
& ^3 n% e1 r% v% y. J QQ截图20210920001916.png 7 P( U7 D6 J- L3 [' x5 V' x% v( I
相关打印
& ?/ a; i4 b3 y( _6 Y0 {% W: `. T
最后附上程序,注:为了减小代码体积,删除了CMSIS的DSP相关文件; {" l2 _4 w" s: ]
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 手机版