RoboBus
RoboBus - открытый стандарт системной шины, предназначенной для взаимодействия электронных модулей в роботехнике.
Содержание
История
Прототипом шины RoboBus является шина из проекта МиниБот. Не считая небольших оговорок, RoboBus в точности повторяет шину этого проекта и отличается только четко прописанными правилами разработки модулей на этой шине, гарантирующими максимальную возможность одновременного использования любых модулей (в разумных пределах, разумеется). Дата появления первой детальной спецификации шины - 12.09.2008. Разработчики первой версии шины: EdGull, blindman, =DeaD=.
Основные особенности
- Изначально шина проектируется для схемы с главным МК и множеством подчиненных модулей, хотя в принципе главные МК по каждому интерфейсу (SPI/I2C/UART) могут быть разными, а на шине 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А в каждом случае (это ограничение обусловлено используемыми разъемами шины).
- Рекомендуется источник питания для системы, использующей RoboBus, проектировать таким образом, чтобы он мог обеспечить ток по линиям 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, если он:
- Совместим с системным разъемом;
- Не разрушается при подаче напряжения из допустимых интервалов на соответствующие контакты разъема;
- Сам не подает на контакты разъема напряжения выходящие за рабочие рамки;
- Удовлетворяет требованиям по принципиальной схеме;
- Удовлетворять правилам использования общих портов ввода\вывода;
- Удовлетворяет правилам работы по протоколам обмена;
Термины, используемые в условиях совместимости
- Должен
- Соблюдение условия является безусловно обязательным
- Настоятельно рекомендуется
- Допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
- Рекомендуется
- Соблюдение условия не является обязательным, однако его выполнение расширяет возможности шины
- Джампер
- Устройство, позволяющее оперативно соединять между собой 2 электрические цепи. Конструктивно может быть выполнен в виде разъема со съемной перемычкой, пары площадок на печатной плате и т. п.
Максимально допустимые уровни напряжения
- На контактах питания 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 системной шины;
- Если модуль может выступать мастером SPI, настоятельно рекомендуется предусмотреть возможность подключения сигнала RESET от МК к земле через джампер.
- Сигналы 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 Ом
- Настоятельно рекомендуется питание модулей от линии 3.3V осуществлять через LC фильтр.
Требования по использованию общих портов ввода\вывода
- Каждый модуль, использующий общие порты ввода/вывода (GP0-2), должен иметь возможность установить джамперами, какие порты системного разъема используются этим модулем;
Требования по соблюдению протоколов обмена
- Модули должны поддерживать как минимум один из штатных протоколов обмена - TWI(I2C), UART или SPI, если модуль не удовлетворяет заявленному протоколу обмена то он считается несовместимым с RoboBus;
- Модули на протоколе SPI должны иметь возможность выбора линии CS из общих портов ввода\вывода, если модуль начинает отвечать на запросы при выключенной своей линии CS он считается неудовлетворяющим стандарту RoboBus;
- Активный уровень сигнала выбора устройства SPI - логический ноль;