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) Добавьте соответствующие описания для MAX31865 в дереве устройств. Поскольку мы используем 3-проводное соединение, нам нужно добавить параметр maxim,3-wire.
3. Компиляция драйвера как модуля
(1) Создайте папку с именем max31865 в каталоге /drivers исходного кода ядра и добавьте файлы max31865.c и Makefile.
(2) Измените родительский каталог /kernel/drivers/Makefile и выполните полную операцию компиляции. Изменения следующие:
Содержимое: /drivers/max31865/Makefile:
обж-м += макс31865.о
Добавьте следующий код в /kernel/drivers/Makefile:
obj-y += max31865
Затем выполните скрипт ядра ./build.sh для компиляции ядра, который сгенерирует модуль .ko в каталоге /drivers/max31865.
(3) Скопируйте max31865.ko на плату разработки OK3562J-C и выполните insmod max31865.ko, чтобы загрузить модуль.
4. Тест
Используйте резистор сопротивлением 22 Ом для имитации платинового сопротивления и выполните следующую команду для проверки необработанного значения АЦП:
cat /sys/bus/iio/devices/iio:device2/in_temp_raw
Значение АЦП для резистора 22 Ом должно быть равно 1655. Сравнение этого значения со значениями в руководстве по эксплуатации микросхемы показывает, что это нормально и соответствует температуре приблизительно -190 ℃.
На этом этапе было успешно добавлено новое устройство MAX31865 (цифровой датчик температуры RTD), и можно разрабатывать приложения на основе необработанных значений АЦП для соответствия измеренной температуре.
Выше представлен метод использования SPI2 для монтажа устройства MAX31865 (цифровой датчик температуры RTD) на плату разработки OK3562J-C . Надеемся, что это будет полезно для разработки проекта.
Первоначально опубликовано на www.forlinx.net.