И так, продолжаем разговор.
А тему сегодняшнего разговора вы можете прочитать выше.
Делал я как-то одну железку, которая должна общаться посредством SPI с внешним миром. А потестировать ее было на тот момент не начем. Ну я не долго думал и малость усовершенствовал свой Логический анализатор и добавил к нему новую фичу.
И эта новая фича называется SPI логгер.
В самой программе изменился немного интерфейс, но старые функции остались на месте. А так же добавилась новая.
Если приглядеться к главному окну, то можно заметить появившиеся вкладки "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, и все таки изменил номинал кварца на правильный:
- Программа Логический Анализатор. Версия 2.0 — LogicAnalyzer_V_2_0;
- Некоторые библиотеки от Borland - bcblibs.rar
- Прошивка микроконтроллера - AVRSimpleLogicAnalyser_v_2_0
- Схема прибора - LogicAnalyzerSchematic
Один комментарий к “Мои инструменты: Logic Analyzer V. 2.0”
Оставить комментарий или два
Пожалуйста, зарегистрируйтесь для комментирования.






5th February 2010 в 16:43
[...] Мои инструменты: Logic Analyzer V. 2.0 Календарь [...]