Перейти к основному содержимому

Программируемый генератор

Программируемый генератор

Микросхема содержит два независимых программируемых генератора — они формируют опорный (возбуждающий) сигнал, который после внешнего усиления подаётся на первичную обмотку датчика (СКВТ, сельсин, ЛРДТ). Сигналы выдаются на выводы EXO1/EXO2.

Питание выходного буфера каждого генератора подается с отдельных выводов — VDDEXO1/VDDEXO2 (плюс) и GNDEXO1/GNDEXO2 (общий). Это питание не связано с VDDD/VDDA и выбирается под конкретную схему усилителя возбуждения — в диапазоне от 3,3 В до 5,0 В.

Режимы работы

Режим задаётся полем EXO_mode:

EXO_modeРежимЧто выдаётся на EXO1/EXO2Чем настраивается
00Выключено0 В (или VDDEXO1 при EXO_inv=1)
01Меандримпульсный сигналчастота и скважность
10Синусоидасинусоидальный сигнал (формируется ЦАП)частота и амплитуда
11Постоянный уровеньпостоянное напряжениеуровень
Важно

Поле Amp_code в разных режимах отвечает за разное: в режиме синусоиды — это амплитуда, в режиме меандраделитель частоты, в режиме постоянного уровня — само выходное напряжение.

Чтобы генератор заработал, нужно выбрать режим в EXO_mode и установить бит включения EXO1_en/EXO2_en регистра Mode_config.


Синусоидальный сигнал (EXO_mode = 10)

На рисунке ниже — структурная схема генератора.

Структурная схема генератора синусоидальных сигналов
Структурная схема генератора синусоидальных сигналов

У синусоиды частота и амплитуда настраиваются отдельно: частота — регистром EXInc, амплитуда — полем Amp_code.

Частота

В цифровом формирователе ведётся 20-битный счётчик фазы: на каждом такте Fclk он увеличивается на значение регистра EXInc. Когда счётчик переполняется (через 220=10485762^{20}=1\,048\,576 шагов), начинается новый период синусоиды. Чем больше EXInc, тем быстрее «бежит» фаза и тем выше частота:

fex=EXInc1048576fclk(5)f_{ex} = \frac{EXInc}{1\,048\,576} \cdot f_{clk} \tag{5}

Для нужной частоты возбуждения fexf_{ex} значение регистра вычисляется как

EXInc=fex1048576fclk.EXInc = \frac{f_{ex} \cdot 1\,048\,576}{f_{clk}}.
Старт после сброса

После сброса счётчик фазы инициализируется значением 1 048 000 (220576\approx 2^{20} - 576).

Амплитуда

Амплитуда задаётся 8-битным полем Amp_code (0…255): чем больше значение, тем больше размах сигнала. Внутри микросхемы каждый отсчёт синуса из таблицы (8-битное знаковое значение) умножается на коэффициент (176+AMPCODE)(176 + AMP_{CODE}); произведение масштабируется сдвигом на 9 разрядов (то есть делится на 512), а для компенсации нелинейности выходного буфера из результата вычитается поправка (63AMPCODE/4)\left(63 - \lfloor AMP_{CODE}/4 \rfloor\right) (деление на 4 — целочисленное, младшие 2 бита отбрасываются). Итоговое 8-битное значение поступает на ЦАП; напряжение на выводе EXO:

VEXO=2VREF2P5sin ⁣(2πfex)176+AMPCODE512(63AMPCODE4)256(6)V_{EXO} = 2 \cdot V_{REF2P5} \cdot \frac{ \sin\!\left(\frac{2\pi}{f_{ex}}\right)\cdot \frac{176+AMP_{CODE}}{512} - \left(63 - \left\lfloor\frac{AMP_{CODE}}{4}\right\rfloor\right) }{256} \tag{6}

где VREF2P5=2,5V_{REF2P5}=2{,}5 В — опорное напряжение ЦАП, множитель 22 — коэффициент усиления выходного буфера.

На практике

Формулу (6) считать вручную не нужно: амплитуду подбирают по осциллографу, постепенно увеличивая Amp_code до нужного размаха сигнала. Главное ограничение — пиковое значение сигнала должно быть ниже питания выходного буфера VDDEXO1/VDDEXO2 минимум на 0,4 В. Если превысить — буфер уйдёт в насыщение и появятся искажения.

Опорное напряжение ЦАП (REFDAC)

Опорное напряжение VREF2P5V_{REF2P5} для ЦАП берётся либо от внутреннего ИОН (бит VREF_DAC_en=1), либо подаётся извне на вывод REFDAC в диапазоне 2,5…3,3 В. В обоих случаях вывод REFDAC шунтируется конденсатором 0,1 мкФ.


Меандр (EXO_mode = 01)

В режиме меандра работает 8-битный счётчик, тактируемый системной частотой FINT.

Частота импульсов определяется значением Amp_code — это делитель частоты (счётчик считает от 0 до Amp_code включительно, то есть период составляет Amp_code + 1 тактов FINT):

Fimp=FINTAmp_code+1(7)F_{imp} = \frac{FINT}{Amp\_code + 1} \tag{7}

Скважность (соотношение высокого/низкого уровня) задаётся двумя пороговыми значениями регистра EXInc: при достижении счётчиком значения EXInc[15:8] выход переключается на уровень VDDEXO1/VDDEXO2, при достижении EXInc[7:0] — на GNDEXO1/GNDEXO2. Это два независимых порога компаратора, задающих моменты переключения.

Дополнительные настройки регистра C1ExoStngs/C2ExoStngs:

  • EXO_inv — инвертирует выход (действует только в режимах «выключено» 00 и «меандр» 01; в режимах синуса и постоянного уровня игнорируется);
  • PWR_X2 — увеличивает выходной ток коммутации в 2 раза (для низкоомной нагрузки);
  • EXO_syncAFE_config) — синхронизирует счётчики двух генераторов.

Постоянный уровень (EXO_mode = 11)

В этом режиме на выходе формируется постоянное напряжение, пропорциональное Amp_code (0…255):

VEXO=2VREF2P5(AMPCODE255)(8)V_{EXO} = 2 \cdot V_{REF2P5} \cdot \left( \frac{AMP_{CODE}}{255} \right) \tag{8}

Режим удобен для настройки и калибровки: можно подать известное постоянное напряжение и проверить коэффициент усиления внешнего тракта. Как и для синусоиды, нужно следить, чтобы расчётное Vexo не превышало питание VDDEXO1/VDDEXO2.


Краткая шпаргалка по настройке

Что настроитьКакГде
Включить генератор 1/2бит EXO1_en/EXO2_en = 1Mode_config
Режим (выкл/меандр/синус/постоянный)EXO_mode = 00/01/10/11ExoStngs
Частота синусоидыEXInc (формула 5)EXInc
Амплитуда синусоидыAmp_code (формула 6, подбор по осциллографу)ExoStngs
Частота меандраAmp_code (формула 7)ExoStngs
Скважность меандраEXInc[15:8] / EXInc[7:0]EXInc
Постоянный уровеньAmp_code (формула 8)ExoStngs
Питание буфера3,3…5,0 В на VDDEXOVDDEXO1/VDDEXO2
Опора ЦАПвнутр. ИОН (VREF_DAC_en=1) либо внешний 2,5…3,3 ВREFDAC
Главное ограничение по амплитуде

Пиковое выходное напряжение генератора должно быть минимум на 0,4 В ниже питания выходного буфера (VDDEXO1/VDDEXO2). Превышение ведёт к насыщению буфера и искажению сигнала.