Миниатюрный 4 канальный логический анализатор на avr. Доработка логического анализатора из китая. Вид печатной платы и расположение компонентов

Хоть и изредка, но возникает нужда отследить что происходит на каких-то логических линиях, причем синхронно на 4-8. Давно хотел заиметь для этих целей логический анализатор (дальше - ЛА) и наконец созрел.
Коротко для нетерпеливых - брать можно. Полностью соответствует заявленным характеристикам, софт вполне юзабельный. Подробнее - под катом:)

Что такое логический анализатор и для чего он нужен

Если коротко, то это что-то вроде очень грубого многоканального осциллографа. Очень грубого - он показывает лишь два уровня, 0 и 1, то есть превысил ли наблюдаемый сигнал заданный уровень или нет. Поэтому он и называется логическим, его предназначение - наблюдать логические сигналы, то есть логические нули и единицы.
Это бывает нужным, например, при отладке какого-то интерфейса с несколькими линиями - работа с памятью, синхронное управление чем-то, многопроводные интерфейсы и т.п. Его используют так же при реверс-инжиниринге, когда нужно изучить работу какого-то устройства, определить используемый протокол связи и даже получить дамп данных, передаваемых, например, по синхронному UART.
Многие ЛА кроме непосредственно записи сигналов могут их декодировать по определенным протоколам, хотя это и не является обязательным свойством ЛА. Особо навороченные могут даже с достаточной уверенностью автоматически определить используемый протокол, но это уже зависит от софта, прилагаемого к ЛА.

Доставка

Дошел просто мгновенно - 29 марта я заказал, а 11 апреля он уже лежал у меня в отделении. Шел обычной почтой, упакован был в стандартный желтый пакет с пупыркой. Ничего экстраординарного:)

Характеристики со страницы продавца

Особенности:
- маленький и легкий
- максимальная частота сэмплов: 100MHz на 3 каналах, 50MHz на 6 каналах, 32MHz на 9 каналах, 16MHz на 16 каналах
- большой объем сохраняемых сэмплов, поддержка сжатия
- встроенный ШИМ-генератор
- совместим с USB2.0/3.0
- мощный и легкий в использовании софт
- поддержка автоматического обновления онлайн
Характеристики:
- число каналов: 16
- максимальная частота сэмплирования: 100MHz
- ширина полосы измерения: 20MHz
- минимальная ширина захватываемого импульса: 20ns
- максимальный размер сохраняемых сэмплов: 10G/канал
- допустимое входного напряжение: -50V / +50V
- входное сопротивление и емкость: 220KΩ, 12pF
- настраиваемый уровень триггера: -4V ~ +4V, шаг: 0.01V
- количество каналов ШИМ-генератора: 2
- диапазон частот ШИМ: 0.1 ~ 10MHz
- шаг настройки частоты ШИМ-генератора: 10ns
- шаг настройки ширины импульса ШИМ-генератора: 10ns
- выходное напряжение ШИМ-генератора: +3.3V
- выходное сопротивление ШИМ-генератора: 50Ω
- потребление в режиме ожидания: 100mA
- максимальный потребляемый ток: 150mA
- размеры: 95mm * 55mm * 23mm
- поддерживаемые операционные системы: Windows XP, Vista, Windows 7/8/10(32/64bit)
- поддерживаемые стандартные протоколы: UART/RS-232/485, I2C, SPI, CAN, DMX512, HDMI CEC, I2S/PCM, JTAG, LIN, Manchester, Modbus, 1-Wire, UNI/O, SDIO, SMBus, USB1.1, PS/2, NEC InfraRed, Parallel, и т.д.…

Комплектация

Комплект состоял из двух пакетов - в одном был кабель USB, в другом сам анализатор со всеми причиндалами:

Кабель на вид очень неплох, толстый, но довольно мягкий. Оценить сечение проводов питания в нем мне нечем, да это и неважно при заявленном потреблении анализатора. А вот его мягкость - это большой плюс при работе с такой небольшой и легкой коробочкой.
Среди причиндалов было: сам анализатор, три гребенки по девять проводов разного цвета, две гребенки по два провода, клипсы 20 штук, диск с программой и бумажка с адресом откуда качать свежий софт:


Вот бумажка покрупнее:

Сам анализатор выполнен в симпатичном корпусе вполне оригинального дизайна (по сравнению с набившими оскомину квадратными коробками, в которые китайцы лепят все что могут). Хотя кажется у Гаинты (Gainta) я видел среди типовых корпусов такой… Тем не менее смотрится очень хорошо. Сделано все очень аккуратно, нигде нет лишних зазоров, ничего не перекошено:)
На лицевом шильдике обозначено название модели, приведены краткие характеристики и разрисовано назначение пинов входного разъема. Кроме того есть индикатор, показывающий статус анализатора - в простое он плавно загорается и гаснет, во время сэмплирования часто мигает.
На одном из торцов входной разъем на 20 контактов - 16 каналов, две земли и два выхода ШИМ-генератора. На другом торце - USB-разъем:





В комплекте идут три гребенки по 9 проводов и две по два провода. Если с двухпроводными еще можно придумать что-то - например, одна для земли, вторая для двух каналов или для ШИМ-генератора, то зачем ТРИ большие гребенки - непонятно… Не иначе, одна из них запасная:)

При подключении двух девятиконтактных гребенок мы получаем все 16 каналов и две земли. Длина проводов на всех гребенках - 20 см, все провода оканчиваются изолированными термоусадкой «мамами» для подключения клипс. На каждой гребенке один провод имеет белую термоусадку - предполагается, что это земля, чтобы труднее было перепутать, остальные с черной термоусадкой:

Клипс - ровно 20 штук. То есть можно ими подключить все 20 контактов входного разъема - 16 каналов, 2 земли и 2 ШИМ-генератора. Вряд ли такое когда-то понадобится, но за нежадность китайцам плюс:) Цвета клипс особым разнообразием не страдают, в отличии от проводов:


