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

Методика подключения и настройки

Настройка должна производиться в порядке, заданном нумерацией разделов.

1. Проверка подключения

a. С помощью осциллографа убедитесь в наличии напряжения питания на выводах VDDA(63) = 5,0 В и VDDD(33) = 5,0 В, а также на выводах VDDIO(45) = 3,3 В, VDDIO2(25) = 3,3 В, VPP(35) = 3,3 В. При использовании генератора опорной частоты убедитесь в наличии напряжения питания на выводах VDDEXO1(5) = 5,0 В и/или VDDEXO2(4) = 5,0 В.

b. Убедитесь в наличии напряжения на выходах встроенных линейных регуляторов: VDDD1P8(36, 61) ≈ 1,8 В, VDDD_INT(31) ≈ 4,0 В, VDDA_INT(30) ≈ 4,0 В.

c. При тактировании с использованием кварцевого резонатора убедитесь в наличии тактовой частоты на выходе генератора TP_FQO(26). Убедитесь в наличии тактового сигнала на технологическом выводе DB(41) — по умолчанию на нём присутствует сигнал CLKMUX_OUT, поделённый на 8 (поле DB_mode регистра Mode_config = 000 после сброса). Если на выводе DB тактовый сигнал отсутствует — проверьте подключение служебных выводов TECH1(37) и TECH2(38).

d. Убедитесь, что служебные выводы подключены корректно: TECH1(37) подключён к GND, TECH2(38) подключён к VDDD_INT.

2. Настройка тактовой частоты микросхемы

a. При тактировании от кварцевого резонатора (подключённого к TP_QI(28), TP_QO(27), выход TP_FQO(26) подключён к CLK60(39)) — дополнительная настройка источника тактирования не требуется.

b. При тактировании от внешнего генератора (подключённого к CLK60(39)): вывод TP_QI(28) должен быть подключён к VDDD_INT, вывод TP_QO(27) — к GND.

c. Запишите в регистр PLL_config (адрес 80) рассчитанные значения PLL_N[6:0], PLL_Q[11:8]. Для ускорения выхода PLL на режим установите PLL_BOOST[7] = 1. Для контроля готовности PLL установите PLL_basecmp[15:14] ≠ 00. Если PLL не используется, запишите PLL_N = 0 — тактирование будет производиться напрямую от внешнего генератора на CLK60.

d. Запишите в регистр ADC_config (адрес 65) значения FINT_divisor[11:8] и DELAY_cycles[7:0]. Частота тактирования АЦП Fclk_adc = FINT / (FINT_divisor + 1) не должна превышать 20 МГц. Период работы преобразователя Tclk = 16 × Tclk_adc + DELAY_cycles × Tfint.

e. Убедитесь в готовности тактовой частоты: считайте регистр NOCLK_stat (адрес 72) — биты CLK_rdy[6] и CLKCOMP_rdy[7] должны быть равны 1. Также убедитесь, что AFE_config.OSC_DIS[15] = 0.

Примечание

При некорректной настройке тактовой частоты может неправильно работать чтение регистров SPI. В этом случае произведите внешний сброс микросхемы (вывод NRESET), либо запишите корректные значения в регистры PLL_config, AFE_config (запись в эти регистры функционирует при отсутствующей или слишком большой тактовой частоте).

3. Настройка режима работы аналоговой части

a. Для использования встроенного источника опорного напряжения АЦП запишите AFE_config.VREF_en (адрес 70, бит 0) = 1. При этом на выводе VREF2P5(11) появится напряжение 2,5 В. Если используется внешний источник опорного напряжения, подайте его на вывод VREF2P5(11) и установите VREF_en = 0.

b. При использовании встроенного синусоидального генератора возбуждения запишите AFE_config.VREF_DAC_en (бит 1) = 1. При этом опорное напряжение ЦАП будет формироваться внутри микросхемы и подаваться на вывод REFDAC(64), который необходимо зашунтировать конденсатором 0,1 мкФ.

c. Запишите в поле Mode регистра AFE_config (адрес 70, биты [14:12]) требуемый режим:

  • 000 — каналы преобразователя работают независимо
  • 010 — каналы работают параллельно, подключены к входам IOSA1, IOCA1, EXI1, EXO1
  • 011 — каналы работают параллельно, подключены к входам IOSA2, IOCA2, EXI2, EXO2
  • 100 — режим сельсин (оба канала параллельно с преобразованием 3 фазы в 2)

