Логический анализатор на 400msps и 24 каналами почти задаром?
- Цена: 1687 руб
- Перейти в магазин
Попался тут на глаза логический анализатор меньше чем за две тысячи рублей и с какими-то запредельными параметрами — 400 msps и 24 канала. Деньги смешные, посмотрю — всё ли правда. Спойлер — , но железяка забавная
Для начала — я предполагаю, что читатель в общих чертах в курсе — что такое логический анализатор и разжевывать совсем уж элементарные вещи не буду.
Итак — где-то год назад мне на глаза попался ролик про логический анализатор на базе Raspberry Pico 2, в котором декларировались какие-то запредельные параметры для такого железа — 400 msps для 24 каналов захвата. Тогда купить это было негде и я успокоился. Месяц назад на озоне увидел эту железяку с доставкой оттуда за чуть больше полутора тысяч рублей. Взял поиграться.
Железо довольно интересное — в качестве «мозгов» применена плата Pico 2 с микроконтроллером RP2350. Штука очень интересная — два ядра Arm Cortex-M33 + два ядра RISC-V + 12 × PIO state machines, которые и делают возможным захват на таких скоростях.
На входах стоят трансляторы уровня TXU0104 на скорость 200mbps, что (упс) как-то нивелирует заявление о 400 msps.
Собственно, больше там ничего нет — переключатель входных уровней (5V / 3.3V / Ext) и гребенка входов.
На гребенке кроме собственно входов выведены еще 5 и 3.3V, а также TRG (отдельный вход триггера) и VREF (внешний опорный уровень).
Распаковываем скачанное в папочку и просто запускаем logicanalyzer.exe
Далее выбираем com-порт, на котором повис pico и нажимаем open device. Что любопытно — эту операцию надо будет делать каждый раз при запуске софта. Находить железяку самостоятельно или хотя бы помнить её расположение софт не обучен.
Ок, видим довольно типовую для логических анализаторов раскладку.
В качестве подопытного будет выступать модуль звукового АЦП PCM1808 — ему нужна только тактовая на вход и на выходе он будет иметь стандартный I2S. Подаю ему на вход 12.288М
Ставлю три задачи:
Подключаю хвостики и нажимаю capture
Включаю первые 4 канала, режим blast пока выключаю (это режим 200msps с урезанными возможностями), 100msps, триггер — первый канал, 10000 семплов. Нажимаем Accept и сразу происходит захват. Неожиданно. В большинстве логических анализаторов настройка отдельно, а захват отдельной кнопочкой. Ладно, здесь есть кнопочка Repeat last capture — она как раз делает то, что надо — сразу захватывает.
Ну что, похоже на правду. Так, а почему только 200 семплов видно, я же 10000 качал. А, масштаб не настроен. Масштаб настраивается ТОЛЬКО shift + колёсико мышки. Хм. Так, а поскроллить? Ага, предсказуемо — только ctrl + колёсико мыши. Ну да, удобно (сарказм).
Ок, что же тогда здесь можно сделать мышкой (кнопкой). Упс. Почти ничего. Нажатие с левой кнопкой на график показывает сколько времени длится текущий уровень в отсчётах или времени.
Нажатие правой кнопкой не делает ничего — ну то есть вообще ничего — контекстного меню нет как класса. Выделить диапазон мышкой нельзя.
Так, ну ладно. Поставим маркеры и попробуем выполнить первую задачу — измерим интервал между фронтами SCK и BCK. Так, сейчас выделим область. Хм. Нету. Ок, поставим маркеры начала/конца и там будет интервал. Как пошёл на фиг?
Маркер можно поставить двойным кликом на линейке наверху. Один. Измерений нет. Никаких. Вообще. Причём на линейке вверху показывается ТОЛЬКО НОМЕР ОТСЧЕТА. Причём не маркера, а положения мышки. Зачем там нужен маркер — вообще загадка.
Ладно, давай ручками, тем более запомнить, что один отсчёт равен 10нс не так сложно.
Берём три фронта BCK и смотрим — за сколько до этого был фронт SCK
Так, я не понял — почему у нас на картинке вертикальные линии идут на минорные маркеры на линейке? Наверное, это каждый второй семпл так маркируется? Ой, нет, это вообще отсутствие семпла. Еще раз — вертикальные линии идут не по началу семпла (как везде) а посередине семпла. Охренеть.
Ладно. Ручками считаем семплы — 2 семпла, то есть 20 нс. Идём дальше. 30 нс, 20, опять 30. То есть где-то между 20 и 30нс. Ок, в пределах даташита.
На всякий случай захвачу несколько раз — нажимаю repeat last capture и, ххх, настройки масштабирования слетают в дефолт. А нехрен радовать пользователя.
Попробуем захватить в режиме blast, то есть 200msps.
Ок, похоже, хотя почему горизонтальный масштаб после захвата прыгает от балды — вопрос загадочный — сейчас он показывает всего 10 семплов на экране. Ок, масштабируемся, смотрим — получается задержка в среднем 5 семплов, то есть ~25 нс. Правдоподобно.
Посмотрим взаимозадержки BCK, LRCK и DOUT
Приемлемо — в пределах одного семпла.
Проверим, как работает i2s декодер.
Совсем неплохо. Правда int32 почему-то выдаёт как uint32, но это уже придирки.
При этом для домашнего применения штука вполне пригодна. Да, из-за софта ужасно неудобно. Но даже ардуинщику иметь дома логический анализатор на 200 msps крайне полезно — можно в кои-то веки вживую посмотреть обмен и графики.
Ну а так выглядят BCK и LRCK — видно, что никакой задержки между ними нет — они полностью синхронны
Дополнительная информация
нет
Для начала — я предполагаю, что читатель в общих чертах в курсе — что такое логический анализатор и разжевывать совсем уж элементарные вещи не буду.
Итак — где-то год назад мне на глаза попался ролик про логический анализатор на базе Raspberry Pico 2, в котором декларировались какие-то запредельные параметры для такого железа — 400 msps для 24 каналов захвата. Тогда купить это было негде и я успокоился. Месяц назад на озоне увидел эту железяку с доставкой оттуда за чуть больше полутора тысяч рублей. Взял поиграться.
Поставка
Только плата в пластиковой коробочке, больше ничего. Упаковано нормально, при транспортировке ничего не повредилось.Железо
Проект абсолютно открытый и доступен на githubЖелезо довольно интересное — в качестве «мозгов» применена плата Pico 2 с микроконтроллером RP2350. Штука очень интересная — два ядра Arm Cortex-M33 + два ядра RISC-V + 12 × PIO state machines, которые и делают возможным захват на таких скоростях.
На входах стоят трансляторы уровня TXU0104 на скорость 200mbps, что (упс) как-то нивелирует заявление о 400 msps.
Собственно, больше там ничего нет — переключатель входных уровней (5V / 3.3V / Ext) и гребенка входов.
На гребенке кроме собственно входов выведены еще 5 и 3.3V, а также TRG (отдельный вход триггера) и VREF (внешний опорный уровень).
Тестирование
Идём на github и качаем шестой релизРаспаковываем скачанное в папочку и просто запускаем logicanalyzer.exe
Далее выбираем com-порт, на котором повис pico и нажимаем open device. Что любопытно — эту операцию надо будет делать каждый раз при запуске софта. Находить железяку самостоятельно или хотя бы помнить её расположение софт не обучен.
Ок, видим довольно типовую для логических анализаторов раскладку.
В качестве подопытного будет выступать модуль звукового АЦП PCM1808 — ему нужна только тактовая на вход и на выходе он будет иметь стандартный I2S. Подаю ему на вход 12.288М
Ставлю три задачи:
- посмотреть сколько времени проходит от фронта сигнала SCK до изменения BCK
- проверить — синхронно ли с BCK меняются LRCK и DOUT
- дешифровать данные i2s и посмотреть что с него идёт
Подключаю хвостики и нажимаю capture
Включаю первые 4 канала, режим blast пока выключаю (это режим 200msps с урезанными возможностями), 100msps, триггер — первый канал, 10000 семплов. Нажимаем Accept и сразу происходит захват. Неожиданно. В большинстве логических анализаторов настройка отдельно, а захват отдельной кнопочкой. Ладно, здесь есть кнопочка Repeat last capture — она как раз делает то, что надо — сразу захватывает.
Ну что, похоже на правду. Так, а почему только 200 семплов видно, я же 10000 качал. А, масштаб не настроен. Масштаб настраивается ТОЛЬКО shift + колёсико мышки. Хм. Так, а поскроллить? Ага, предсказуемо — только ctrl + колёсико мыши. Ну да, удобно (сарказм).Ок, что же тогда здесь можно сделать мышкой (кнопкой). Упс. Почти ничего. Нажатие с левой кнопкой на график показывает сколько времени длится текущий уровень в отсчётах или времени.
Нажатие правой кнопкой не делает ничего — ну то есть вообще ничего — контекстного меню нет как класса. Выделить диапазон мышкой нельзя.
Так, ну ладно. Поставим маркеры и попробуем выполнить первую задачу — измерим интервал между фронтами SCK и BCK. Так, сейчас выделим область. Хм. Нету. Ок, поставим маркеры начала/конца и там будет интервал. Как пошёл на фиг?
Маркер можно поставить двойным кликом на линейке наверху. Один. Измерений нет. Никаких. Вообще. Причём на линейке вверху показывается ТОЛЬКО НОМЕР ОТСЧЕТА. Причём не маркера, а положения мышки. Зачем там нужен маркер — вообще загадка.
Ладно, давай ручками, тем более запомнить, что один отсчёт равен 10нс не так сложно.
Берём три фронта BCK и смотрим — за сколько до этого был фронт SCK
Так, я не понял — почему у нас на картинке вертикальные линии идут на минорные маркеры на линейке? Наверное, это каждый второй семпл так маркируется? Ой, нет, это вообще отсутствие семпла. Еще раз — вертикальные линии идут не по началу семпла (как везде) а посередине семпла. Охренеть.Ладно. Ручками считаем семплы — 2 семпла, то есть 20 нс. Идём дальше. 30 нс, 20, опять 30. То есть где-то между 20 и 30нс. Ок, в пределах даташита.
На всякий случай захвачу несколько раз — нажимаю repeat last capture и, ххх, настройки масштабирования слетают в дефолт. А нехрен радовать пользователя.
Попробуем захватить в режиме blast, то есть 200msps.
Ок, похоже, хотя почему горизонтальный масштаб после захвата прыгает от балды — вопрос загадочный — сейчас он показывает всего 10 семплов на экране. Ок, масштабируемся, смотрим — получается задержка в среднем 5 семплов, то есть ~25 нс. Правдоподобно.
Посмотрим взаимозадержки BCK, LRCK и DOUT
Приемлемо — в пределах одного семпла.Проверим, как работает i2s декодер.
Совсем неплохо. Правда int32 почему-то выдаёт как uint32, но это уже придирки.Резюме
Тот самый случай, когда крайне интересное железо убито софтом. Софт — ужасен.При этом для домашнего применения штука вполне пригодна. Да, из-за софта ужасно неудобно. Но даже ардуинщику иметь дома логический анализатор на 200 msps крайне полезно — можно в кои-то веки вживую посмотреть обмен и графики.
Бонус
Вот так выглядит измерение задержки между SCK и BCK на цифровом осциллографе Tektronix TDS 3054C. Ставим два курсора и смотрим дельту между ними — 22.4нс.
Ну а так выглядят BCK и LRCK — видно, что никакой задержки между ними нет — они полностью синхронны
Самые обсуждаемые обзоры
| +92 |
1642
49
|
| +20 |
1020
63
|
| +59 |
2174
80
|
| +41 |
1736
112
|
Сборка простая, доступна всем.
А что касается интерфейса… Так это Open Source, умеете лучше — присоединяйтесь. Сравнивать отображение двух сигналов с Tektronix… Всё же, это больше логический анализатор.