С другой стороны, если проявлять минимальную внимательность, то можно и не перепутать ничего, глядя не только на клипсы, но и на провода, подключенные к ним.
Сзади у клипс торчат обычные четырехгранные штырьки как на IDC-разъемах:


«Мамы» проводов одеваются на эти штырьки довольно туго и сами соскакивать не проявляют желания, соединение довольно надежное.
Устройство клипс элементарное:




Никаких фиксаторов или защелок, задняя часть просто стягивается, а внутренняя пластина вынимается после поворота на 90 градусов. Штырек просто припаян, что не может не радовать в плане ремонтопригодности:)
Для подключения к проводу нужно надавить на заднюю часть, из носика выходит и раскрывается миниатюрный зажимчик. Задняя часть отпускается и под действием пружины зажимчик входит обратно, одновременно закрываясь:




Держит провод уверенно, как достаточно толстый, около 1.5мм, так и тоненький, где-то 0.3мм:




В целом качеством эти клипсы не блещут, но вполне работоспособны в большинстве случаев.

Работа анализатора, софт

Предварительно сразу нужно оговорить один момент: этот анализатор не имеет собственной памяти, все сэмплы сразу же передаются на компьютер, где и сохраняются. Правда, в характеристиках имеется упоминание о сжатии, так что, скорее всего, он не передает тупо 100 мегабит на канал при частоте сэмплирования 100 МГц. Тем не менее, при высоких частотах он очень требователен к качеству канала USB. В идеале корневой хаб, к которому подключен анализатор, не должен обслуживать никаких других клиентов. У меня, например, он заработал на полной скорости только в разъеме на передней панели компа. А на нетбуке он так и не смог обеспечить 50 МГц на 6 каналов, хотя на 5 каналов уже работал, и 100 МГц на три канала обеспечивал.

Итак, софт. Изначально я не обратил внимание на бумажку, где был адрес сайта с софтом, поэтому достал из закромов внешний DVD и честно попытался поставить программу с него. Программа поставилась, но вот драйвера не захотели вставать (Windows XP). Поиском в инете вышел на этот сайт, указанный в бумажке, и скачал оттуда чуть более свежую версию программы. Хотя драйвера в ней были вроде бы такими же, но из новой версии они встали нормально и анализатор ожил:)

Интерфейс программы на первый взгляд очень простой (да и на второй тоже, если честно). Сначала даже непонятно каким образом вообще можно делать в ней что-то полезное:) Но по мере углубления уважение к нему начинает расти:) В целом у меня сложилось такое впечатление от программы: совершенно ненавязчива, ничего лишнего, но вполне достаточна для большинства задач. Есть и мелкие недочеты, конечно, но они не сильно портят впечатление.
Вот так выглядит окно программы:


Быстрыми кликами можно настроить частоту сэмплирования и глубину (количество) сохраняемых сэмплов:


С выбором больших частот сэмплирования автоматически будет ограничиваться и число доступных каналов.
В самих каналах можно выбрать для каждого из них его имя, расположение, размер по вертикали. Для одного из каналов можно установить условие триггера - по фронту, по спаду, по высокому уровню, по низкому уровню или без триггера. Если триггер до этого был установлен на другом канале, он там сбросится, то есть триггер возможно установить на любом канале, но только на одном.
В общих настройках можно убрать лишние каналы и установить граничное напряжение, относительно которого будут считаться нули и единицы:

Под рукой у меня была платка, в которой можно было обнаружить лишь SPI и USB, вот их я и решил посмотреть. На скриншотах будут уже настроенные каналы, изначально же никаких данных на сигналах нет и каналы называются просто - Chanel 0, Chanel 1 и т.д.
Первые два канала я подключил к USB, 4 следующих - к SPI и запустил анализатор. Вот что получил в целом:


Это все 2 секунды наблюдения:) Теперь нужно подключить декодирование. Выбираем в списке нужный протокол:

И появляется окно настройки этого протокола.
Для USB:


Для SPI:


Как видно, у SPI довольно богатые настройки, позволяющие смотреть этот протокол во всех его проявлениях.
После назначения каналов сигналам протокола программа предлагает автоматически переименовать каналы по названиям сигналов, это у меня на скриншотах уже как раз и сделано. И теперь над графиками при достаточном увеличении будут показываться данные согласно протоколу. Например, вот один их фреймов USB:


Как видно, программа не просто показывает численные значения передаваемых байтов, но и их внутрипротокольное значение - CRC, SYNC, ACK и т.д. Правда, есть места, которые мы с программой не поняли, такое ощущение, что скорость USB резко замедляется в какие-то моменты:

А вот кусок обмена по SPI:

Вот так это будет выглядеть в файле:

Кроме того, можно сохранять не сэмплы, а данные декодированного протокола. Вот, например, кусок сохраненного обмена по CAN в моей машине (скриншотов, к сожалению, не делал):
Time [s],Packet,Type,Identifier,Control,Data,CRC,ACK 0.0002935s,0,DATA,0x0591,0x08,0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x284A,ACK 0.0016248s,1,DATA,0x05D1,0x02,0x10 0x00,0x0249,ACK 0.0023359s,2,DATA,0x0635,0x03,0x00 0x00 0xFD,0x0D93,ACK 0.0033871s,3,DATA,0x0470,0x08,0x40 0x01 0x00 0x46 0x00 0x00 0x00 0x1F,0x5D2D,ACK 0.0046378s,4,DATA,0x0531,0x04,0x01 0x40 0xF0 0xB1,0x40D3,ACK 0.005489s,5,DATA,0x05C1,0x04,0x00 0x00 0x00 0x20,0x0AA2,ACK 0.0063502s,6,DATA,0x065F,0x08,0x01 0x5A 0x5A 0x5A 0x36 0x31 0x5A 0x43,0x3840,ACK 0.0075009s,7,DATA,0x0651,0x08,0x80 0x02 0x50 0xAF 0x38 0x57 0x00 0x00,0x50D4,ACK 0.0086621s,8,DATA,0x0621,0x08,0x20 0x2C 0x69 0x18 0x81 0x64 0xFD 0x00,0x4FE1,ACK 0.0233258s,9,DATA,0x0291,0x05,0x00 0x00 0x00 0x00 0x00,0x1DE1,ACK 0.0333432s,10,DATA,0x03E1,0x08,0x20 0x00 0x30 0x01 0xA2 0x00 0x84 0x00,0x50DB,ACK 0.0432946s,11,DATA,0x03C3,0x08,0xAB 0x00 0x00 0x00 0xA8 0xF0 0x00 0x64,0x0F7B,ACK 0.0444855s,12,DATA,0x040C,0x08,0x00 0x01 0x01 0x01 0x00 0x00 0x00 0x00,0x290F,ACK 0.053637s,13,DATA,0x0470,0x08,0x40 0x01 0x00 0x46 0x00 0x00 0x00 0x1F,0x5D2D,ACK 0.0548882s,14,DATA,0x0531,0x04,0x01 0x40 0x00 0x41,0x191A,ACK 0.0632503s,15,DATA,0x0291,0x05,0x00 0x00 0x00 0x00 0x00,0x1DE1,ACK 0.0666019s,16,DATA,0x0497,0x08,0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x20,0x501A,ACK 0.0733737s,17,DATA,0x0151,0x04,0x00 0xE0 0xB0 0x50,0x5718,ACK 0.0833265s,18,DATA,0x02C1,0x06,0x00 0x00 0x00 0x00 0x06 0x00,0x5677,ACK 0.0843872s,19,DATA,0x0359,0x08,0xB8 0x01 0x00 0x00 0x00 0x2B 0x40 0x00,0x4875,ACK 0.0856485s,20,DATA,0x035B,0x08,0x08 0xB4 0x0C 0xB5 0x0B 0xFF 0x02 0x80,0x157E,ACK 0.0868492s,21,DATA,0x0369,0x08,0x3F 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x45C9,ACK 0.0881104s,22,DATA,0x0381,0x06,0x01 0x00 0x00 0x00 0x00 0x00,0x18D3,ACK 0.0892516s,23,DATA,0x0397,0x08,0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,0x4293,ACK 0.0905824s,24,DATA,0x03B5,0x06,0x00 0x00 0x00 0x00 0x00 0x00,0x007C,ACK 0.0916936s,25,DATA,0x0457,0x03,0x01 0x40 0x00,0x6539,ACK 0.0925447s,26,DATA,0x04B9,0x06,0x00 0x00 0x00 0x00 0x00 0x00,0x11A3,ACK 0.0936154s,27,DATA,0x0400,0x08,0x0C 0x01 0x09 0x05 0xAC 0x00 0x00 0x00,0x3DDD,ACK

Что еще есть? при ведении курсора по графику канала автоматически показывается ширина текущего импульса, период, частота и заполнение (актуально для ШИМ). Можно вывести два или три маркера и таскать их по графику, при этом они будут притягиваться к ближайшим фронтам и спадам. Справа будет выводиться информация о точном времени маркера и временном промежутке между ними:


Тут маркеры стоят на началах фреймов USB, которые, как известно, с довольно высокой точностью следуют каждую миллисекунду, что анализатор и подтверждает. Или, скорее, подтверждает свою достаточно хорошую точность:)

ШИМ-генератор

Ну, тут все просто. Он есть, оба канала, все работает. Быстро включить-выключить каждый из каналов можно прямо в главном окне наверху, нажав на соответствующую надпись (PWM1 PWM2). Зеленая - активен, красная - отключен. Настройки генератора вызываются в отдельном окне:


Что еще про него сказать - не знаю даже:)

Внутренности

Построение, как я подозреваю, классическое - входное согласование, компараторы триггера, ПЛИС и контроллер с USB. Я вообще подозреваю, что это клон того же Saleae:)








Вторая сторона платы совершенно пуста.
Все очень аккуратно, никаких соплей, неотмытого флюса и т.п. Внутренности не нарушают гармонию внешности:)

Итог

Аппарат мне понравился. Все, что в нем заявлено - работает. Софт произвел очень приятное впечатление. Честно говоря, даже не ожидал от китайцев такой работы:) Есть и недостатки, но мелкие - хотелось бы, например, присваивать сигналам разные цвета. Но это уже скорее придирки.

Покупая всякую китайскую электронику для своих «поделок» часто сталкиваюсь с проблемой плохого описания работы,

Тема сегодняшней статьи — использование дешевого китайского логического анализатора купленного на Алиэкспресс .

Что такое логический анализатор? Это такой прибор… для логического анализа))) Сразу приходит на ум фильм с Робертом Де Ниро

Зачем он нужен? Ну конечно же занимать логическим анализом))). А точнее анализом логических уровней разных микроконтроллеров и периферии к ним. То что принято называть реверс инжинирингом.

Характеристики

  • Совместимость по софту с Saleae Logic 8
  • Число цифровых входов - 8
  • Два индикатора - питания и состояние логических входов
  • Входное сопротивление 100КОм, входная емкость 5пФ
  • Питание через USB
  • Поддерживаемые частоты дискретизации:
  • 24МГц,16МГц, 12МГц, 8МГц, 4МГц, 2МГц, 1МГц, 500КГц, 250КГц, 200КГц, 100КГц, 50КГц, 25КГц;
  • Количество сохраняемых значений одного измерения - 10000

С одной стороны разъем на 10 штырьков и распиновкой на корпусе

С другой Mini USB для питания и подключения к компьютеру

Внутренности

Внутри корпуса плата, на ней микропроцессор с высокоскоростным USB интерфейсом CY7C68013A от компании CYPRESS , EEPROM ATMLH432 и шинный формирователь LVC245A от NXP .