d. При необходимости использования встроенных операционных усилителей на входах сигналов с датчиков запишите C1InputStngs.OPA_en (адрес 9, бит 8) = 1. При OPA_en = 0 сигналы подаются на АЦП непосредственно через выводы IOSA1, IOCA1.

e. Для модулированных сигналов датчика (СКВТ, сельсин, ЛРДТ): C1InputStngs.DC_carrier (бит 5) = 0, DC_correction (бит 4) = 1.

f. Убедитесь, что WR_lock (адрес 68) = 0. Если значение отлично от нуля, запишите 0 для разрешения записи в регистры.

4. Настройка сигнала возбуждения датчика (на примере канала 1)

a. При использовании внешнего сигнала возбуждения: C1ExoStngs.EXO_mode (адрес 6, биты [11:10]) = 00 (генератор выключен), C1InputStngs.Ex_source (адрес 9, биты [10:9]) = 1 (внешний сигнал с EXI1). На этом настройка возбуждения окончена, переходите к разделу 5.

b. При использовании встроенного генератора в режиме синусоидального сигнала: запишите C1ExoStngs.EXO_mode (адрес 6, биты [11:10]) = 10, Amp_code (биты [7:0]) — начальное значение амплитуды. Включите тактирование генератора: Mode_config.EXO1_en (адрес 71, бит 9) = 1.

c. Запишите в регистр C1EXInc (адрес 7) значение, соответствующее выбранной частоте возбуждения датчика (см. формулу (5) в разделе Программируемый генератор). Частота рассчитывается по формуле: f_ex = EXInc / 2^20 × f_clk.

d. Используя осциллограф, подключённый к выводу EXO1(6), убедитесь в наличии и параметрах сигнала (амплитуда, частота, отсутствие нелинейных искажений). Амплитуда сигнала должна быть ниже напряжения питания VDDEXO1 как минимум на 0,4 В. При необходимости скорректируйте Amp_code или C1EXInc.

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

5. Настройка входных каскадов (на примере канала 1)

a. Вращая/двигая датчик, оцените параметры сигнала на входах АЦП IOSA1(24), IOCA1(21). Максимальная амплитуда сигналов должна быть 2 В ±10 % (при VREF2P5 = 2,5 В). Средний уровень (синфазное напряжение) 1,25 В ±10 % (при VREF2P5 = 2,5 В). Убедитесь в отсутствии значительных нелинейных искажений.

b. При подключении датчиков типа ЛРДТ с последовательно соединёнными обмотками (Sensor_mode = 10) дополнительно убедитесь в совпадении фаз сигналов IOSA1, IOCA1. При необходимости скорректируйте сдвиг фаз с помощью RC-цепи в одном из каналов. Разность фаз между сигналами удобно измерять в режиме осциллографа XY — при одинаковых фазах овал сливается в линию.

c. При использовании внешнего источника напряжения возбуждения: подайте внешний сигнал на вход EXI1(50) через компаратор (см. рекомендуемую схему). Сигнал на входе EXI1 — цифровой с уровнями 0 и 1.

Убедитесь в совпадении фаз сигналов на входе EXI1 и входах IOSA1, IOCA1. Для этого установите СКВТ примерно на угол 45°, ЛРДТ — в крайнее положение. Осциллографом контролируйте соотношение фаз сигналов на входе IOSA1 и EXI1. При необходимости сдвиньте фазу сигнала на входе EXI1 с помощью RC-цепи.

  • Если C1InputStngs.Ex_recovery_en = 0: необходимо точное совпадение фаз, т.к. сигнал со входа EXI1 используется для демодуляции. Сдвиг фазы в датчике зависит от температуры. Несовпадение фаз ведёт к росту шума и значительному падению точности. Данный режим не рекомендуется.
  • Если Ex_recovery_en = 1: необходимо приблизительное совпадение фаз (в пределах ±45°). Сигнал EXI1 используется для определения квадранта, а демодуляция производится сигналом, выделенным из АЦП. Температурная зависимость отсутствует. Для датчиков типа ЛРДТ при Ex_recovery_en = 1 можно подтянуть вход EXI1 к уровню логического нуля или единицы.

c. При использовании встроенного генератора возбуждения на выводе EXI1(50) появляется сигнал Ex_ref, который используется внутри микросхемы для демодуляции (при Ex_recovery_en = 0) или определения квадранта (при Ex_recovery_en = 1).

