Смекни!
smekni.com

“Контроллер для организации сенсорной сети” (стр. 10 из 11)

Рис. 34.

Для обеспечения хорошей изоляции от цифрового искажения, аналоговые внешние устройства запитываются от отдельного стабилизатора, подключенного к аналоговой ветке питания VDD1 и аналоговой основе VSSA.

Аналоговым внешним устройствам необходим источник опорного напряжения для выполнения операций. Они могут использовать или внутренний источник, или внешний, подключаемый к штырьку VREF. Это напряжение задается относительно общей шины; эксплуатационные показатели аналоговых внешних устройств напрямую зависят от качества этого источника.

Опорное напряжение Vref для АЦП и ЦАП может быть выбрано vAHI_ApConfigure () между внутренним или внешним источником опорного напряжения.

При сбросе и в глубоком спящем режиме все аналоговые внешние устройства выключены, выводы ЦАП находятся в высокоимпедансном состоянии. В спящем режиме АЦП и ЦАП выключены, выводы ЦАП в высокоимпедансном состоянии, компаратор может использоваться для пробуждения.

15.1. Аналого-цифровой преобразователь

12-битовый АЦП (аналого-цифровой преобразователь) использует алгоритм последовательного приближения для выполнения преобразований с высокой точностью, что как правило требуется в беспроводных сенсорных сетях. У него есть шесть мультиплексных асимметричных входных каналов: четыре доступны внешне, один связан с внутренним температурным датчиком, и один связан с датчиком контроля напряжения питания схемы.

15.1.1. Операция

Входной диапазон АЦП может быть установлен или между 0V и опорным напряжением, или между 0V и двойным опорным напряжением. Может быть использован внутренний или внешний источник опорного напряжения VREF. Например, если VREF=1.2V, входной диапазон АЦП может быть установлен между 0V и 2.4V.

Таблица 4

Параметры АЦП

Опорное напряжение

Указатель уровня

Предельное входное напряжение АЦП

Величина напряжения питания

1.2V 0

1.2V

2.2V - 3.6V
1.6V 0

1.6V

2.2V - 3.6V
1.2V 1

2.4V

2.6V - 3.6V
1.6V 1

3.2V

3.4V - 3.6V

АЦП тактируется сигналом частотой 16 МГц, поделенной до 500 кГц. В процессе преобразования аналоговый вход коммутируется через мультиплексор на вход АЦП, но оцифровка происходит не сразу, а спустя промежуток времени – период отсчета. Период отсчета определен как количество тактов аналого-цифрового преобразователя и может быть запрограммирован как 2, 4, 6 или 8 тактов. Скорость преобразования составляет (2 x интервала выборки) + (14 тактов синхронизации), например если период отсчета установлен как 2 такта, а синхронизация происходит с частотой 500 кГц, то скорость преобразования будет составлять 2 x 2 + 14 = 18 тактов, 36μsecs или 27.7 кГц.

Если входное сопротивление источника аналогового сигнала составляет 1 КΩ и меньше, то период отсчета должен быть установлен в 2 такта. Вход аналого-цифрового преобразователя может быть представлен эквивалентной схемой 5 КΩ резистора цепей переключателя и конденсатора на 8pF. Период отсчета может быть вычислен, путем прибавления исходного сопротивления датчика к сопротивлению переключателя и умножения суммы на емкость - получения константы времени. Предполагая нормальную экспоненциальную RC зарядку, может быть вычислено количество констант времени, требуемое для получения допустимой погрешности. Так, 7 констант времени (значение константы умножено на 7) дают погрешность 0.1 %; таким образом для 12-битовой точности должно быть достаточно произведение константы на 10. Для источника с нулевым сопротивлением умножение константы времени на 10 дает значение 800 nsecs, следовательно, может использоваться наименьший период отсчета в 2 такта.

Период отсчетов АЦП устанавливается с помощью vAHI_ApConfigure (). Номер входа АЦП, его диапазон допустимых значений и разрешение работы указываются для единичного преобразования функцией vAHI_AdcStartSample () или для непрерывного режима функцией vAHI_AdcEnable ().

Когда преобразование сигнала закончено, может быть сгенерировано прерывание. Эта настройка задается с помощью vAHI_ApConfigure (). Альтернативно состояние преобразования может быть получено, используя bAHI_AdcPoll (). При работе в непрерывном режиме рекомендуется использовать прерывания для сообщения о завершении преобразования, так как время преобразования может колебаться от 36 до 60 μsecs. Последовательный опрос состояния преобразования за этот период неэкономичен с точки зрения использования пропускной способности процессора. Результат преобразования может быть считан функцией u16AHI_AdcRead ().

У аналого-цифрового преобразователя также есть функция накопления, которая позволяет результатам нескольких преобразований накапливаться без вмешательства центрального процессора с последующей генерацией прерывания.

15.1.2. Датчик состояния батареи

Датчик контроля напряжения питания позволяет следить за изменением напряжения на шине питания аналоговых схем. Схема датчика основана на делителе напряжения, на выходе которого уровень составляет 0.666 от начального, т.е. делитель позволяет понизить напряжение питания аналоговых схем до величины, находящейся в двойном входном диапазоне АЦП при выбранном внутреннем источнике опорного напряжения. Делитель напряжения заблокирован, если измерения не производятся для избежания непрерывной утечки напряжения.

