Files
AD7766_fw/docs/design.md
T

61 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 добивается нулями,
чтобы не сдвинулась ось времени. Места вставок пишутся в лог.