Необходимо добиться совпадения фаз сигналов на выходе EXI1 и на входах IOSA1, IOCA1. Для этого установите СКВТ примерно на угол 45°, ЛРДТ — в крайнее положение. Осциллографом контролируйте соотношение фаз. С помощью регистра C1ExPhShft (адрес 5) сдвиньте фазу сигнала Ex_ref так, чтобы она совпадала с фазами IOSA1, IOCA1.

  • При Ex_recovery_en = 0: необходимо точное совпадение фаз. Температурная зависимость присутствует. Режим не рекомендуется.
  • При Ex_recovery_en = 1: необходимо приблизительное совпадение фаз (в пределах ±45°). Температурная зависимость отсутствует. Настройку C1ExPhShft необходимо производить и для датчиков типа ЛРДТ.
Внимание

При неправильной настройке блока восстановления опорного сигнала преобразователь может давать ошибку 180°, при этом флаги ошибок будут сброшены.

5. Диагностика подключения (на примере канала 1)

a. Запишите C1Mask (адрес 12) = 0xFFFE. Запишите тип датчика в поле C1KonturStngs.Sensor_mode (адрес 13, биты [11:10]). При подключении сельсина установите AFE_config.Mode = 100. Включите АЦП и преобразователь: Mode_config.ADC_en (адрес 71, бит 14) = 1, CONV1_en (бит 10) = 1.

b. Запишите C1KonturStngs.LBW (биты [4:0]) = 14 (или по таблице полос пропускания). Запишите C1ResCntrl.Vel_resolution (биты [8:5]) = 7, Coord_resolution (биты [3:0]) = 2 (16-битная координата).

c. Двигая датчик, считывайте регистр C1Stat (адрес 30). В первую очередь убедитесь, что флаги CLIP_COS = 0, CLIP_SIN = 0, ADC_OVF = 0 всегда.

d. Флаги UIN_LOW, UIN_HIGH, CORR_OVF служат для диагностики сигналов после коррекции. При подключении СКВТ/сельсина и выполнении разделов 4 и 5 они должны быть равны 0. При изменении регистров C1KampC, C1KampS, C1ExPhShft, C1KbiasC, C1KbiasS, C1fbias убедитесь, что новые флаги ошибки не появились. Для датчиков типа ЛРДТ, чтобы снять ошибку UIN_HIGH, запишите в C1Amp_th.Amp_lth (адрес 8, биты [7:0]) новое значение (рекомендуемое 1000).

e. Вращая/двигая датчик, считывайте значения координаты C1Coord (адрес 16) и скорости C1Vel (адрес 24).

  • Если координата изменяется случайным образом по всему диапазону при неподвижном датчике: выключите преобразователь (CONV1_en = 0), затем снова включите (CONV1_en = 1). Если не помогло — повторите все пункты сначала.
  • Если угол отличается на 180° или ЛРДТ находится на упоре: проверьте сигнал EXI1 — вероятно, он инверсный. Либо повторите настройку раздела 5.
  • В режиме сельсина при нелинейном изменении угла (например, поворот на 90° даёт изменение только на 60°): неправильно подключены обмотки сельсина.
  • Для сдвига значения координаты относительно получаемой с датчика запишите значение в регистр C1Zero (адрес 11).

6. Калибровка усиления (на примере канала 1)

a. Если для схемы входных каскадов использованы компоненты с разбросом значений больше 0,01 %, создаётся заметная дополнительная ошибка преобразования. В этом случае рекомендуется калибровка разницы усиления по каналам платы. Для режима ЛРДТ с последовательно соединёнными обмотками (Sensor_mode = 10) калибровка не имеет смысла, т.к. сигналы несимметричные по своей природе.

b. Запишите C1InputStngs.Ex_recovery_en = 1, Ex_source = 1. Запишите C1KonturStngs.LBW = 16. Запишите C1ResCntrl.Coord_resolution = 2.

c. С генератора сигналов подайте на входы платы в канал синуса и косинуса абсолютно одинаковые сигналы (синусоидальные, можно попробовать меандр). Частота должна быть равной частоте сигнала возбуждения датчика. Выход синхронизации генератора подайте на вход EXI1.

d. Для режима СКВТ (Sensor_mode = 00): считайте значение угла — должно получиться примерно 45° или −45° (в зависимости от полярности на EXI1). С помощью регистров C1KampS (адрес 0), C1KampC (адрес 1) добейтесь получения кодов 8192 или 40960.