15.1.3. Датчик температуры

В микросхеме находится температурный датчик, который может использоваться для контроля абсолютной температуры устройства или обнаружения изменений в температуре окружающей среды. Пользователь по желанию может калибровать датчик до использования. В зависимости от температуры датчик изменяет свое сопротивление. При пропускании через датчик тока, на нем создается падение напряжения, пропорциональное температуре чипа и котороя может быть измерено с использованием АЦП. Измеренное напряжение связано с температурой линейной зависимостью.

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


15.1.4. Пример программы

Следующий пример иллюстрирует регистрацию данных, используя канал ввода ADC1.

Код программы

PRIVATE void vAdcDataLogger(uint16 *pau16DataBuffer, uint32 u32Length)

{

int i;

/* конфигурация аналоговой периферии, прерываний, выбор опорного напряжения */

vAHI_ApConfigure( E_AHI_AP_REGULATOR_ENABLE,

E_AHI_AP_INT_DISABLE,

E_AHI_AP_SAMPLE_2,

E_AHI_AP_CLOCKDIV_500KHZ,

E_AHI_AP_INTREF);

while (!bAHI_APRegulatorEnabled);

/* конфигурация и разрешение работы АЦП */

vAHI_AdcEnable(E_AHI_ADC_CONVERT_ENABLE,

E_AHI_AP_INPUT_RANGE_1,

E_AHI_ADC_SRC_ADC_1);

while(TRUE)

{

for (i=0;i<u32Length;i++)

{

vAHI_AdcStartSample();

/* пуск АЦП */

while(bAHI_AdcPoll());

/* ждать завершения операции */

pau16DataBuffer[i] = u16AHI_AdcRead();

/* сохранить значение в буфер */

}

}

}

15.2. Цифро-аналоговый преобразователь

Цифро-аналоговый преобразователь (ЦАП) имеет два выходных канала, способен к выдаче напряжений в диапазоне от 0V до Vref или от 0V до 2Vref (где Vref выбиранется между внутренним или внешним источником опорного напряжения VREF) с разрешающей способностью 11 бит и минимальным временем преобразования 9μsecs (при частоте синхронизации 2 МГц).

15.2.1. Операция

Программирование тактового периода с помощью vAHI_ApConfigure () позволяет найти компромисс между скоростью преобразования и разрешающей способностью. Полная 11-битовая разрешающая способность достигается при тактовой частоте 250 кГц.

Период преобразования ЦАП вычисляется по той же формуле, что и период преобразования АЦП и может изменяться от 9 до 120uS. Выводимые значения ЦАП могут быть обновлены во время работы АЦП.

Функция vAHI_ApConfigure () позволяет также выбрать источник опорного напряжения, разрешить / замаскировать прерывания ЦАП; она является общей для настройки и ЦАП, и АЦП. Диапазон вывода ЦАП и начальное выводимое значение задаются vAHI_DacEnable (); значение может обновляться с помощью vAHI_DacOutput (). Запрос bAHI_DacPoll () может использоваться для определения, занят ли канал ЦАП выполнением преобразования. Функция vAHI_DacDisable () позволяет выключить ячейку ЦАП.

15.2.2 Пример программы

Следующий пример кода иллюстрирует вывод пилообразного напряжения на штырьке 29 (DAC1)

Код программы

PRIVATE void vDacSawtooth(void)

{

uint16 u16InitalValue = 0;

int i;

/* конфигурация аналоговой периферии, прерываний, выбор опорного напряжения */

vAHI_ApConfigure( E_AHI_AP_REGULATOR_ENABLE,

E_AHI_AP_INT_DISABLE,

E_AHI_AP_SAMPLE_2,

E_AHI_AP_CLOCKDIV_2MHZ,

E_AHI_AP_INTREF);

while (!bAHI_APRegulatorEnabled);

/* конфигурация и разрешение работы ЦАП */

vAHI_AdcEnable(E_AHI_AP_DAC_1,

E_AHI_AP_INPUT_RANGE_1,

E_AHI DAC RETAIN DISABLE,

u16InitalValue);

while(TRUE)

{

for (i=0;i<2048;i++)

{

/* вывод значения */

vAHI_DacOutput(E_AHI_DAC _1, i);

/* ждать освобождения канала */

while(bAHI_DacPoll());

}

}

}

15.3. Компараторы

JN513x содержит два аналоговых компаратора COMP1 и COMP2, которые позволяют работать с полным диапазоном напряжения питания VDD1. Уровень гистерезиса (общий на оба компаратора) может быть установлен в номинальное значение 0mV, 10mV, 20 mV или 40mV, используя функцию vAHI_ComparatorEnable (). Эта функция позволяет также выбрать в качестве источника отрицательного входного сигнала каждого компаратора (COMP1M и COMP2M) один из выводов DAC1 или DAC2 (используемых в качестве внутренних источников опорного напряжения компараторов для COMP1M и COMP2M соответственно) или внешние штырьки контроллера. Выходы компаратора соединены с внутренними регистрами и могут быть опрошены функцией u8AHI_ComparatorStatus () . Компараторы могут использоваться для генерации прерываний, что задается с помощью vAHI_ComparatorIntEnable (). Компараторы могут быть заблокированы функцией vAHI_ComparatorDisable () для уменьшения потребляемой мощности.