На входе анализатора стоят токоограничивающие резисторы 100 Ом, подтягивающие к земле резисторы 100 КОм и конденсаторы 5 пФ. Все честно, как в описании.

Подключение

Для подключения анализатора в комплекте идут 10 соединительных проводков на штырьковые контакты. Сразу прикупил таких вот клипс-зажимов .

Качество зажимов очень посредственное, но хорошие зажимы обойдутся дороже самого анализатора

Софт

Это, пожалуй, самое интересное в данном анализаторе. К нему подходит родной софт от Saleae Logic .

Доступны версии для OSX, Linux и Windows на 32 и 64 бита.
Saleae Logic 1.2.3 под Windows 7 заработал с пол пинка, софт запустился, железо опозналось, не смотря на надпись версии «Beta».

Интересные плюшки в софте от Saleae Logic

Триггер срабатывания записи логической последовательности на каждый канал

  • На изменения логического уровня в «0»
  • На изменение логического уровня в «1»
  • На положительный импульс заданной длительности
  • На отрицательный импульс заданной длительности

Подсчет статистических показаний по текущему измерению

Декодирования протоколов: Async Serial, I2C, SPI, Hide, 1-Wire, Atmel SWI, BISS C, CAN, DMX-512, HD44780, HDLC, HGMI CEC, I2S/ PCM, JTAC, LIN, MDIO, Manchester, Midi, Modbus, PS/2 Keyboard/Mouse, SMBus, SWD, Simple Parallel, UNI/O, USB LS и FS

Ведение журнала по декодируемому протоколу

Кроме того, данный анализатор можно прошить под софт от USBee

Позанимаемся анализом

Как раз разбирался с подключением ультразвуковых датчиков DYP-ME007Y, на вид абсолютно одинаковыми, но работающими совершенно по разному .

Если один работает точно по даташиту: короткий импульс на «триггер» запускает ультразвуковой импульс и по длительности эхо измеряется расстояние. То второй и третий (с мигающим светодиодом) примерно раз в 100мс без каких либо внешних пинков сам мерит расстояние и посылает его на скорости 9600 в виде четырех байт (включая контрольную сумму). Программа Saleae Logic позволяет включить декодирование сигнала последовательной шины в последовательность байт. Датчики второго типа отлично работают с отключенным выводом «TRIG», хотя может и ждут какой нибудь команды на этом входе, но сие даже волшебный приборчик не покажет.

Далее захотелось посмотреть ШИМ сигнал Aтмеги 168? Включил все шесть каналов поддерживающих PWM на разный уровень и с удивлением обнаружил, что частота двух каналов ШИМ отличается от 4-х других. Задействованы разные таймеры?

А что там на шине данных у моих ?

Волшебный приборчик и программа нормально декодировали последовательность, выдаваемую на светодиоды. Даже цвета светодиодов нарисовались.

С анализом шины I2C тоже никаких проблем. Софт нормально справился с декодированием.Можно видеть пакеты записи в регистры при работе драйвера дисплея TM1637

RF-приемник на 315МГц, подключенный напрямую к анализатору, получил сигнал с радиовыключателей , и выдал манчестреский код. После подбора скорости манчестреский код превращается умной программкой в последовательность байт.

Интересно, а как с точностью измерения временных интервалов? Точного генератора импульсов у меня под рукой не оказалось, но Ардуиновская tone(1000) на 1000Гц

и tone(20000) на 20КГц дают довольно точный результат.

Для проверке высокой частоты на скорую руку собрал генератор на NE555. Удалось выжать из него 8МГц. Анализатор проглотил эту частоту нормально. На 20МГц проверить не удалось, но 8 для такой дешевой железки тоже очень хороший результат.

Небольшой итог

Логический анализатор очень нужная и полезная вещь для тех, кто занимается раскапыванием китайской периферии к микроконтроллерам (Назовем красиво - реверс инжинирингом)
Из достоинств данной железки хочу отметить:

  • Привлекательную цену
  • Совместимость с довольно удобным софтом Saleae Logic
  • Защита на входе в виде шинного формирователя LVC245A
  • Малые габариты

Явных недостатков у этой железки для себя не нашел. Жаль, что я не приобрел логический анализатор раньше — сколько времени бы я сэкономил во многих проектах. Несомненно, кому то возможностей данной железки окажется мало. Есть масса более навороченных моделей, но по цена $100-200 делает эти приборы гораздо менее доступными для радиолюбителей.

Поанализируем что-нибудь еще?

1. Введение:

Данный логический анализатор предназначен для записи, выдачи и анализа различных последовательностей импульсов и последовательных протоколов с заданным периодом. За аппаратную часть взят мультипрограмматор на FT232

2. Краткое описание

Анализатор имеет 7 каналов ввода/вывода, которые подключаются к различным исследуемым устройствам по усмотрению пользователя.

Каналы 1-5 отвечают вход/выход. Эти каналы могут выходными или входными в зависимости от настройки канала. Канал 5 не разведён ни на один разъём, но имеет контактную площадку на плате.

Канал 6 – только вход. Этот канал используется совместно с каналом 1 и служит для имитации двунаправленного входа/выхода, например, как в шине I2C, то есть направление передачи канала меняется походу работы протокола. Выходные данные подаются на выход 3, а входные данные идут по каналу 6. Более подробно смотрите «реализация протокола I2C».

Канал 7 – только выход. Этот канал на программаторе реализован как мощный выход 12В. Например, он был использован в качестве питания подсветки при работе с дисплеем от нокии 6100 (смотрите примеры использования)

В левой части рабочего окна программы находятся настройки портов анализатора – это:

  • скорость передачи (BoudRate)
  • инверсия каналов (галочка “ NEG ”)
  • направление порта (IN / OUT )
  • размер выдаваемого массива (допускается размер до 65кбит)

