Files

3.5 KiB
Raw Permalink Blame History

AD7766 — принятые решения

Ссылки на страницы — по AD7766 Data Sheet Rev. D.

Тактирование и частота дискретизации

Параметр Значение Обоснование
Системный клок 50 МГц (E2) генератор Tang Primer 25K
MCLK 1.000 МГц = 50/50 t2 min 100 нс, t3 max 900 нс, f max 1.024 МГц (Table 3, стр. 6-7)
ODR АЦП 125 000 Гц ODR = MCLK/8 для AD7766 (Table 6, стр. 15)
Дециматор sinc^1 (среднее по 10) понижение обязательно: 125 kSPS x 3 байта = 375 кБ/с не влезает в UART
Выходная ЧД 12 500 Гц совпадает с FS в F:\PyPrj\Signal_analayzer
SCLK 6.25 МГц = 50/8 24 бита за 3.84 мкс при окне чтения 7.7 мкс

Окно чтения: DRDY низкий в течение tDRDY - t5 = 8000 - 294 = 7706 нс (Table 3).

MCLK взят 1.000 МГц вместо максимальных 1.024 МГц ради целого деления от 50 МГц (без PLL) и ради ровной выходной ЧД 12 500 Гц.

Интерфейс АЦП

Регистров конфигурации у AD7766 нет — интерфейс только на чтение (стр. 17).

  • Сброс/синхронизация — низкий импульс на SYNC/PD (пин 7), цепь RESET на гребёнке. События защёлкиваются по нарастающим фронтам MCLK (стр. 17).
  • После снятия SYNC/PD выждать tSETTLING = 590 x tMCLK = 590 мкс (Table 7).
  • Чтение: по спаду DRDY опустить CS, MSB появляется на SDO по спаду CS, остальные 23 бита выдвигаются спадами SCLK (стр. 17, Figure 3). Мастер защёлкивает биты по нарастающим фронтам SCLK.
  • SDI (пин 15) — вход daisy-chain, для одиночного АЦП постоянный '0' (стр. 18).

Шкала

VREF+ = 5 В -> синфазный уровень 2.5 В, каждый вход 0...5 В, дифференциально +-5 В (стр. 16, 20). Полная шкала кода 0x7FFFFF = +5 В, 0x800000 = -5 В. В Signal_analayzer нужно 'V_REF': 5.

Формат кадра UART

Бод 921600, 8N1. 50 отсчётов в кадре -> 157 байт, 250 кадров/с, 39.25 кБ/с (43% канала).

Поле Байт Описание
SYNC 2 A5 5A
FRAME_CNT 2 uint16 BE, инкремент на кадр
STATUS 1 бит0 — переполнение FIFO, бит1 — сорван счёт DRDY
DATA 150 50 отсчётов x 24 бита, MSB first
CRC16 2 CCITT, poly 0x1021, init 0xFFFF, по FRAME_CNT..DATA

Приём на ПК

Пишутся два файла:

  • *.raw — байт в байт всё, что пришло из порта, до разбора. Отладочный.
  • *.bin — только отсчёты, 3 байта BE на отсчёт, без служебных полей. Читается функцией read_24bit_bin() из Signal_analayzer без переделок.

Кадр с несошедшейся CRC отбрасывается, а пропуск по FRAME_CNT добивается нулями, чтобы не сдвинулась ось времени. Места вставок пишутся в лог.