RSS
people

Meine Werkzeuge: Logic Analyzer V. 2.0

И так, продолжаем разговор.

А тему сегодняшнего разговора вы можете прочитать выше.

Делал я как-то одну железку, которая должна общаться посредством SPI с внешним миром. А потестировать ее было на тот момент не начем. Ну я не долго думал и малость усовершенствовал свой Логический анализатор и добавил к нему новую фичу.

И эта новая фича называется  SPI логгер.

Logic Analyzer Screen 1

Logic Analyzer SPI Logger Window

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

Если приглядеться к главному окну, то можно заметить появившиеся вкладки "Logic Analyzer" и "SPI Logger".

В первой вкладке "Logic Analyzer" все осталось по старому, поэтому я порекомендую вам прочитать эту статью, если есть интерес именно к этой части, а сами мы займемся разглядыванием второй вкладки.

И так, первое, что мы видим — куча всяческих настроек. Ну сами понимаете, SPI - шина не такая уж и простая, как кажется на первый взгляд. Состоит она из целых 4х сигнальных проводов плюс земля:

  • CLK — сигнал клок, по которому синхронизируется вся передача. Генерируется "мастером" на шине.
  • MISO — Master In Slave Output — сигнал данных от «слэйва» к "мастеру".
  • MOSI — Master Output Slave Input — сигнал данных от "мастера" к "слейву".
  • SS — Slave Select — еще его называют Chip Select. Сигнал выбора "слейва", с которым общаться будем, если на шине несколько "слэйв" — устройств.

Ну так вот. В программе нужно выбрать следующие параметры

  • Роль нашего логгера на шине — "слэйв" или "мастер" в группе "Peripheral Mode".
  • Полярность клока. Точнее того уровня, на смене в который будет происходить считывание линий данных. Логично, что в цифровых системах на одном проводе может быть только два состояния — Low и High. Т.е. если выбрана полярность — Active Low, то считывание линий данных будет происходить в момент смены сигнала с High в Low.
  • Фаза клока. Тут мы определяем, на каком фронте клока  мы будем считывать данные — на первом или на втором.
  • Режим передачи битов в байте - либо начиная с MSB и заканчивая LSB, либо наоборот. MSB Most Significant Bit — наиболее значимый бит, номер 7. LSB — Least Significan Bit — наименее значимый бит, номер 0.
  • Далее, если наш логгер выступает "мастером" на шине, то он должен генерить клок. Ему надо сказать, с какой частотой это делать. Тут я малость поленился, и указал частоту так, как в настройках самого контроллера указывается — а именно предоставил возможность выбрать делители системной частоты микроконтроллера. Т.е., чтобы получить фактическую частоту, надо поделить 16000000 герц на тот делитель, который выбран в списке.
  • Число байт, которые мы будем ожидать от микроконтроллера в одной посылке, и столько же слать ему.

И так — все параметры установили — теперь нужно настроить железную часть. Это делается нажатием кнопки — "Set SPI Parameters". Само собой — порт коммуникации должен быть открыт (кнопочка в тулбаре должна гореть светло зеленым цветом).

Да. Надо заметить, что если выбран режим "мастер", то пины на логгере будут установленны следующим образом:

  • CLK — Output
  • MOSI — Output
  • MISO — Input
  • SS — Output

А если выбран режим "слэйв", то вот так:

  • CLK — Input
  • MOSI — Input
  • MISO -Output
  • SS — Input

Так что это надо учитывать при подключении логгера к вашей схеме, чтобы случаем чего не пожечь. Хотя если присоединить к этой железке еще один AVR контроллер, то от неправильной конфигурации ничего не должно случится с портами — мои оба контроллера, логгер и испытуемый, пока живы.

Так же надо учесть тот момент, что в режиме "слэйв" пин SS действует так, как ему и положено действовать. Т.е. данные будут приниматься только тогда, когда этот пин кто нибудь посадит в 0. Иначе ничего не примется.

И так — логгер настроен. Теперь в окошке "Data to Transfer" вводим данные, которые нам надо послать. Это может быть как текст, так и макросы, определяющие шеснадтеричные значения байта, например - $AB$bc$0d будет означать значения 0xAB 0xBC 0x0D. Если же надо послать символ доллара — то надо его набрать два раза: $$. Макрос может содержать только один байт. Т.е. макрос $ABBC будет переделан в три байта: 0xAB 0×42 0×43!

И жмем "Transfer"!

В зависимости от выбранного режима логгера — "мастер" или "слэйв", в окошке "Received Data" появятся данные либо сразу, либо когда на логгер прийдет клок от "мастера".

Для повтора посылки надо снова нажать кнопку "Transfer", или поставить галку "Continuously send" и нажать "Transfer".

В режиме "мастер", при нажатии "Transfer", данные шлются сразу же, так как клок генерится нашим логгером.

В режиме "слэйв", при нажатии "Transfer", данные копируются во внутренний буфер логгера и он переходит в режим ожидания клока от "мастера". Как только клок пришел — данные посылаются, новые данные считываются и шлются в программу GUI и, соответственно, показываются в окошке "Received Data".

Если в режиме "слэйв" не стоит галка  "Continuously send", то после того, как наши данные послались, внутренний счетчик байтов остановится и, если клок все еще идет, на шину будет слаться всякий мусор. А галочка "Continuously send" переустанавливает внутренний счетчик на начало буфера и данные снова уходят.

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

Так же есть еще две галочки — "RX as Hex" и "Show received data".

Ну последняя, я думаю, вы догадались, включает или выключает показ принятых данных в окошке "Received Data".

А первая устанавливает режим либо простого текста, либо принятые данные будут конвертироваться в HEX представления.

Остались две кнопки — "Clear TX" и "Clear RX". Ну тут ничего особо сложного нет — первая очищает окно "Data to Transfer", а вторая, соответственно, — окно "Received Data".

Собственно — это все, что можно сказать о новом обновлении.

Ах да. Прошивка логгера тоже изменена, и железку надо перепрошить, чтобы она заработала как надо.

Так же я все же подправил схемку, добавил пару недостающих проводов для SPI, и все таки изменил номинал кварца на правильный:

Один комментарий к “Meine Werkzeuge: Logic Analyzer V. 2.0”

  1. 0×21 | Fun Electronic пишет:

    [...] Мои инструменты: Logic Analyzer V. 2.0 Календарь [...]

Оставить комментарий или два

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