В центральной части окна программы расположено графическое отображение состояния каналов в виде временной диаграммы. А в нижней части поля – дополнительная информация, где отображаются нюансы при использовании различных выбранных режимов анализатора.

В правой части поля программы расположены элементы управления имитируемых протоколов. Имеется:

  • выпадающее меню выбора протокола
  • 7 выпадающих меню (на каждый канал): выбор назначения канала и сигнала протокола
  • инверсия данных протокола (не путать с инверсией порта )
  • окно для ввода данных (для задания числовой последовательности протокола)

3. Управление и ввод данных.

Нажатие левой кнопки мыши на панель осциллограммы устанавливает курсор в это место без изменения состояния данного бита.

Нажатие правой кнопки мыши на панель осциллограммы устанавливает курсор в это место и меняет состояние бита в этом месте.

Помимо ввода данных мышкой можно вводить их с клавиатуры . После нажатия клавиши «0» или «1» происходит ввод на место курсора соответственно 0 или 1. Также для удобства продублирована функция кнопки «0» на кнопку «2», то есть при нажатии на клавишу «2» происходит ввод 0.

Ввод данных массивом (только для протокола). Последовательность для протокола можно вводить в десятичной(1 34 987), двоичной (0b100 0b101010 0b1111111111111) и шестнадцатеричной форме (0xFA 0x 12C 0x 1a 2cb ). Данные водятся через пробел. Также допускаетсясмешивать форматы данных (123 0b1010 0x12aB).

Данные вводятся с последующим инкрементом адреса. При достижении границы массива его размер будет увеличиваться. Максимальный размер массива данных – 65 кбит

Ввод данных файлом. Для ввода данных файлом необходимо создать файл с любым расширением, например, txt. Формат свободный.

Разделять числа в файле можно точкой, запятой или пробелом. Пояснения в файле делаются через точку с запятой «;».

Пример содержимого файла:

123 343, 234 ;тут пояснения после точки с запятой

0x12F, 0b10101010 ; и т.п.

Драйвер для анализатора.

В анализаторе используются специальные функции FT232R, для использования которых необходимо установить специальный драйвер FTD 2XX . Установка обычного COM порта не подходит. Драйвер желательно брать у производителя – , например.

4. Подключение анализатора:

Внешний вид анализатора показан на рисунке 2.

J 1 – джампер питания (Vcc). Имеет 4 состояния: 1.8В, 3В, 5В и внешнее питание

XT1 – miniUSB. Подключение к ПК.

XT 2 – интерфейсный разъём для подключения анализатора к испытуемому. Имеет 10 контактов:

1 канал 1 (вход/выход)
2 питание выходных портов (Vcc) (в зависимости от состояния джампера питания будут входом или выходом)
3 Cbus 4 не используется. Но можно вывести частоту 6,12,24 или 48 МГц (более подробно смотри «использование Cbus»)
5 канал 2 (вход/выход)
7 канал 3 (вход/выход)
9 канал 4 (вход/выход)
4,6,8,10 общ.

ХТ3 – интерфейсный разъём для подключения анализатора к испытуемому. Имеет 10 контактов

1 питание выходных портов (Vcc ) (в зависимости от состояния джампера питания будут входом или выходом).
3 канал 3 (вход/выход)
5 канал 4 (вход/выход)
7 канал 6 (только вход)
9 канал 7 выход сигнал 12В!!!
2,4,6,8,10 общ.

J 2 – джампер на 2 положения. Меняет функцию канала 6.

положение 1-2 изменение канала 6 от Vcc до 12В
положение 2-3 изменение канала 6 от 0В до 12В
положение 1-2 используется в программаторе для формирования сигнала MCLR при прошивании PIC контроллеров.

Каналы 1-5 – по умолчанию являются входами и находятся в третьем состоянии (состояние Z). При установке канала в состояние выход, он будет выходом только в момент передачи.

Каждый канал имеет токоограничивающие резисторы 300ом.

Канал 6 является выходом всегда. По умолчанию имеет состояние «0».

5. Использование сигнала Cbus (разъём ХТ2 контакт 3)

Этот сигнал в анализаторе не отображается, так как идёт не синхронно с выдаваемыми сигналами и имеет частоту выше, чем выходные импульсы. По умолчанию не задействован.

На этот контакт можно вывести частоту 6,12,24 и 48 МГц. Это делается с помощью специальной утилиты MProg, взять можно

6. Краткое описание, что сделать, чтоб подать на Cbus частоту:

  1. устанавливаем утилиту Mprog.
  2. выбираем поиск устройств, нажав на лупу, или в меню Device->Scan, после чего утилита находит устройство и отображает его PID и т.п.
  3. выбираем в закладке Tool функцию Read and Parse, то есть считываем текущие установки и выводим это дело на дисплей.
  4. открываем закладку FT 232 R (если она сама не открылась), после чего открываются 2 поля. Invert rs 232 signzl (нас это не касается, т.к. программа анализатора управляет этими сигналами по-своему) и поле I / O Controls .
    Поле I/O Controls имеет 4 подменю C1-C4.
  5. выбираем меню C4. Это и есть дополнительные функции сигнала Cbus4. Из всех предложенных функций нас интересуют CLK6, CLK12, CLK24 и CLK48. По названию функций должно быть всё понятно J . Остальные функции не влияют (точнее, при их выборе предсказать состояние этого пина не представляется возможным), так как они предназначены для работы в режиме COM порта.
  6. для того, чтоб FT232R задействовала выбранную функцию, надо обязательно сохранить проект (без этого не получится), так уж написана эта утилита.
  7. после сохранения проекта на диске, можно перепрограммировать нашу FT232R. Активизируется кнопочка с молнией. После её нажатия M prog пропишет наши настройки в чип.

7. Как описать и использовать собственный протокол

