找回密码
 注册
关于网站域名变更的通知
查看: 218|回复: 3
打印 上一主题 下一主题

RK3562开发板使用SPI挂载RTD温度传感器

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2025-4-15 15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
​​​​MAX31865是一款设计简洁且功能强大的热敏电阻至数字输出转换器,特别适用于铂电阻温度检测器(RTD)的应用。该器件通过外部电阻设置RTD的灵敏度,并利用高精度Δ-Σ模数转换器(ADC)将RTD电阻与基准电阻的比值转换为数字信号输出。其输入端具备高达±45V的过压保护,并能检测RTD及电缆的开路、短路情况,因此在医疗、工业、温度控制、卫星、气象以及阻值计算等高精度温度测量领域得到了广泛应用。
3 e) H. ^% M. s2 p8 p; M
) G; l# [& ?( r/ K

. o! V' f1 G$ [/ i& }) M

9 P! o) e# [0 R- u& |0 Z飞凌嵌入式基于瑞芯微RK3562处理器推出的OK3562J-C开发板,在P8插针引脚上预留了SPI2接口,包括:1 {5 ^# P9 N) v3 s2 y! I6 M
# k7 D: }$ w: h. d1 `
SPI2_CLK_M0、SPI2_CSN0_M0、SPI2_MOSI_M0和SPI2_MISO_M0。
, z$ t5 p9 s4 A9 ?6 h0 [9 a$ n

+ f( @5 u1 \" T2 \7 P" a' ? " k5 u$ M& `+ q3 H8 k0 G  a
5 a! H# V6 P! ?
本文将详细介绍如何在飞凌嵌入式RK3562开发板上使用SPI2接口挂载MAX31865数字式RTD温度传感器。
4 f0 v6 _- J: i6 C+ x0 D( v
' p( h- N  Z. o/ {' P

: u+ B* x' R* l5 m
, c$ V6 c& P& H) E! s7 c

  u& N4 i1 g+ Z& H) b9 X2 R
[backcolor=rgba(0, 0, 0, 0.1)]
! E( V! V. @3 Q9 e- Y3 w[backcolor=rgba(0, 0, 0, 0.1)]8 g4 X9 N5 E5 r; J# |* ?

% r; F/ S7 n- G& E
9 C; r6 `8 ~7 Z0 j

3 {  R7 D+ Z$ X* P7 Z, J" a$ x, V: f  R
/ w! z- T0 A4 \, N! s/ |0 A3 G
/ K  g! h4 K) v0 D& H

2 }' K. b6 `1 k+ w4 O
* k0 D1 p( Z9 `8 s+ m
" ?* c- x/ U5 Z; u% e+ J
9 g9 h2 y# F' M% H( ^
一、添加SPI设备的思路/ f5 P. c; ?- y+ h; A) {8 \/ P; w+ S
在飞凌嵌入式RK3562开发板上添加一个新的SPI设备,通常需要遵循以下步骤:
& W( E9 C3 k& Y7 G  J$ }( y
! U( y2 s* {. T7 h
  • 在设备树中添加相应设备的描述。
    , g+ o" P9 K4 u8 g0 l" E# W
  • 确保设备树描述与设备驱动相匹配。
    2 S. Z! H. k; Z; K# }! K
  • 将设备驱动添加到内核中。( x/ N3 p9 Y& m8 n% o. P

    * w7 I3 |: U  C4 i
5 l6 L% }; r. f0 ^- g7 O4 y
6 I* D" T$ z# x8 y; F; M
二、具体实现方法# h! k' U8 C1 C' F4 R( S
1. 接线方式
' J9 b5 y, }' f4 |9 t% ~
MAX31865支持2线、3线和4线接线方式。为了简化接线并减少引线数量,我们选择3线接线方式。3线连接是一种折中方案,通过从(RTDIN+ RTDIN-)中减去FORCE+和RTDIN+之间的电压来补偿导线上的压降,利用FORCE2对输入采样实现。如果电缆电阻具有较好的一致性,这种方法可以有效消除电缆电阻引入的误差。在接线之前,需要按照下图将模块焊接成3线模式。
  ?3 [6 t$ O: i/ \; `6 t
3 d7 n7 D2 l1 R2 o% j

0 J7 ~( G, d8 g. [2 ]) s
0 [5 s! ]5 u9 j, t% N4 F' y1 _1 I

2 X9 O; a. H% v, q
[backcolor=rgba(0, 0, 0, 0.1)]
/ o6 p9 ?' R$ S  M' j5 u$ v[backcolor=rgba(0, 0, 0, 0.1)]
4 L: T! r* _4 c0 a& V" Z* }: Q
2 X# C' y9 I( C( q: L1 V2 C

& [2 e7 |$ u3 j0 x9 w8 C
! X' p4 \9 W/ q- o$ J
3 {( C: o/ M9 \3 f
: Y0 I0 J, G$ U8 y( X/ _5 ~$ V5 W! c9 q" |. n2 X

. @6 \5 S$ h/ t5 l
1 C' M. W& ~* z1 Y: x
  }3 U" Y$ c7 m+ ^" q* U' F

9 H9 R2 ]6 M5 i7 ^2. 设备树配置
1 {2 L5 h5 z) {2 @$ s
在设备树中添加MAX31865的相关描述。由于我们采用的是3线接法,因此需要添加maxim,3-wire参数。  H5 u3 }6 k- f# ^8 ^- H, f) y
% T: r6 |0 u2 f0 c) p" O. T4 r3 D
, w  J: e; B( o% t
[backcolor=rgba(0, 0, 0, 0.1)]: V* v9 [' c2 L  I2 s: k
[backcolor=rgba(0, 0, 0, 0.1)]
4 s+ ]- y! e% F% o3 b" _& X2 _' @1 Z5 O) S
" T$ X( D; t3 y' h; x, L& c% I

6 |, ~# J- \6 h3 I* A
$ ^" e2 m, U( `  V& {7 _4 _
, r8 I' t4 J: [) ^+ s/ R3 w. Y+ ^
0 S% ], p  N  e( `! X9 x( d& s, W+ s7 L! }

- }9 ~1 b  U9 w
' }0 f- h2 j; h8 [5 N6 @3 Y2 w

* Q' N' m9 i1 @  G1 S3. 驱动编译与加载" i1 \- i3 Z8 `* g+ P
(1)在内核源码的/drivers目录下创建max31865文件夹,并添加max31865.c和Makefile文件。
) L2 y/ x; c) X( V

' J" U  W4 {9 M7 J' {7 H
/ H: R' _# x/ S+ L8 f' ~
- K2 b& \% e0 p" ~7 W/ K7 X9 d: U9 t

! i! u+ {7 o5 m
[backcolor=rgba(0, 0, 0, 0.1)]
! `! T( D3 ]9 X7 C- |5 o[backcolor=rgba(0, 0, 0, 0.1)]
5 Y& ], w4 i7 h3 e4 {
& |7 N7 M2 w, f
5 g0 Q% |' G* B
# Q7 G% @6 m. U7 L/ x

9 t9 ^, u( B( d$ w, o5 G* |
1 U8 B% a+ w- j! X% T* }6 I+ k  N6 Z6 _' B
1 i# V$ G5 J& o+ E6 s( U
* ]4 i" s) ~$ f

' I$ u& m3 E3 M1 p$ ]
[backcolor=rgba(0, 0, 0, 0.1)]- b4 x4 _/ D4 ?1 G( W: T: l& o
[backcolor=rgba(0, 0, 0, 0.1)]! i+ ^6 G1 h$ d
' f2 S4 u8 I& z$ J7 J
- M$ X+ }( I' ~2 u7 V

/ n3 u  R2 h0 `6 y) s/ Z( B; I/ ?: Z  a" |
) Z+ s( f  b! V7 G6 j
: ^/ E& `5 m5 [" _2 Y8 n& c
, D3 @8 ]; C8 W9 v# K0 V

* i5 E9 P/ f4 |1 j
2 f+ u7 `+ H! |1 B* w; p% q
" C3 c2 t" B  k/ O0 V& v1 ~# f4 A
(2)修改父目录/kernel/drivers/Makefile文件,添加对max31865目录的编译支持。具体修改如下:8 e2 V3 J0 {) Q3 L" U

1 W' L) d9 v. F8 j. ?2 P* J# E/drivers/max31865/Makefile内容:
1 D' y1 z" _! G9 r& d5 ^

; T" v  ^; q; ?; z# v, }4 E, B' k+ fmakefile复制代码obj-m += max31865.o- y" c% g7 {' ^! U# I
: [& {; @# A! C, ~

# W5 A4 y8 z; W* b* z/kernel/drivers/Makefile添加:
, r3 S  _3 ?* k; Q# J
. d' y6 F3 }* ]( X6 R
makefile复制代码obj-y += max31865
; O4 i1 p  R- U+ O7 b2 Y2 e, b
1 ~& @6 v+ L+ K9 W0 m
" U6 b  e5 k0 P% C- C5 U8 W' q
执行./build.sh kernel脚本编译内核,编译完成后,在/drivers/max31865目录下会生成max31865.ko模块。
0 T1 e/ j- t7 x& f0 v$ X& K

2 u5 ]; Y: w: O7 ^7 G% A/ z
; A3 Y# ~7 c% q. I; j7 l# |* F
[backcolor=rgba(0, 0, 0, 0.1)]
( j2 {4 i* g( b[backcolor=rgba(0, 0, 0, 0.1)]1 T6 u9 H4 m( e; L
9 q" n$ c% {4 Z( `4 T9 _" R" _+ T
3 O8 |/ }& f7 N, G3 h
+ J; t7 k9 J' P' a4 X. N) t
9 U) ~) S3 \/ Y( r8 m: I

  X) H9 v4 s* h
2 ~. a) M/ \5 V
! \  B+ l% q9 \1 b7 [6 k4 G! y1 Y9 O9 y7 v* r2 m% E% p$ c
4 v3 n: j6 O0 `; s
2 r+ V% n4 k* u! R
(3)将max31865.ko模块拷贝到飞凌嵌入式RK3562开发板中,并执行insmod max31865.ko命令加载模块。; q( }) f$ x3 S9 b) C( U

+ g* f" H5 |" x+ [! z  }' d5 b! L7 C
[backcolor=rgba(0, 0, 0, 0.1)]1 w. S9 G  [+ D
[backcolor=rgba(0, 0, 0, 0.1)]
# m! S. a- F, g6 M1 q( g$ D, S( n2 ^- ~3 C6 K

  ]: U$ ?0 {: q9 Q4 y& e
3 c# t: q3 L' S
) w+ E) K( q6 S' Y( q  L2 q/ A
8 t+ D& c3 P1 [$ x$ }% S( t
0 d) w, [6 r; O8 j" R0 w% n- n# \) u# _9 m) [  i* T& w' l
! R3 H7 K& b/ g% a( m
/ d  X* Q  q. P3 Y7 I4 [( O- g$ f/ H
8 Z* Q/ _) m* n! ]# c5 U
4. 测试与验证/ N; h5 t1 f5 l! A4 z' H9 }; d# |
使用22Ω的电阻模拟铂电阻,通过以下命令查看ADC的原始值:& M" ~1 C3 t  b. g

  D# x9 l  |4 `1 V0 Zbash复制代码cat /sys/bus/iio/devices/iio:device2/in_temp_raw: \) F2 }% b# B) G: [, ~. {* O

# o0 O3 a9 _0 x8 q
[backcolor=rgba(0, 0, 0, 0.1)]7 F9 n5 E5 L% w7 T0 N* ^5 v/ \4 g
[backcolor=rgba(0, 0, 0, 0.1)]
, ?3 I$ V" \4 i# Z
( c7 ]0 O; G& N" s/ O: o% O+ @& P
7 }/ f( Q3 i) ?- ]( j- b
# H8 B# V+ B5 |3 g9 D$ L

4 T$ I6 W' N( i0 q9 F* k$ c7 x3 {1 C! b* J

. J( e9 D8 O5 i. W' [! l$ D4 P. ~( X! @6 K5 R
5 D5 X+ n& W- c$ h/ r: J
1 R' Z& Q% T0 t; k9 d
4 y5 Q* A5 L0 a6 L6 i2 ~& b4 l
观察到22Ω电阻对应的ADC值为1655。与芯片手册中的值进行对比,确认该值在正常范围内,对应的温度大约在-190℃左右。
7 s. B% ?/ o+ Z
7 @/ V. I$ {- c

' @, P8 J3 R* K$ p5 L, G. z
[backcolor=rgba(0, 0, 0, 0.1)]1 T1 Z" Y$ m: l( f3 K! V
[backcolor=rgba(0, 0, 0, 0.1)]' y. `7 H+ B" b- F$ k

. m8 Q7 s  y- W* K" v
& W8 W% x6 M0 }2 ~6 ^: t& H5 J: j

8 o( u; ~7 M: J) s* e4 n* _' `$ o) P5 [) Y

2 ], y" t: L# v+ a! _" k2 Q6 I% l& t% x  K# E; `0 g, `) t
$ ]8 C9 a% p. D8 l  \* \
0 X5 b4 U" _: l
5 ~: G; @0 \. a

1 Y2 }0 c" b/ [. ]0 g至此,我们成功在飞凌嵌入式RK3562开发板上通过SPI2接口挂载了MAX31865数字式RTD温度传感器。开发者可以根据读取到的ADC原始值,开发自己的应用来对应当前测量的温度。​​​​​​​​. T/ A. d$ G/ a1 Y8 I- `0 F8 s

) x9 e* K! |( O7 I8 q! L/ e6 N( O4 e/ y# H8 ^

该用户从未签到

2#
发表于 2025-4-15 17:47 | 只看该作者
开发板的程序都有哪些6 H' o4 ^! f. U7 ^* E& u0 L+ d

该用户从未签到

3#
发表于 2025-4-15 17:48 | 只看该作者
开发板的程序都有哪些8 o% ^8 Q$ ?0 {9 N- E5 G5 C- Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-8 02:57 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表