e. Для режима 5-ти проводной ЛРДТ (Sensor_mode = 01): считайте значение координаты — должно получиться примерно 0. С помощью регистров C1KampS, C1KampC добейтесь получения кода 0.

f. Верните изменённые регистры в исходное состояние.

7. Настройка флагов состояния (на примере канала 1)

a. После выбора параметров преобразователей настройте пороги флагов ошибок.

b. В регистре C1Amp_th (адрес 8) содержатся пороги Amp_hth[15:8] и Amp_lth[7:0] для флагов UIN_HIGH и UIN_LOW. Для режима СКВТ значения по умолчанию (Amp_hth = 187, Amp_lth = 62) подходят. Вместо расширения порогов предпочтительно скорректировать амплитуду сигнала на входе или в регистрах C1KampS, C1KampC.

c. В регистре C1Lock_th (адрес 10) содержится порог срабатывания для флага NLock. Существует 2 сценария использования:

  • Диагностика: рекомендуется ставить C1Lock_th в большие значения.
  • Переключение полосы пропускания при ускорении: подберите порог на срабатывание при минимальном ускорении, но при этом обеспечьте отсутствие срабатывания в положении покоя.

d. При включении преобразователя с малыми значениями C1Lock_th может наблюдаться повышенный шум координаты (модуляция частотой 2 × fex) и флаг NLock. Преобразователь убирает эти компоненты в процессе работы (до 30 с). Значение координаты и скорости при этом корректно. Возможные решения: а) поднять порог C1Lock_th (временно или постоянно); б) замаскировать бит NLock в C1Mask; в) установить C1InputStngs.DC_correction = 0.

e. Неиспользованные биты в регистре C1Stat должны быть замаскированы установкой 0 в соответствующий бит C1Mask (адрес 12).

f. При получении всех флагов в регистре C1Stat равными 0: Stat_main.nReady1 (адрес 75, бит 0) = 0.

g. Неиспользованные биты регистра Stat_main должны быть замаскированы в регистре Mask_Stat (адрес 66). При всех замаскированных флагах равными 0 — микросхема готова к работе.

h. Регистр Flags_delay (адрес 67) задаёт время обновления метрик и удержания флагов (единица времени 4/Fclk). Рекомендуется устанавливать значение больше периода сигнала возбуждения датчика.

8. Пример настройки для подключения СКВТ

Пример для кварцевого резонатора 10 МГц, FINT = 60 МГц, частота преобразования Fclk ≈ 500 кГц, частота возбуждения ≈ 10 кГц.

PLL_config (адрес 80) = 0x4086

  • PLL_basecmp[15:14] = 01 — контроль готовности PLL
  • CLK_delay[13:12] = 00 — задержка 8192 такта
  • PLL_Q[11:8] = 0
  • PLL_BOOST[7] = 1 — ускоренный запуск PLL
  • PLL_N[6:0] = 6

ADC_config (адрес 65) = 0x0218

  • FINT_divisor[11:8] = 2 → Fclk_adc = 60/3 = 20 МГц
  • DELAY_cycles[7:0] = 24 → Tclk = (16+24) × 50 нс = 2000 нс, fclk = 500 кГц

INIT_conf (адрес 81) = 0x0003

  • BOTP_clkdel[3:0] = 3 → Fclk_rom = 60/(3+3) = 10 МГц

AFE_config (адрес 70) = 0x0003

  • Mode[14:12] = 000 — независимые каналы
  • VREF_DAC_en[1] = 1 — ИОН ЦАП включен
  • VREF_en[0] = 1 — ИОН АЦП включен

Mode_config (адрес 71) = 0xC6C0

  • SPI_CRC_en[15] = 1 — контроль чётности SPI
  • ADC_en[14] = 1 — АЦП включен
  • CONV1_en[10] = 1 — преобразователь 1 включен
  • EXO1_en[9] = 1 — генератор EXO1 тактируется
  • Sample_src[7:6] = 11 — выборка по SPI

Mask_Stat (адрес 66) = 0x001D

  • Маскируем nReady2 (преобразователь 2 не используется)

C1Mask (адрес 12) = 0xFFFE

C1ExoStngs (адрес 6) = 0x0850

  • EXO_mode[11:10] = 10 — синусоидальный сигнал
  • Amp_code[7:0] = 80

C1EXInc (адрес 7) = 20972

  • fex ≈ 20972 / 2^20 × 500000 ≈ 10 кГц

