Подключение ADS1100 к MSP430F413
Резюме
В данном примере применения описывается, как можно подключить дифференциальный 16-разрядный сигма-дельта АЦП ADS1100 к микроконтроллеру MSP430F413. Для примера осуществляется измерение и индикация на ЖКИ выходного сопротивления полномостового тензорезистивного датчика.
Описание аппаратной части
Микроконтроллер MSP430F413, используемый в этом примере применения - это недорогой микроконтроллер со встроенным драйвером ЖКИ. Он осуществляет считывание данных от АЦП и индикацию результата измерения на жидкокристаллическом дисплее. Для подключения к ведущему устройству ADS1100 имеет I2C интерфейс. Так как используемый микроконтроллер MSP430F413 не имеет аппаратного периферийного модуля I2C интерфейса, то для реализации его задействованы линии P2.0 и P2.1 второго порта ввода-вывода общего назначения. Выбор этих линий был сделан произвольно, и они могут быть переназначены путем изменения основного файла I2C_Master.h. К линиям I2C шины подключены 10- кОм подтягивающие резисторы. На рисунке 1 показана схема электрическая принципиальная описываемого устройства.
Питание мостового датчика осуществляется от выводов порта ввода-вывода. Это позволяет снизить потребление путем отключения питания мостового датчика после окончания измерения. Для реализации шины питания мостового датчика по три линии портов микроконтроллера были подключены параллельно.
3.5- цифровой статический ЖКИ марки VI-302 производства компании Varitronix используется для отображения результата измерения и подключается непосредственно к микроконтроллеру MSP430. Кнопки PB1 и PB2 подключены к линиям P1.6 и P1.7 и подтянуты к линии питания 100- кОм резисторами.
Описание программы
Краткий обзор
Демонстрационное программное обеспечение данного примера применения написано как на С, так и на ассемблере. Обе программы функционально идентичны и используют общую библиотеку ведущего I2C интерфейса, которая написана на ассемблере. Проект, сформированный только из программ, написанных на ассемблере, имеет размер приблизительно на 20 % меньше, чем смешанный проект, сформированный из программы, написанной на С и библиотеки, написанной на ассемблере.
Таблица 1. Описание файлов
Имя файла |
Описание |
ADS1100_Demo.c |
Демонстрационная программа считывания данных из ADS1100, написанная на С |
ADS1100_Demo.s43 |
Демонстрационная программа считывания данных из ADS1100, написанная на ассемблере |
I2C_Master.s43 |
Библиотека реализации ведущего I2C интерфейса |
I2C_Master.h I2C |
Основной файл процедуры ведущего I2C интерфейса |
Работа программы
После сброса при подаче питания происходит инициализация периферийных устройств MSP430. При этом происходит отключение сторожевого таймера, настройка нагрузочных конденсаторов генератора LFXT1 для работы с внешним часовым кварцевым резонатором и инициализация контроллера ЖКИ и основного таймера. В исходном тексте для хранения калибровочных данных резервируется два 16- битных слова в сегменте А Flash памяти MSP430. Если оба слова содержат одинаковое значение (например, как после сброса при включении питания - 0xFFFF), то активизируется режим калибровки. В противном случае микроконтроллер входит в режим измерения.
ADS1100 настроен на работу в непрерывном режиме преобразования с 16-разрядной точностью. Для усиления выходного напряжения дифференциального мостового датчика коэффициент усиления усилителя с программируемым коэффициентом усиления (УПКУ) АЦП установлен равным 8. Более подробное описание режима работы ADS1100 можно найти в техническом описании данного прибора. Запись конфигурационного байта в АЦП по I2C интерфейсу осуществляет библиотечная функция I2CWrite8().
Затем, MSP430 переходит в режим пониженного потребления LPM3, при этом прерывания разрешены. С этого времени программа управляется только по прерываниям. Разрешены два источника прерывания. Основной таймер ISR формирует сигнал прерывания каждые 0.25 сек. и, в основном, используется для того, чтобы получить и отобразить результаты измерения. Порт 1 ISR используется для отслеживания нажатия кнопки.
В режиме калибровки задаются две константы. Это нижний (CAL LO) и верхний (CAL HI) пороги диапазона измерений. При нажатии одной из кнопок результат преобразования АЦП ADS1100 считывается при помощи функции I2CRead16() и сохраняется в соответствующей временной переменной. По окончании калибровки обе эти переменные сохраняются сегменте INFOA Flash памяти при помощи функции внутрисистемного самопрограммирования. После этого система переходит в режим измерения. В этом режиме результат преобразования ADS1100 считывается и сравнивается с предыдущим каждые 0.25 сек. Если значения отличаются, то состояние индикатора обновляется. Это позволяет избежать ненужных 32-разрядных целочисленных умножений и делений при неизменности измеряемого сигнала. Значение индицируемого значения рассчитывается по следующей формуле:
DisplayValue = (Value CurrentADC - CalMin) * SPAN_MAX_MIN_CAL / (CalMin - CalMax)
Диапазон от CalMax до CalMin пересчитывается в значение от 0 до CAL_MIN_MAX_SPAN. По умолчанию CAL_MIN_MAX_SPAN установлен равным 1,000. При помощи кнопки PB2 можно в любое время перейти в режим калибровки.
Нажатие кнопки PB1 вызывает остановку преобразования, отключает ЖКИ и переводит MSP430 в режим пониженного потребления LPM3. В этом режиме устройство потребляет менее 1 мкА, при этом 32 кГц генератор остается в рабочем состоянии. Если необходимо, то можно задействовать режим пониженного потребления LPM4. При повторном нажатии кнопки PB1 происходит переход в нормальный режим работы.
Библиотечная функция ведущего I2C интерфейса
Эта библиотека была создана для того, чтобы микроконтроллеры семейства MSP430, не имеющие аппаратного модуля I2C интерфейса, могли все же вести обмен данными с внешними устройствами по этому интерфейсу. Для передачи и приема данных по I2C интерфейсу эта библиотека использует технологию bit-bang. По стандарту I2C требуется выход с тремя состояниями. Для этого линии переводятся в режим входов, а выводы притягиваются к линии питания при помощи внешних подтягивающих резисторов. При этом только при необходимости формирования нуля на линии MSP430 переводит вывод в режим выхода и удерживает его в низком состоянии
Для того чтобы иметь возможность правильно формировать временные параметры, библиотека написана на ассемблере. Если написать ее на С, то временные параметры будут зависеть от компилятора и настроек оптимизатора. Когда микроконтроллер работает на заданной по умолчанию частоте 1 048 576 Гц, все временные параметры сгенерированного I2C интерфейса удовлетворяют требованиям к работе в нормальном режиме. Библиотека может использоваться любыми микроконтроллерами семейства MSP430.
Из основных программ, написанных на С или ассемблере, можно легко организовать вызов любых подпрограмм пользователя. Для упрощения интеграции в среду C существует основной файл. Имеется возможность вызова трех функций:
· void I2CSetup(void)
Эта функция инициализирует выводы MSP430, предназначенные для ведения обмена данными по I2C интерфейсу. Выводы портов SDA и SCL, так же как и определения состояния портов PI2C_DIR, PI2C_OUT и PI2C_IN, могут быть изменены в основном файле I2C_Master.h. Для обслуживания линий интерфейса рекомендуется использовать 4 младшие линии портов. В этом случае для манипуляции битами вычислительное ядро MSP430 способно использовать характеристику постоянного генератора, что позволяет уменьшить размер кода и повысить быстродействие. Более подробно об этом можно прочитать в руководстве пользователя по 16- битным RISC микроконтроллерам семейства MSP430x4xx.
· unsigned int I2CRead16(unsigned char Addr)
Эта функция считывает 16-разрядные данные из указанного внешнего подчиненного I2C устройства. LSB передаваемого адресного I2C байта устанавливается внутренне и служит для указания запрашиваемого устройства. Данные считываются с шины старшим значащим битом вперед.
· void I2CWrite8(unsigned char Addr, unsigned char Data)
При вызове этой функции осуществляется передача 8- битных данных Data устройству с адресом Addr.
Кроме того, библиотека содержит дополнительные вспомогательные функции, позволяющие генерировать I2C условия старта, останова и подтверждения (ACK или nACK). Как было сказано выше, эти функции могут вызываться и различными пользовательскими функциями. Для удовлетворения специфических требований можно создать и свои варианты функций.
На рисунке 1 приведена схема электрическая принципиальная описанного устройства.
Рисунок 1. Схема электрическая принципиальная
Програмы:
|
|
11 Kb Engl Примеры программ |
В компании АПЕКСТРОЙ китайский керамогранит. Цены в Москве низкие! | BLINDS-LTD: защитные жалюзи, рольставни (роллеты) в продаже! | PROMVOROTA: секционные ворота и откатные ворота! Промышленные ворота в подарок | Как выбрать лучший домашний кинотеатр | Завод металлоизделий №2. Мы производим гвозди
|