Для создания описания протокола потребуется написать собственный INI файл. Рекомендую копировать какой-нибудь из имеющихся файлов и изменять его. В пример возьмём файл SPI_9BIT . Пояснения в этих файлах необходимо указывать в отдельных строчках!!!

;заголовок настройка в этом разделе файла указываются специфические настройки протокола:


;количество линий в протоколе. В этом их 4
num_lin = 4
;ниже расписаны линии по номерам и указаны их имена
lin1 = MOSI
lin2 = MISO
lin3 = SCK
lin4 = SS
;количество передаваемых бит
bits = 18
;доп. информация, она будет выводиться в окне дополнительной информации.
waring = канал 6 завязан с каналом 1 аппаратно. Бодрейт делится на 2, так как тактовая передаётся за 2 такта
;заголовок протокол. Ниже будет расписаны последовательности, используемые в протоколе.


SS = N N N N N N N N N N N N N N N N N N
SCK = N O N O N O N O N O N O N O N O N O
MOSI = 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8
MISO = N N N N N N N N N N N N N N N N N N

В этом разделе в качестве передаваемых бит указывается номер бита 0 1 2 14 34 и т.д. В качестве передаваемой 1 пишется O (от английского One), в качестве передаваемого 0 пишется N (т.е Null).

ВАЖНО: При описании протокола допускается расхождение в количестве бит, заданных в num _lin и описанных в разделе protocol .

После того как поправили или написали INI файл, необходимо добавить запись в файл protocol.lst. для того чтоб программа могла найти и использовать новый протокол.

8. Пример использования анализатора для анализа шины I2C

Для начала подключаем анализатор к шине I2C (испытуемое устройство – джойстик нунчак от приставки Wii), внешних элементов не требуется. Схема подключения приведена на рисунке 3.Описывать протокол не вижу смысла. Про это подробно написано в инете.

Как видно из схемы, для реализации используется 3 канала (каналы 1,4,5), а протокол I2C является двухпроводным. Суть в том, что анализатор не имеет возможности менять направление шины по ходу передачи сигналов, поэтому разделение входного сигнала и выходного происходит на транзисторе (см. схему). Таким образом, канал 1 является выходным: он выдаёт данные в I2C. А канал 5 является входным: он принимает данные по I2C.

Для настройки выбираем в меню выбора интерфейса «I2C» и устанавливаем следующие галочки и кнопочки:

Канал 1 NEG (инверсный выход) OUTSDA _OUT данные на выход

Канал 4 OUTSCL тактовый сигнал

Канал 5 IN SDA _IN входные данные

9. Пример использования анализатора для анализа шины SPI (9 bit )

В этом примере рассмотрена имитация последовательного протокола для управления дисплеем от nokia6100. Схема подключения дисплея к анализатору приведена на рисунке 4. Из внешних элементов необходим только токоограничивающий резистор для подсветки дисплея. Особенностью является передача по SPI не 8 бит, как обычно, а 9.

Для работы этого протокола в анализаторе создан отдельно 9битный SPI .

Настройка анализатора и сигналов протокола.

Для настройки выбираем в меню выбора интерфейса «SPI _9BIT » и устанавливаем следующие галочки и кнопочки:

Канал 1 OUT ;этот сигнал пропишем вручную. Его нет в протоколе

Канал 2 OUT SS ;сигнал выбора чипа

Канал 3 OUT SCK ;тактовый сигнал протокола

Канал 4 OUT MOSI ;сигнал данных

Поскольку у нас нет принимаемых данных, все сигналы настроены как выход и не используется сигнал протокола MISO.

Также необходимо установить джампер питания в положение 3.3В, так как питание устройства пойдёт от анализатора.

Ардуино – уникальный микроконтроллер, позволяющий вам создать любое устройство, ограниченное лишь фантазией инженера. Сегодня мы поговорим об одном из таких проектов и разберём антенный анализатор на Ардуино, а также все нюансы, с которыми вам придётся столкнуться при его пайке и программировании.

На самом деле анализатор спектра на Ардуино – достаточно простой проект, но идеально подойдёт новичкам и тем, кто хочет добавить данное устройство к себе в инструментарий. Давайте разберём, что такое логический анализатор на Аrduino, и какие подводные камни вас ожидают при его проектировке и пайке.

Схема логического анализатора на базе МК Arduino

Для начала необходимо спроектировать то, что мы будем паять. Логический анализатор является простым инструментом, вся его задача состоит в считывании и анализе двоичного кода (цифрового сигнала), передаваемого при помощи подачи электричества.

Иными словами, каждые 5 вольт подаваемые на устройство – это единичка, отсутствие таковых – это ноль. Такой двоичный код используется при кодировке данных и во многих устройствах, в том числе на основе Ардуино. Читаться начинает, как правило, с единицы. А чтобы проверить свой проект с двоичной кодировкой, вам и пригодится логический анализатор.

Проще всего испробовать устройство на шине I2C, что применяется в большинстве электронных устройств и по сей день. Чтобы разобраться, что нам нужно проектировать, давайте рассмотрим главные характеристики устройства:

  1. 4 канала для логического анализа поступающих сигналов.
  2. Вариативность частоты сигналов вплоть до 400 кГц, такой промежуток охватит большую часть современных приборов, кроме специализированных.
  3. Напряжение на входе должно составлять до +5 Вольт, как уже описывалось, это стандарт, принимаемый за единицу (наличие сигнала).
  4. LED дисплей для отображения информации. Особенно изощрённые программисты могут купить пару светодиодов и выстроить собственный дисплей нужной им диагонали, но для всех остальных – написание ПО под такое устройство будет слишком трудоёмким, и окажется лишним шагом. Поэтому здесь мы рассмотрим вариант устройства именно с ЖК дисплеем.
  5. 4 аккумулятора для питания, на 1.2 В при максимальном напряжении в 4.8 Вольт.
  6. Оперативная память. Желательно взять две разновидности – скоростную (3.6мс на сигнал) и низкоскоростную (36 с), такое решение позволит охватить весь диапазон сигналов.
  7. Панель управления или пара кнопок.
  8. Любая оболочка под крепление конструкции. Можно распечатать на 3-Д принтере, можно взять ненужный пластиковый коробок или обойтись вовсе без корпуса. Здесь мы не будем давать советов, устройство работает, что в оболочке, что без, выбор остаётся за вами.