C1InputStngs (адрес 9) = 0x0810

  • Ex_recovery_en[11] = 1 — восстановление опоры включено
  • Ex_source[10:9] = 00 — от внутреннего генератора
  • DC_correction[4] = 1 — коррекция синфазного напряжения

C1KonturStngs (адрес 13) = 0x000E

  • Sensor_mode[11:10] = 00 — СКВТ
  • LBW[4:0] = 14 — полоса пропускания

C1ResCntrl (адрес 14) = 0x00E2

C1ExPhShft (адрес 5) — подбирается согласно методике (раздел 5).

C1Lock_th (адрес 10) = 1000 — используется для диагностики, порог повышен.

Рекомендуемая последовательность записи регистров:

  1. PLL_config = 0x4086
  2. INIT_conf = 0x0003
  3. Ожидание готовности тактовой частоты (NOCLK_stat.CLK_rdy = 1)
  4. AFE_config = 0x0003
  5. ADC_config = 0x0218
  6. Mask_Stat = 0x001D
  7. C1ExoStngs = 0x0850
  8. C1EXInc = 20972
  9. C1InputStngs = 0x0810
  10. C1KonturStngs = 0x000E
  11. C1ResCntrl = 0x00E2
  12. C1Lock_th = 1000
  13. C1Mask = 0xFFFE
  14. Mode_config = 0xC6C0 — включение последним

9. Пример настройки для подключения сельсин

Отличия от примера для СКВТ (раздел 8):

AFE_config (адрес 70) = 0x4003

  • Mode[14:12] = 100 — режим сельсин

Mode_config (адрес 71) = 0xCEC0

  • CONV2_en[11] = 1 — оба преобразователя включены

C2InputStngs (адрес 41) = 0x0810 — аналогично C1InputStngs

C2KonturStngs (адрес 45) = 0x000E — аналогично C1KonturStngs

C2ResCntrl (адрес 46) = 0x00E2 — аналогично C1ResCntrl

C2Mask (адрес 44) = 0xFFFE

Mask_Stat (адрес 66) = 0x001F

C1EXInc (адрес 7) — зависит от требуемой частоты возбуждения. Для сельсина с частотой возбуждения 50 Гц: EXInc = 50 × 2^20 / 1250000 ≈ 42.

Подключение обмоток: IOSA1 = sin(θ + 0°), IOCA1 = sin(θ + 120°), IOSA2 = sin(θ − 120°). Вывод IOCA2 не используется. Допускается подключение только одного сельсина.

Примечание

Для сельсина с низкой частотой возбуждения (например, 50 Гц) необходимо установить большое значение LBW (узкая полоса пропускания), чтобы фильтр подавлял вторую гармонику до −100 дБ.

10. Пример настройки для подключения ЛРДТ

Отличия от примера для СКВТ (раздел 8):

ЛРДТ с подключением по 5-ти проводной схеме:

C1KonturStngs (адрес 13) = 0x040E

  • Sensor_mode[11:10] = 01 — ЛРДТ 5-проводной

ЛРДТ с последовательным соединением обмоток:

C1KonturStngs (адрес 13) = 0x080E

  • Sensor_mode[11:10] = 10 — ЛРДТ с последовательным соединением

Особенности настройки ЛРДТ:

  • Для снятия ошибки UIN_HIGH увеличьте C1Amp_th.Amp_lth (рекомендуемое значение 1000).
  • Выходная координата — знаковое значение в диапазоне от −1 до +1 (в отличие от угла 0…2π для СКВТ).
  • Для ЛРДТ с последовательно соединёнными обмотками (Sensor_mode = 10) критично совпадение фаз сигналов IOSA1 и IOCA1 (см. раздел 5.b).

11. Блокировка записи и инициализация из ПЗУ

a. После завершения настройки всех регистров запишите ненулевое значение в регистр WR_lock (адрес 68). Это предотвратит случайное изменение конфигурации. При WR_lock ≠ 0 команды записи не исполняются, за исключением регистра BUS_addr (адрес 83). Для разблокировки запишите 0.

b. Для серийного производства конфигурация может быть сохранена в блок OTP-памяти (BOTP, 512×16 бит). При установке INIT_conf.OTP_init_on (бит 4) = 0 конфигурация из BOTP загружается автоматически при каждом сбросе микросхемы. Подробнее см. раздел ПЗУ.