RoboBus (English) — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Новая: Категория:RoboBus thumb|200px|right|Логотип шины RoboBus RoboBus - the open standard of the system bus intended for inter...)
 
(Terms, used in compability requirements)
 
(не показана 21 промежуточная версия 2 участников)
Строка 1: Строка 1:
[[Категория:RoboBus]]
+
[[Category:RoboBus]]
 +
[[Category:English pages]]
  
[[Изображение:Robobus.jpg|thumb|200px|right|Логотип шины RoboBus]]
+
[[Image:Robobus.jpg|thumb|200px|right|RoboBus logo]]
  
 
RoboBus - the open standard of the system bus intended for interaction of electronic modules in robotics.
 
RoboBus - the open standard of the system bus intended for interaction of electronic modules in robotics.
Строка 8: Строка 9:
  
 
== History ==
 
== History ==
Прототипом шины RoboBus является шина из проекта [http://www.roboforum.ru/wiki/Категория:МиниБот МиниБот]. Не считая небольших оговорок, RoboBus в точности повторяет шину этого проекта и отличается только четко прописанными правилами разработки модулей на этой шине, гарантирующими максимальную возможность одновременного использования любых модулей (в разумных пределах, разумеется). Дата появления первой детальной спецификации шины - 12.09.2008. Разработчики первой версии шины: EdGull, blindman, =DeaD=, Mazayac.
+
RoboBus prototype is the bus from the [http://www.roboforum.ru/wiki/Категория:МиниБот "MiniBot"]-project.  
  
== Основные особенности ==
+
Excluding few expections, RoboBus repeats the bus of this project and differs only in strictly defined rules of using bus lines, power supply and some module features, guaranteeing the possibility of simultaneous use of any modules (in reasonable limits, certainly).
* Изначально шина проектируется для схемы с главным МК и множеством подчиненных модулей, хотя в принципе главные МК по каждому интерфейсу (SPI/I2C/UART) могут быть разными, а на шине I2C вообще есть режим Multimaster;
 
* Использованы логические уровни LVCMOS (Low Voltage CMOS, 3.0...3.6В), так как с ними работает большое количество периферии (радиомодули, карты памяти, экранчики от сотовых и т.п.) и многочисленные высокопроизводительные микроконтроллеры (серия AVR xmega, AVR32, ARM);
 
* На разъем выведены интерфейсы I2C(TWI), UART, SPI - все модули с этими интерфейсами могут быть прозрачно подключены к шине почти без доработок;
 
* Возможно программирование любого модуля через системный разъем (не надо делать на плате 2 разъема - шины и программатора);
 
* Возможно восстановить МК после неправильного выставления FUSE-битов и наличии соответствующего программатора (на разъем через джампер выведен вывод XTAL1 МК);
 
* Наиболее вероятным контроллером, который будет использоваться в модулях и под который в некоторой степени оптимизирована шина, считается AVR;
 
  
== Системный разъем ==
+
First detailed specification of the bus appeared 12.09.2008. Specificaton developers: EdGull, blindman, =DeaD=, Mazayac.
В качестве системного разъема используется IDC-14 (он же BH-14, IDC-14MS или IDCMH14), либо его угловая модификация IDC-14R (BH-14R, IDC-14MR, IDCMH14RA).
 
  
[[Изображение:RobobusSampe.jpg|thumb|200px|right|Расположение разъема на печатной плате]]
+
== Main features ==
 +
* Originaly the bus is projected for the scheme with main MCU and set of the slave modules though basically main MCU on each interface (SPI/I2C/UART) can be different, and even on I2C interface there is Multimaster-mode, allowing many MCU act as master;
 +
* Logic levels LVCMOS (Low Voltage CMOS, 3.0...3.6V) are used, as compatible with many periphery (radio modules, flash cards, screens from cellular, etc.) and numerous high-efficiency microcontrollers (AVR xmega, AVR32, ARM, etc.);
 +
* Interfaces I2C (TWI), UART, SPI are included on RoboBus, - all modules with these interfaces can be seamless integrated in RoboBus system without any hard workout;
 +
* Programming of any module through a system socket is possible (there is no need to place 2 sockets on PCB - data bus and socket for MCU programming);
 +
* It is possible to restore MCU after wrong setting up of FUSE-bits if special programmator is available (XTAL1 MCU pin is connected through jumper to pin on RoboBus socket);
 +
* The most probable controller which will be used in modules and for which the bus is optimised, it is considered AVR, but it is possible to use any other MCU with bootloader or programmed any other method;
  
[[Изображение:Example.jpg]][[Изображение:Example2.jpg]]
+
== Socket ==
 +
As a system socket it is used IDC-14 (also known as BH-14, IDC-14MS or IDCMH14), or its angular modification IDC-14R (BH-14R, IDC-14MR, IDCMH14RA).
  
'''ВНИМАНИЕ!!!''' Разъем настоятельно рекомендуется располагать на плате ключом (вырезом под выступ на ответной части) в сторону элементов (см. рисунок справа). Это необходимо для того, чтобы в случае установки углового разъема он оказался направленным к краю платы. Также это необходимо для того, чтобы в случае установки прямых разъемов, не приходилось перекручивать шлейф при соединении расположенных друг над другом модулями.
+
[[Image:RobobusSampe.jpg|thumb|200px|right|Socket position on printed-circuit board]]
  
'''ВНИМАНИЕ!!!''' Для нумерации системного разъема используется "шахматный" порядок, т.е. фактически номера контактов разъема совпадают с номерами проводов в соединительном шлейфе.
+
[[Image:Example.jpg]][[Image:Example2.jpg]]
 +
 
 +
'''WARNING!!!''' It is strictly recommended to place a socket on PCB with a key (cut under a ledge on a reciprocal part) towards elements (see drawing on the right). It is necessary that in case of installation of an angular socket it has appeared directed to PCB edge. Also it is necessary that in case of installation of direct (not angular) sockets, it was not necessary to overwind a cable while connecting modules, located one upon another.
 +
 
 +
'''WARNING!!!''' For pin numbering of a system socket the "chess" order is used, i.e. actually numbers of contacts of a socket coincide with numbers of wires in a 14-conductor cable.
  
 
{|class="standard"
 
{|class="standard"
|rowspan=15|[[Изображение:MB_Connector.jpg|Нумерация системного разъема]]
+
|rowspan=15|[[Изображение:MB_Connector.jpg|System socket pin numeration]]
! Номер Pin
+
! Pin #
! Назначение
+
! Name
! Расшифровка
+
! Description
 
|-
 
|-
| 1 || GND || Земля
+
| 1 || GND || Ground
 
|-
 
|-
| 2 || 3.3V || Очищенное питание для всей электроники +3.3V
+
| 2 || 3.3V || +3.3V power supply
 
|-
 
|-
| 3 || RES || Сигнал RESET (Программатор)
+
| 3 || RES || RESET signal (programmer)
 
|-
 
|-
| 4 || MOSI || Сигнал MOSI (Программатор)
+
| 4 || MOSI || MOSI signal (programmer / SPI)
 
|-
 
|-
| 5 || MISO || Сигнал MISO (Программатор)
+
| 5 || MISO || MISO signal (programmer / SPI)
 
|-
 
|-
| 6 || SCK || Сигнал SCK (Программатор)
+
| 6 || SCK || SCK signal (programmer / SPI)
 
|-
 
|-
| 7 || GP2\XTAL1 || Вход\выход общего назначения №2 \ Тактирование МК
+
| 7 || GP2\XTAL1 || General purpose i/o pin #2 \ MCU XTAL1
 
|-
 
|-
| 8 || GP1 || Вход\выход общего назначения №1
+
| 8 || GP1 || General purpose i/o pin #1
 
|-
 
|-
| 9 || GP0 || Вход\выход общего назначения №0
+
| 9 || GP0 || General purpose i/o pin #0
 
|-
 
|-
| 10 || SDA || Шина I2C
+
| 10 || SDA || I2C Bus
 
|-
 
|-
| 11 || SCL || Шина I2C
+
| 11 || SCL || I2C Bus
 
|-
 
|-
| 12 || TxD || Асинхронный выход данных (от главного МК к модулю)
+
| 12 || TxD || UART (from master to slave)
 
|-
 
|-
| 13 || RxD || Асинхронный вход данных (от модуля к главному МК)
+
| 13 || RxD || UART (from slave to master)
 
|-
 
|-
| 14 || 5V || Очищенное опциональное питание +5.0V
+
| 14 || 5V || +5.0V power supply
 
|}
 
|}
  
== Правила совместного использования модулей на шине RoboBus ==
+
== Rules of using modules on RoboBus ==
  
  
=== Использование линий питания ===
+
=== Power supply ===
# В системе допускается существование всего 1 источника очищенного питания по линии 3.3V, все остальные модули должны потреблять это питание;
+
# There should be only one source of the cleared power supply on a +3.3V line, other modules should only consume this power;
# Также не допускается существование нескольких источников очищенного питания по линии 5V.
+
# There should not be more than one power supply module on a +5.0V line;
# Общий ток, потребляемый по линиям 3.3V и 5V, не должен превышать в каждом случае (это ограничение обусловлено используемыми разъемами шины).
+
# The total current consumed on lines 3.3V and 5V, should not exceed in each case (this restriction is caused by used sockets of the bus);
# '''Рекомендуется''' источник питания для системы, использующей RoboBus, проектировать таким образом, чтобы он мог обеспечить ток по линиям 3.3V и 5V не менее 1А .
+
# It is '''recommended''' to use power supply module, which could provide not less 1A current on lines +3.3V and +5.0V;
# Контроль за не превышением допустимого тока потребления по линиям 3.3V и 5V возложен на пользователя модулей (как и в архитектуре персонального компьютера - за требуемой мощностью источника питания следит тот, кто собирает компьютер).
+
# The control for not exceeding of an permited current consumption on lines +3.3V and +5.0V is assigned to the user of modules (as well as in architecture of the personal computer - demanded capacity of the power supply is controlled by the one who assembles the computer).
  
=== Использование интерфейсов SPI\I2C\UART модулями ===
+
=== Using SPI\I2C\UART interfaces ===
# При использовании SPI только один модуль может выступать мастером SPI.
+
# While using SPI only one module can act as SPI-master;
# При использовании UART только один модуль может передавать данные по линии TXD.
+
# While using UART only one module can transmit data on TXD line;
# При использовании UART только один модуль может передавать данные по линии RXD.
+
# While using UART only one module can transmit data on RXD line.
  
=== Использование программаторов с RoboBus-модулями ===
+
=== Using MCU-programmers with RoboBus-compatible modules ===
# Программатор, напрямую подключаемый к шине RoboBus, должен удовлетворять всем её спецификациям. Особенно внимательно стоит отнестись к уровням напряжений. При подаче на любую линию шины (кроме 5V) напряжения выше 3.6В может произойти необратимое разрушение низковольтных микросхем используемых модулей.
+
# MCU programmer, directly connected to RoboBus, should satisfy to all its specifications. Especially attentively in voltage levels. At giving on any line of the bus (except 5V) voltage above 3.6V there can be an irreversible destruction of low-voltage microcircuits of used modules.
# Для использования программаторов, которые не работают с 3.3В схемами или питаются не от схемы и выдают на сигнальные линии 5V, необходимо будет изготовить адаптер.
+
# For use programmators which do not work with 3.3V schemes or get power supply not from the programmed scheme and give out on signal lines 5V, it will be necessary to make the adapter.
  
== Требования по совместимости модулей с RoboBus ==
+
== RoboBus-compability requirements ==
Модуль считается совместимым с шиной RoboBus, если он:
+
The module is considered to be compatible with RoboBus, if:
# Совместим с системным разъемом;
+
# It is compatible to a RoboBus socket;
 
# Не разрушается при подаче напряжения из допустимых интервалов на соответствующие контакты разъема;
 
# Не разрушается при подаче напряжения из допустимых интервалов на соответствующие контакты разъема;
 
# Сам не подает на контакты разъема напряжения выходящие за рабочие рамки;
 
# Сам не подает на контакты разъема напряжения выходящие за рабочие рамки;
# Удовлетворяет требованиям по принципиальной схеме;
+
# It meets requirements on the electrical circuit;
# Удовлетворять правилам использования общих портов ввода\вывода;
+
# It meets requirements on the general i/o pins using;
# Удовлетворяет правилам работы по протоколам обмена;
+
# It meets requirements on the interfaces used (UART/SPI/I2C);
 
 
=== Термины, используемые в условиях совместимости ===
 
; '''Должен''' : Соблюдение условия является безусловно обязательным
 
; '''Настоятельно рекомендуется''' : Допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
 
; '''Рекомендуется''' : Соблюдение условия не является обязательным, однако его выполнение расширяет возможности шины
 
; '''Джампер''' : Устройство, позволяющее оперативно соединять между собой 2 электрические цепи. Конструктивно может быть выполнен в виде разъема или штырьков со съемной перемычкой, пары площадок на печатной плате и т. п.
 
  
=== Максимально допустимые уровни напряжения ===
+
=== Terms, used in compability requirements ===
# На контактах питания 3.3V напряжение '''должно''' быть не менее -0.3V и не более 3.6V;
+
; '''Must''' : Соблюдение условия является безусловно обязательным
# На контактах питания 5V напряжение '''должно''' быть не менее -0.3V и не более 5.5V;
+
; '''Strictly recommended''' : Допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
# На всех сигнальных разъемах (3-13 контакты) напряжение '''должно''' быть не менее -0.3V и не более 3.6V;
+
; '''Recommended''' : Соблюдение условия не является обязательным, однако его выполнение расширяет возможности шины
 +
; '''Jumper''' : Device, allowing fast connection or disconnection of 2 electrical nets. For example: 2 nearly placed solder pads on PCB or 2 pins with detachable contactor.
  
 +
=== Absolute maximum ratings ===
 +
# Voltage on +3.3V line must be in range Gnd-0.3V...Gnd+3.6V;
 +
# Voltage on +5.0V line must be in range Gnd-0.3V...Gnd+5.5V;
 +
# Voltage on all signal lines (3-13 pins) must be in range Gnd-0.3V...Gnd+3.6V;
  
=== Рабочие уровни напряжения ===
+
=== Electrical Characteristics ===
 
# На контакте питания 3.3V напряжение '''должно''' быть в диапазоне 3.0-3.6V;
 
# На контакте питания 3.3V напряжение '''должно''' быть в диапазоне 3.0-3.6V;
 
# На всех сигнальных разъемах (3-13 контакты) напряжение '''должно''' быть в диапазоне 0.0-3.6V;
 
# На всех сигнальных разъемах (3-13 контакты) напряжение '''должно''' быть в диапазоне 0.0-3.6V;

Текущая версия на 09:21, 16 мая 2009


RoboBus logo

RoboBus - the open standard of the system bus intended for interaction of electronic modules in robotics.

You can find the list of robotics components compatible to this bus, on page RoboBus-compatible devices. Also available for downloading Eagle library with RoboBus socket and RoboBus logo for placing on printed-circuit boards.

History

RoboBus prototype is the bus from the "MiniBot"-project.

Excluding few expections, RoboBus repeats the bus of this project and differs only in strictly defined rules of using bus lines, power supply and some module features, guaranteeing the possibility of simultaneous use of any modules (in reasonable limits, certainly).

First detailed specification of the bus appeared 12.09.2008. Specificaton developers: EdGull, blindman, =DeaD=, Mazayac.

Main features

  • Originaly the bus is projected for the scheme with main MCU and set of the slave modules though basically main MCU on each interface (SPI/I2C/UART) can be different, and even on I2C interface there is Multimaster-mode, allowing many MCU act as master;
  • Logic levels LVCMOS (Low Voltage CMOS, 3.0...3.6V) are used, as compatible with many periphery (radio modules, flash cards, screens from cellular, etc.) and numerous high-efficiency microcontrollers (AVR xmega, AVR32, ARM, etc.);
  • Interfaces I2C (TWI), UART, SPI are included on RoboBus, - all modules with these interfaces can be seamless integrated in RoboBus system without any hard workout;
  • Programming of any module through a system socket is possible (there is no need to place 2 sockets on PCB - data bus and socket for MCU programming);
  • It is possible to restore MCU after wrong setting up of FUSE-bits if special programmator is available (XTAL1 MCU pin is connected through jumper to pin on RoboBus socket);
  • The most probable controller which will be used in modules and for which the bus is optimised, it is considered AVR, but it is possible to use any other MCU with bootloader or programmed any other method;

Socket

As a system socket it is used IDC-14 (also known as BH-14, IDC-14MS or IDCMH14), or its angular modification IDC-14R (BH-14R, IDC-14MR, IDCMH14RA).

Socket position on printed-circuit board

Example.jpgExample2.jpg

WARNING!!! It is strictly recommended to place a socket on PCB with a key (cut under a ledge on a reciprocal part) towards elements (see drawing on the right). It is necessary that in case of installation of an angular socket it has appeared directed to PCB edge. Also it is necessary that in case of installation of direct (not angular) sockets, it was not necessary to overwind a cable while connecting modules, located one upon another.

WARNING!!! For pin numbering of a system socket the "chess" order is used, i.e. actually numbers of contacts of a socket coincide with numbers of wires in a 14-conductor cable.

System socket pin numeration Pin # Name Description
1 GND Ground
2 3.3V +3.3V power supply
3 RES RESET signal (programmer)
4 MOSI MOSI signal (programmer / SPI)
5 MISO MISO signal (programmer / SPI)
6 SCK SCK signal (programmer / SPI)
7 GP2\XTAL1 General purpose i/o pin #2 \ MCU XTAL1
8 GP1 General purpose i/o pin #1
9 GP0 General purpose i/o pin #0
10 SDA I2C Bus
11 SCL I2C Bus
12 TxD UART (from master to slave)
13 RxD UART (from slave to master)
14 5V +5.0V power supply

Rules of using modules on RoboBus

Power supply

  1. There should be only one source of the cleared power supply on a +3.3V line, other modules should only consume this power;
  2. There should not be more than one power supply module on a +5.0V line;
  3. The total current consumed on lines 3.3V and 5V, should not exceed 1А in each case (this restriction is caused by used sockets of the bus);
  4. It is recommended to use power supply module, which could provide not less 1A current on lines +3.3V and +5.0V;
  5. The control for not exceeding of an permited current consumption on lines +3.3V and +5.0V is assigned to the user of modules (as well as in architecture of the personal computer - demanded capacity of the power supply is controlled by the one who assembles the computer).

Using SPI\I2C\UART interfaces

  1. While using SPI only one module can act as SPI-master;
  2. While using UART only one module can transmit data on TXD line;
  3. While using UART only one module can transmit data on RXD line.

Using MCU-programmers with RoboBus-compatible modules

  1. MCU programmer, directly connected to RoboBus, should satisfy to all its specifications. Especially attentively in voltage levels. At giving on any line of the bus (except 5V) voltage above 3.6V there can be an irreversible destruction of low-voltage microcircuits of used modules.
  2. For use programmators which do not work with 3.3V schemes or get power supply not from the programmed scheme and give out on signal lines 5V, it will be necessary to make the adapter.

RoboBus-compability requirements

The module is considered to be compatible with RoboBus, if:

  1. It is compatible to a RoboBus socket;
  2. Не разрушается при подаче напряжения из допустимых интервалов на соответствующие контакты разъема;
  3. Сам не подает на контакты разъема напряжения выходящие за рабочие рамки;
  4. It meets requirements on the electrical circuit;
  5. It meets requirements on the general i/o pins using;
  6. It meets requirements on the interfaces used (UART/SPI/I2C);

Terms, used in compability requirements

Must 
Соблюдение условия является безусловно обязательным
Strictly recommended 
Допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
Recommended 
Соблюдение условия не является обязательным, однако его выполнение расширяет возможности шины
Jumper 
Device, allowing fast connection or disconnection of 2 electrical nets. For example: 2 nearly placed solder pads on PCB or 2 pins with detachable contactor.

Absolute maximum ratings

  1. Voltage on +3.3V line must be in range Gnd-0.3V...Gnd+3.6V;
  2. Voltage on +5.0V line must be in range Gnd-0.3V...Gnd+5.5V;
  3. Voltage on all signal lines (3-13 pins) must be in range Gnd-0.3V...Gnd+3.6V;

Electrical Characteristics

  1. На контакте питания 3.3V напряжение должно быть в диапазоне 3.0-3.6V;
  2. На всех сигнальных разъемах (3-13 контакты) напряжение должно быть в диапазоне 0.0-3.6V;
  3. На контакте питания 5V напряжение должно быть в диапазоне 4.5-5.5V;
  4. Логические уровни на шине должны соответствовать следующим значениям (Vcc - напряжение на контакте питания 3.3V.):
    1. Vih(входное напряжнение высокого уровня)= от 0.6*Vcc до (Vcc+0.5) вольт;
    2. Vil(входное напряжнение низкого уровня)= от 0 до 0.3*Vcc вольт;
    3. Voh(выходное напряжнение высокого уровня)= от (Vcc-0.8) до Vcc вольт;
    4. Vol(выходное напряжнение низкого уровня)= от 0 до 0.5 вольт;

Требования к принципиальным схемам модулей

  1. Если модуль основан на МК типа AVR:
    1. Сигнал RESET от МК настоятельно рекомендуется подключать к пину 3 системной шины;
    2. Сигнал XTAL1 от МК рекомендуется через джампер вывести на пин 7 системной шины;
    3. Настоятельно рекомендуется проектировать модуль таким образом, чтобы выставлением джампера можно было заблокировать переход МК модуля в режим программирования при поступлении на вход RESET логического нуля. При этом МК должен находиться в отключенном состоянии (на его вход RESET должен подаваться низкий уровень).
    4. Если предыдущее требование не выполняется, настоятельно рекомендуется предусмотреть возможность отключения вывода RESET МК от системной шины с помощью джампера.
    5. Сигналы MOSI, MISO, SCK от МК должны быть выведены соответственно на пины 4-5-6 системной шины;
  2. Общая линия ввода/вывода, используемая как сигнал выбора устройства SPI, должна быть подтянута резистором 3.3 - 4.7 кОм к линии 3.3V. Таким образом, если ни одно устройство на шине не использует эту линию как выход, на ней присутствует уровень логической единицы;
  3. В модулях, которые могут выступать в качестве мастера I2C, линии SDA и SCL должны быть подтянуты резисторами 1 - 3,3 кОм к линии 3.3V. Таким образом, если ни одно устройство на шине не использует эту линию как выход, на ней присутствует уровень логической единицы.
    1. Для модулей, которые планируются для использования только в качестве I2C-Master, настоятельно рекомендуется предусмотреть возможность отключения этих резисторов;
    2. Для модулей, которые планируются для частичного использования как I2C-Slave должна быть возможность отключения этих резисторов;
  4. Настоятельно рекомендуется сигнальные контакты системного разъема подключать к остальной схеме модуля через резисторы сопротивлением 75...100 Ом;
  5. Настоятельно рекомендуется питание модулей от линии 3.3V осуществлять через LC фильтр.

Требования по использованию общих портов ввода\вывода

  1. Каждый модуль, использующий общие порты ввода/вывода (GP0-2), должен иметь возможность установить джамперами, какие порты системного разъема используются этим модулем;

Требования по соблюдению протоколов обмена

  1. Модули должны поддерживать как минимум один из штатных протоколов обмена - TWI(I2C), UART или SPI. Если модуль не удовлетворяет заявленному протоколу обмена, то он считается несовместимым с RoboBus;
  2. Модули, использующие протокол SPI, должны иметь возможность выбора линии CS из общих портов ввода\вывода. Если модуль начинает отвечать на запросы при неактивном состоянии выделенной ему линии CS, то он считается неудовлетворяющим стандарту RoboBus;
  3. Активный уровень сигнала выбора устройства SPI - логический ноль;