Для питания вам необходимо подобрать именно аккумуляторы, так как 4 батарейки по 1.5 Вольта могут вывести Ардуино из строя и сжечь плату. Не говоря уже об опасности для ЖК дисплея. Поэтому не поскупитесь, и возьмите качественные комплектующие. Ведь качество конечного изделия равно параметру худшего его компонента.

Не забудьте добавить к конечной схеме переключатель S1, который будет использоваться для подачи питания и отключения прибора, чтобы аккумуляторы не разряжались попросту.

Потребуются и специальные подтягивающие резисторы, которые позволят исключить ложные данные, что могут появляться из-за электромагнитного поля пальцев сигнальных щупов. В результате помехи и искажения на цифровых входах будут минимальны.

Светодиод вы можете взять по своему желанию, он необходим для индикации наличия цифрового сигнала, и вполне заменяется ПО под ЖК дисплей. Такое решение удобно лишь в качестве показателя записи цифровых сигналов в память, но вы, в любом случае, будете активировать прибор вручную, так что подобная индикация, при необходимости, может быть убрана.

Рекомендуемая периферия для создания логического анализатора на базе микроконтроллера Arduino

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

  1. Сам микроконтроллер Ардуино. Не имеет разницы, какой вы подберёте, это лишь повлияет на конечный размер устройства. ПО под любую версию выглядит одинаково. На фото выше был использована плата .
  2. ЖК дисплей. Если у вас имеется старый кнопочный телефон, можете снять с него, и устроить «безотходное» производство.
  3. Резисторы различной ёмкости.
  4. Датчик тока.
  5. 4 аккумулятора.
  6. Светодиод или парочка.
  7. Карта памяти, но это опционально.

Помимо этого, вам, естественно, потребуется паяльник, припой и прочие принадлежности. Лучше заранее найти место, где вы будете всё это собирать. А если работаете с паяльником впервые, изучите правила пожарной безопасности и особенности его эксплуатации, чтобы по 10 раз не перепаивать каждую деталь.

Программирование МК Arduino при реализации проекта «логический анализатор»

Благодаря популярности Ардуино существуют уже готовые библиотеки и функции для логических анализаторов на этом МК. Вам остаётся лишь подобрать подходящую и переписать программный код под своё устройство. Ведь платы, датчики и прочие вводные у всех различаются, и чтобы ваше устройство работало без проблем, придётся подогнать чужой код под свои запросы. Если же вы не хотите лишний раз заморачиваться и у вас есть опыт программирования на С++, можете воспользоваться любой полюбившейся средой.

Код для схемы на фото выше может быть таким:

/*********************************** 128 by 64 LCD Logic Analyzer 6 channel and 3Mb/s By Bob Davis Uses Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ Copyright (c) 2012, [email protected] All rights reserved. ********************************************/ #include "U8glib.h" // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // **** NOTE **** I Moved the three control pins !!! U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 1, 2, 3); int Sample; int Input=0; int OldInput=0; int xpos=0; void u8g_prepare(void) { u8g.setFont(u8g_font_6x10); u8g.setFontRefHeightExtendedText(); u8g.setDefaultForegroundColor(); u8g.setFontPosTop(); } void DrawMarkers(void) { u8g.drawFrame (0,0,128,64); u8g.drawPixel (20,1); u8g.drawPixel (40,1); u8g.drawPixel (60,1); u8g.drawPixel (80,1); u8g.drawPixel (100,1); u8g.drawPixel (20,62); u8g.drawPixel (40,62); u8g.drawPixel (60,62); u8g.drawPixel (80,62); u8g.drawPixel (100,62); } void draw(void) { u8g_prepare(); DrawMarkers(); // wait for a trigger of a positive going input Input=digitalRead(A0); while (Input != 1){ Input=digitalRead(A0); } // collect the analog data into an array // No loop is about 50% faster! Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; // display the collected analog data from array for(int xpos=0; xpos<128; xpos++) { u8g.drawLine (xpos, ((Sample&B00000001)*4)+4, xpos, ((Sample&B00000001)*4)+4); u8g.drawLine (xpos, ((Sample&B00000010)*2)+14, xpos, ((Sample&B00000010)*2)+14); u8g.drawLine (xpos, ((Sample&B00000100)*1)+24, xpos, ((Sample&B00000100)*1)+24); u8g.drawLine (xpos, ((Sample&B00001000)/2)+34, xpos, ((Sample&B00001000)/2)+34); u8g.drawLine (xpos, ((Sample&B00010000)/4)+44, xpos, ((Sample&B00010000)/4)+44); u8g.drawLine (xpos, ((Sample&B00100000)/8)+54, xpos, ((Sample&B00100000)/8)+54); } } void setup(void) { pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); pinMode(A4, INPUT); pinMode(A5, INPUT); // assign default color value if (u8g.getMode() == U8G_MODE_R3G3B2) u8g.setColorIndex(255); // RGB=white else if (u8g.getMode() == U8G_MODE_GRAY2BIT) u8g.setColorIndex(3); // max intensity else if (u8g.getMode() == U8G_MODE_BW) u8g.setColorIndex(1); // pixel on, black } void loop(void) { // picture loop // u8g.firstPage(); do { draw(); } while(u8g.nextPage()); // rebuild the picture after some delay delay(100); }

Не забудьте скачать библиотеки для работы с Ардуино. А также учитывать, что вывод идёт на ЖК экран. По окончанию написания софта просто подгрузите его на плату с помощью специального переходника под usb.

