Найти тему
Forlinx Embedded

Использование SPI для взаимодействия с цифровыми датчиками температуры RTD на платформе RK3562J

Оглавление

MAX31865 — это простой и удобный в использовании преобразователь термистора в цифровой выход, оптимизированный для платиновых резистивных датчиков температуры (RTD). Внешние резисторы устанавливают чувствительность RTD, в то время как высокоточный Δ-Σ АЦП преобразует отношение сопротивления RTD к опорному сопротивлению в цифровой выход. Вход MAX31865 имеет защиту от перенапряжения до ±45 В и обеспечивает настраиваемое обнаружение RTD и условий обрыва и короткого замыкания кабеля. Он подходит для широкого спектра высокоточных температурных устройств в медицинских, промышленных, температурных вычислениях, спутниковых, метеорологических, измерениях сопротивления и других приложениях.

Новейший одноплатный компьютер OK3562J-C от Forlinx Embedded имеет зарезервированный интерфейс SPI2, расположенный на разъеме P8:

SPI2_CLK_M0,

SPI2_CSN0_M0,

SPI2_MOSI_M0,

SPI2_MISO_M0.

В этой статье будет показано, как использовать SPI2 на плате разработки OK3562J-C для взаимодействия с микросхемой MAX31865 (цифровой датчик температуры RTD).

1. Модификационный подход

Подход к добавлению SPI-устройства следующий:

Добавить описание в дерево устройств → Соответствующий драйвер устройства в описании дерева устройств → Добавить драйвер устройства в ядро.

2. Метод модификации

(1) Модуль MAX31865 поддерживает 2-проводные, 3-проводные и 4-проводные методы подключения. Здесь используется 3-проводной метод подключения, который является компромиссом, требующим на один провод меньше, чем 4-проводной метод. Для компенсации падения напряжения на выводах напряжение между (RTDIN+ и RTDIN-) будет уменьшено на напряжение между FORCE+ и RTDIN+. Выборка на входе достигается с помощью FORCE2. Если сопротивление кабеля имеет хорошую согласованность, это может устранить ошибки, вносимые сопротивлением кабеля.

Перед подключением модуль необходимо спаять, чтобы настроить его в 3-проводном режиме, как показано на схеме ниже.

-2

(2) Добавьте соответствующие описания для MAX31865 в дереве устройств. Поскольку мы используем 3-проводное соединение, нам нужно добавить параметр maxim,3-wire.

-3

3. Компиляция драйвера как модуля

(1) Создайте папку с именем max31865 в каталоге /drivers исходного кода ядра и добавьте файлы max31865.c и Makefile.

-4
-5

(2) Измените родительский каталог /kernel/drivers/Makefile и выполните полную операцию компиляции. Изменения следующие:

Содержимое: /drivers/max31865/Makefile:

обж-м += макс31865.о

Добавьте следующий код в /kernel/drivers/Makefile:

obj-y += max31865

Затем выполните скрипт ядра ./build.sh для компиляции ядра, который сгенерирует модуль .ko в каталоге /drivers/max31865.

-6

(3) Скопируйте max31865.ko на плату разработки OK3562J-C и выполните insmod max31865.ko, чтобы загрузить модуль.

-7

4. Тест

Используйте резистор сопротивлением 22 Ом для имитации платинового сопротивления и выполните следующую команду для проверки необработанного значения АЦП:

cat /sys/bus/iio/devices/iio:device2/in_temp_raw

-8

Значение АЦП для резистора 22 Ом должно быть равно 1655. Сравнение этого значения со значениями в руководстве по эксплуатации микросхемы показывает, что это нормально и соответствует температуре приблизительно -190 ℃.

-9

На этом этапе было успешно добавлено новое устройство MAX31865 (цифровой датчик температуры RTD), и можно разрабатывать приложения на основе необработанных значений АЦП для соответствия измеренной температуре.

Выше представлен метод использования SPI2 для монтажа устройства MAX31865 (цифровой датчик температуры RTD) на плату разработки OK3562J-C . Надеемся, что это будет полезно для разработки проекта.

Первоначально опубликовано на www.forlinx.net.