RoboBus
RoboBus - открытый стандарт системной шины, предназначенной для взаимодействия электронных модулей в роботехнике.
Содержание
История
Прототипом шины RoboBus является шина из проекта МиниБот. Не считая небольших оговорок RoboBus в точности повторяет шину этого проекта и отличается только четко прописанными правилами разработки модулей на этой шине, гарантирующими максимальную возможность одновременного использования любых модулей (в разумных пределах, разумеется). Дата появления первой детальной спецификации шины - 12.09.2008.
Основные особенности
- Изначально шина проектируется для схемы с главным МК и множеством подчиненных модулей, хотя в принципе есть I2C Multimaster;
- Использовано основное напряжение логического уровня 3.3В, так как на нём работает большое количество периферии (радиомодули, карты памяти, экранчики от сотовых и т.п.) и многочисленные высокопроизводительные микроконтролеры (серия AVR xmega, AVR32, ARM);
- На разъем выведены I2C(TWI), UART, SPI - все модули с этими интерфейсами могут быть прозрачно подключены к шине почти без доработок;
- Возможно программирование любого модуля через системный разъем (не надо делать на плате 2 разъема - шины и программатора);
- Возможно восстановить МК после направильного выставления FUSE-битов и наличии соотв. программатора (на разъем выведен XTAL1);
- Наиболее вероятным контроллером, который будет использоваться в модулях и под который в некоторой степени оптимизирована шина, считается AVR;
Системный разъем
В качестве системного разъема используется IDC-14.
Нумерация системного разъема указана по шлейфу, а не по контактам разъема!
Правила совместного использования модулей на шине RoboBus
Использование линий питания
- В системе допускается существование всего 1 источника очищенного питания по линии 3.3V, все остальные модули должны потреблять это питание;
- Так же не допускается существование нескольких источников очищенного питания по линии 5V.
- Общий потребляемый по линиям 3.3V и 5V ток не должен превышать 1А в каждом случае (ограничение используемых разъемов).
- Контроль за не превышением допустимого тока потребления по линиям 3.3V и 5V возложен на пользователя модулей (как и в архитектуре персонального компьютера - за требуемой мощностью источника питания следит тот кто собирает компьютер).
Использование интерфейсов SPI\I2C\UART модулями
- При использовании SPI, только один модуль может выступает мастером SPI.
- При использовании UART, только один модуль может передавать данные по линии TXD.
- При использовании UART, только один модуль может передавать данные по линии RXD.
Использование программаторов с RoboBus-модулями
- Программатор напрямую подключаемый к шине RoboBus должен удовлетворять всем её спецификациям. Особенно внимательно стоит отнестись к уровням напряжения. При выдаче на шину сигнала выше 3.6В на любую линию кроме 5V может произойти необратимое разрушение низковольтных микросхем используемых модулей.
- Для использования программаторов которые не работают с 3.3В схемами или питаются не от схемы и выдают на сигнальные линии 5V будет необходимо изготовить адаптер.
Требования по совместимости модулей с RoboBus
Модуль считается совместимым с шиной RoboBus, если он:
- Совместим с системным разъемом;
- Не разрушается при подаче напряжения из допустимых интервалов на соответствующие контакты разъема;
- Сам не подает на контакты разъема напряжения выходящие за рабочие рамки;
- Удовлетворяет требованиям по принципиальной схеме;
- Удовлетворять правилам использования общих портов ввода\вывода;
- Удовлетворяет правилам работы по протоколам обмена;
Термины, используемые в условиях совместимости:
- Должен : соблюдение условия является безусловно обязательным
- Настоятельно рекомендуется : допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
- Рекомендуется : соблюдение условия является не является обязательным, однако его выполнение расширяет возможности шины
Максимально допустимые уровни напряжения
- На контактах питания 3.3V напряжение должно быть не менее -0.3V и не более 3.6V;
- На контактах питания 5V напряжение должно быть не менее -0.3V и не более 5.5V;
- На всех сигнальных разъемах (3-13 контакты) напряжение должно быть не менее -0.3V и не более 3.6V;
Рабочие уровни напряжения
- На контакте питания 3.3V напряжение должно быть в диапазоне 3.0-3.6V;
- На всех сигнальных разъемах (3-13 контакты) напряжение должно быть в диапазоне 0.0-3.6V;
- На контакте питания 5V напряжение должно быть в диапазоне 4.5-5.5V;
Требования к принципиальным схемам модулей
- Если модуль основан на МК типа AVR:
- Сигнал RESET от МК должен быть через джампер выведен на пин 3 системной шины;
- Сигнал XTAL1 от МК рекомендуется через джампер выведести на пин 7 системной шины;
- Сигналы MOSI, MISO, SCK от МК должны быть выведены соответственно на пины 4-5-6 системной шины;
- Общая линия ввода/вывода, используемая как сигнал выбора устройства SPI, должна быть подтянута резистором 3.3 - 4.7 кОм к линии 3.3V, таким образом, что если ни одно устройство на шине не использует эту линию как выход, на ней присутствует уровень логической единицы;
- В модулях, которые могут выступать в качестве мастера I2C, линии SDA и SCL должны быть подтянуты резисторами 1 - 3,3 кОм к линии 3.3V, таким образом, что если ни одно устройство на шине не использует эту линию как выход, на ней присутствует уровень логической единицы.
- Для модулей которые планируются для использования только в качестве I2C-Master настоятельно рекомендуется предусмотреть возможность отключения этих резисторов;
- Для модулей которые планируются для частичного использования как I2C-Slave должна быть возможность отключения этих резисторов;
- Настоятельно рекомендуется сигнальные контакты системного разъема подключать к остальной схеме модуля через резисторы сопротивлением не менее 100 Ом
Требования по использованию общих портов ввода\вывода
- Каждый модуль использующий общие порты ввода/вывода (GP0-2) должен иметь возможность установить джамперами, какие порты системного разъема используются этим модулем;
Требования по соблюдению протоколов обмена
- Модули должны поддерживать как минимум один из штатных протоколов обмена - TWI(I2C), UART или SPI, если модуль не удовлетворяет заявленному протоколу обмена то он считается несовместимым с RoboBus;
- Модули на протоколе SPI должны иметь возможность выбора линии CS из общих портов ввода\вывода, если модуль начинает отвечать на запросы при выключенной своей линии CS он считается неудовлетворяющим стандарту RoboBus;
- Активный уровень сигнала выбора устройства SPI - логический ноль;