打印

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

[复制链接]
1025|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
布罗利|  楼主 | 2025-4-15 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
​​​​MAX31865是一款设计简洁且功能强大的热敏电阻至数字输出转换器,特别适用于铂电阻温度检测器(RTD)的应用。该器件通过外部电阻设置RTD的灵敏度,并利用高精度Δ-Σ模数转换器(ADC)将RTD电阻与基准电阻的比值转换为数字信号输出。其输入端具备高达±45V的过压保护,并能检测RTD及电缆的开路、短路情况,因此在医疗、工业、温度控制、卫星、气象以及阻值计算等高精度温度测量领域得到了广泛应用。



飞凌嵌入式基于瑞芯微RK3562处理器推出的OK3562J-C开发板,在P8插针引脚上预留了SPI2接口,包括:

SPI2_CLK_M0、SPI2_CSN0_M0、SPI2_MOSI_M0和SPI2_MISO_M0。



本文将详细介绍如何在飞凌嵌入式RK3562开发板上使用SPI2接口挂载MAX31865数字式RTD温度传感器。




[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










一、添加SPI设备的思路
在飞凌嵌入式RK3562开发板上添加一个新的SPI设备,通常需要遵循以下步骤:

  • 在设备树中添加相应设备的描述。
  • 确保设备树描述与设备驱动相匹配。
  • 将设备驱动添加到内核中。



二、具体实现方法
1. 接线方式
MAX31865支持2线、3线和4线接线方式。为了简化接线并减少引线数量,我们选择3线接线方式。3线连接是一种折中方案,通过从(RTDIN+ RTDIN-)中减去FORCE+和RTDIN+之间的电压来补偿导线上的压降,利用FORCE2对输入采样实现。如果电缆电阻具有较好的一致性,这种方法可以有效消除电缆电阻引入的误差。在接线之前,需要按照下图将模块焊接成3线模式。




[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










2. 设备树配置
在设备树中添加MAX31865的相关描述。由于我们采用的是3线接法,因此需要添加maxim,3-wire参数。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










3. 驱动编译与加载
(1)在内核源码的/drivers目录下创建max31865文件夹,并添加max31865.c和Makefile文件。




[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]









[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










(2)修改父目录/kernel/drivers/Makefile文件,添加对max31865目录的编译支持。具体修改如下:

/drivers/max31865/Makefile内容:

makefile复制代码obj-m += max31865.o


/kernel/drivers/Makefile添加:

makefile复制代码obj-y += max31865


执行./build.sh kernel脚本编译内核,编译完成后,在/drivers/max31865目录下会生成max31865.ko模块。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










(3)将max31865.ko模块拷贝到飞凌嵌入式RK3562开发板中,并执行insmod max31865.ko命令加载模块。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










4. 测试与验证
使用22Ω的电阻模拟铂电阻,通过以下命令查看ADC的原始值:

bash复制代码cat /sys/bus/iio/devices/iio:device2/in_temp_raw

[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










观察到22Ω电阻对应的ADC值为1655。与芯片手册中的值进行对比,确认该值在正常范围内,对应的温度大约在-190℃左右。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]










至此,我们成功在飞凌嵌入式RK3562开发板上通过SPI2接口挂载了MAX31865数字式RTD温度传感器。开发者可以根据读取到的ADC原始值,开发自己的应用来对应当前测量的温度。​​​​​​​​


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

181

主题

183

帖子

0

粉丝