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温度传感器。

一、添加SPI设备的思路
在飞凌嵌入式RK3562开发板上添加一个新的SPI设备,通常需要遵循以下步骤:
在设备树中添加相应设备的描述。
确保设备树描述与设备驱动相匹配。
将设备驱动添加到内核中。
二、具体实现方法

  1. 接线方式
    MAX31865支持2线、3线和4线接线方式。为了简化接线并减少引线数量,我们选择3线接线方式。3线连接是一种折中方案,通过从(RTDIN+ RTDIN-)中减去FORCE+和RTDIN+之间的电压来补偿导线上的压降,利用FORCE2对输入采样实现。如果电缆电阻具有较好的一致性,这种方法可以有效消除电缆电阻引入的误差。在接线之前,需要按照下图将模块焊接成3线模式。
  2. 设备树配置
    在设备树中添加MAX31865的相关描述。由于我们采用的是3线接法,因此需要添加maxim,3-wire参数。
  3. 驱动编译与加载
    (1)在内核源码的/drivers目录下创建max31865文件夹,并添加max31865.c和Makefile文件。


    (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模块。

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

  1. 测试与验证
    使用22Ω的电阻模拟铂电阻,通过以下命令查看ADC的原始值:
bash复制代码cat /sys/bus/iio/devices/iio:device2/in_temp_raw


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

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


王三金
1 声望0 粉丝