Может случиться так, что из-за особенностей отображения информации на ЖК дисплее, вам не хватит постоянной памяти устройства. В таком случае имеет смысл докупить флешку и прикрепить её к системе. Благо делается это достаточно просто, а всё, что вам потребуется – специальный переходник под ваш форм-фактор физического накопителя.

Логический анализатор - незаменимый помощник при отладке цифровой схемотехники. Давайте рассмотрим основные приёмы работы с логическим анализатором Saleae Logic Analyzer и его китайскими аналогами.

Для работы нам понадобится:

  • соединительные провода (рекомендую вот такой набор);
  • макетная плата (breadboard).

1 Технические характеристики логического анализатора Saleae logic analyzer

Логический анализатор - это инструмент для временного анализа цифровых сигналов. Это незаменимый, действительно незаменимый инструмент при отладке цифровой электроники. Оригинальные анализаторы от именитых производителей стоят больших денег. У наших китайских друзей можно купить такое устройство за копейки. Поэтому если у вас его ещё нет - обязательно приобретите. Возможности данного небольшого устройства весьма внушительны.

В таблице перечислены основные параметры логического анализатора, моей китайской копии анализатора фирмы Saleae .

2 Установка драйвера для логического анализатора Saleae

Для данного логического анализатора - китайской копии - к счастью, подходит драйвер от оригинала. Заходим на официальный сайт , скачиваем программу для своей операционной системы и устанавливаем её. Драйверы будут установлены вместе с программой. Кстати, обзор возможностей программы в виде инструкции на английском языке приложен в конце данной статьи.

Если у вас копия другой фирмы, например, USBee AX Pro, то с большой долей вероятности для него также подойдут драйверы от производителя анализатора-оригинала.

3 Примеры работы с логическим анализатором

Для первого эксперимента возьмём преобразователь USB-UART на микросхеме FTD1232. Подключим анализатор к порту USB. Выводы каналов с 1 по 6 подключим к выводам USB-UART преобразователя. По большому счёту, больше всего нас интересует только две линии - Rx и Tx, можно обойтись только ими. Преобразователь определился в системе как COM-порт. Запустим любую терминалку (вот, например, неплохая программа для работы с COM-портом) и подключимся к порту.


Подключение USB-UART конвертера на микросхеме FTD1232 к логическому анализатору

Запускаем программу Saleae Logic . Если драйверы для анализатора установлены корректно, в заголовке программы будет указано Connected - подключено. Допустим, мы не знаем на каком канале будет сигнал, а на каком нет, поэтому не будем выставлять триггер для начала захвата сигнала. Просто нажмём на стрелки большой зелёной кнопки Start (Старт) и выставим в поле Duration (Длительность), скажем, 10 секунд. Это время, в течение которого логический анализатор будет собирать приходящие по всем 8-ми каналам данные после нажатия кнопки «Старт». Запускаем захват и одновременно отправляем в COM-порт какое-нибудь сообщение. Через 10 секунд анализатор закончит сбор данных и выведет результат в поле просмотра сигналов. В данном случае сигнал будет лишь на одном канале, который присоединён к выводу Tx (передатчик) USB-UART преобразователя.


Для наглядности можно настроить декодер перехваченных данных. Для этого в правом столбце находим поле Analyzers , нажимаем иконку в виде плюса - «Добавить», указываем тип - Async Serial . Появится окно с выбором настроек. В первое поле вводим номер канала, на котором у вас данные. Остальное оставим как есть. После нажатия кнопки Save (Сохранить), над полем соответствующего канала появятся метки голубого цвета с отображением значений байтов, которые были перехвачены. Нажав на шестерёнку в данном дешифраторе, можно задать режим отображения значений - ASCII, HEX, BIN или DEC. Если вы передавали в COM-порт строку, выберите режим ASCII, и увидите тот текст, который был вами передан в порт.


Тут же, в правом столбце программы Saleae Logic, можно добавлять к перехваченным данным закладки, проводить измерения задержек и длительностей, выставлять всевозможные маркеры и даже проводить поиск по данным для декодированных протоколов.

Аналогичным образом подключим логический анализатор к преобразователю USB-RS485. Линии данных всего две, поэтому можно установить триггер срабатывания по фронту любого из каналов: сигнал в протоколе RS-485 дифференциальный и фронты импульсов появляются одновременно на каждом из каналов, но в противофазе.


Нажмём кнопку «Старт» в программе анализатора. С помощью нашей терминалки подключимся к USB-RS485 конвертеру и передадим какие-нибудь данные. По срабатыванию триггера программа начнёт собирать данные, по завершению выведет их на экран.


Программа Saleae Logic позволяет экспортировать сохранённые данные в виде изображений и текстовых данных, сохранять настройки программы, аннотации и декодеры каналов.

Последний пример в данном небольшом обзоре - захваченный кадр данных, переданный по последовательному протоколу SPI. В канале 2 виден сигнал выбора ведомого, в канале 0 - тактовые импульсы, а в канале 1 - собственно данные от ведущего устройства к ведомому.


Выводы

Логический анализатор может быть очень полезен при разработке и настройке всевозможных электронных устройств, при написании программного обеспечения, работающего в связке с железом, при работе с микроконтроллерами, ПЛИС и микропроцессорами, для анализа работы различных устройств и протоколов обмена данными, и для многих других применений. Кроме того, он портативен и не нуждается в отдельном питании.

Скачать инструкцию по работе с программой для логического анализатора Saleae

  • Скачать инструкцию по работе с программой для логического анализатора Saleae с Depositfiles.com
  • Скачать инструкцию по работе с программой для логического анализатора Saleae c File-upload.com
  • Скачать инструкцию по работе с программой для логического анализатора Saleae c Up-4ever.com
  • Скачать инструкцию по работе с программой для логического анализатора Saleae c Hitfile.com