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

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Рабочие уровни напряжения)
 
(не показаны 33 промежуточные версии 5 участников)
Строка 1: Строка 1:
[[Категория:МиниБот]]
+
[[Категория:RoboBus]]
 +
 
 +
[[Категория:Open Robotics]]
  
 
[[Изображение:Robobus.jpg|thumb|200px|right|Логотип шины RoboBus]]
 
[[Изображение:Robobus.jpg|thumb|200px|right|Логотип шины RoboBus]]
  
 
RoboBus - открытый стандарт системной шины, предназначенной для взаимодействия электронных модулей в роботехнике.
 
RoboBus - открытый стандарт системной шины, предназначенной для взаимодействия электронных модулей в роботехнике.
 +
 +
Вы можете найти список уже готовых компонентов, совместимых с этой шиной, на странице [[RoboBus-совместимые устройства]]. Кроме того доступна для скачивания [http://www.roboforum.ru/download/file.php?id=6179 библиотека Eagle с разъемом RoboBus и логотипом шины для размещения на печатных платах].
  
 
== История ==
 
== История ==
Прототипом шины RoboBus является шина из проекта [http://www.roboforum.ru/wiki/Категория:МиниБот МиниБот]. Не считая небольших оговорок, RoboBus в точности повторяет шину этого проекта и отличается только четко прописанными правилами разработки модулей на этой шине, гарантирующими максимальную возможность одновременного использования любых модулей (в разумных пределах, разумеется). Дата появления первой детальной спецификации шины - 12.09.2008. Разработчики первой версии шины: EdGull, blindman, =DeaD=.
+
Прототипом шины RoboBus является шина из проекта [http://www.roboforum.ru/wiki/Категория:МиниБот МиниБот]. Не считая небольших оговорок, RoboBus в точности повторяет шину этого проекта и отличается только четко прописанными правилами разработки модулей на этой шине, гарантирующими максимальную возможность одновременного использования любых модулей (в разумных пределах, разумеется). Дата появления первой детальной спецификации шины - 12.09.2008. Разработчики первой версии шины: EdGull, blindman, =DeaD=, Mazayac.
  
 
== Основные особенности ==
 
== Основные особенности ==
 
* Изначально шина проектируется для схемы с главным МК и множеством подчиненных модулей, хотя в принципе главные МК по каждому интерфейсу (SPI/I2C/UART) могут быть разными, а на шине I2C вообще есть режим Multimaster;
 
* Изначально шина проектируется для схемы с главным МК и множеством подчиненных модулей, хотя в принципе главные МК по каждому интерфейсу (SPI/I2C/UART) могут быть разными, а на шине I2C вообще есть режим Multimaster;
* Использовано основное напряжение логического уровня 3., так как на нём работает большое количество периферии (радиомодули, карты памяти, экранчики от сотовых и т.п.) и многочисленные высокопроизводительные микроконтролеры (серия AVR xmega, AVR32, ARM);
+
* Использованы логические уровни LVCMOS (Low Voltage CMOS, 3.0...3.6В), так как с ними работает большое количество периферии (радиомодули, карты памяти, экранчики от сотовых и т.п.) и многочисленные высокопроизводительные микроконтроллеры (серия AVR xmega, AVR32, ARM);
* На разъем выведены I2C(TWI), UART, SPI - все модули с этими интерфейсами могут быть прозрачно подключены к шине почти без доработок;
+
* На разъем выведены интерфейсы I2C(TWI), UART, SPI - все модули с этими интерфейсами могут быть прозрачно подключены к шине почти без доработок;
 
* Возможно программирование любого модуля через системный разъем (не надо делать на плате 2 разъема - шины и программатора);
 
* Возможно программирование любого модуля через системный разъем (не надо делать на плате 2 разъема - шины и программатора);
* Возможно восстановить МК после неправильного выставления FUSE-битов и наличии соответствующего программатора (на разъем выведен XTAL1);
+
* Возможно восстановить МК после неправильного выставления FUSE-битов и наличии соответствующего программатора (на разъем через джампер выведен вывод XTAL1 МК);
 
* Наиболее вероятным контроллером, который будет использоваться в модулях и под который в некоторой степени оптимизирована шина, считается AVR;
 
* Наиболее вероятным контроллером, который будет использоваться в модулях и под который в некоторой степени оптимизирована шина, считается AVR;
  
 
== Системный разъем ==
 
== Системный разъем ==
В качестве системного разъема используется IDC-14.
+
В качестве системного разъема используется IDC-14 (он же BH-14, IDC-14MS или IDCMH14), либо его угловая модификация IDC-14R (BH-14R, IDC-14MR, IDCMH14RA).
 +
 
 +
[[Изображение:RobobusSampe.jpg|thumb|200px|right|Расположение разъема на печатной плате]]
 +
 
 +
[[Изображение:Example.jpg]][[Изображение:Example2.jpg]]
 +
 
 +
'''ВНИМАНИЕ!!!''' Разъем настоятельно рекомендуется располагать на плате ключом (вырезом под выступ на ответной части) в сторону элементов (см. рисунок справа). Это необходимо для того, чтобы в случае установки углового разъема он оказался направленным к краю платы. Также это необходимо для того, чтобы в случае установки прямых разъемов, не приходилось перекручивать шлейф при соединении расположенных друг над другом модулями.
 +
 
 +
'''ВНИМАНИЕ!!!''' Для нумерации системного разъема используется "шахматный" порядок, т.е. фактически номера контактов разъема совпадают с номерами проводов в соединительном шлейфе.
  
Нумерация системного разъема указана по шлейфу, а не по контактам разъема!
 
 
{|class="standard"
 
{|class="standard"
 
|rowspan=15|[[Изображение:MB_Connector.jpg|Нумерация системного разъема]]
 
|rowspan=15|[[Изображение:MB_Connector.jpg|Нумерация системного разъема]]
Строка 38: Строка 49:
 
| 6 || SCK || Сигнал SCK (Программатор)
 
| 6 || SCK || Сигнал SCK (Программатор)
 
|-
 
|-
| 7 || GP2\XTAL1 || Вход\выход общего назначения №2 \ Тактирование МК
+
| 7 || GP2\XTAL1 || Вход\выход общего назначения №2 (опционально - Тактирование МК)
 
|-
 
|-
 
| 8 || GP1 || Вход\выход общего назначения №1
 
| 8 || GP1 || Вход\выход общего назначения №1
Строка 54: Строка 65:
 
| 14 || 5V || Очищенное опциональное питание +5.0V
 
| 14 || 5V || Очищенное опциональное питание +5.0V
 
|}
 
|}
 
  
 
== Правила совместного использования модулей на шине RoboBus ==
 
== Правила совместного использования модулей на шине RoboBus ==
Строка 72: Строка 82:
  
 
=== Использование программаторов с RoboBus-модулями ===
 
=== Использование программаторов с RoboBus-модулями ===
# Программатор, напрямую подключаемый к шине RoboBus, должен удовлетворять всем её спецификациям. Особенно внимательно стоит отнестись к уровням напряжений. При выдаче на шину сигнала выше 3.6В на любую линию, кроме 5V, может произойти необратимое разрушение низковольтных микросхем используемых модулей.
+
# Программатор, напрямую подключаемый к шине RoboBus, должен удовлетворять всем её спецификациям. Особенно внимательно стоит отнестись к уровням напряжений. При подаче на любую линию шины (кроме 5V) напряжения выше 3.6В может произойти необратимое разрушение низковольтных микросхем используемых модулей.
# Для использования программаторов, которые не работают с 3.3В схемами или питаются не от схемы и выдают на сигнальные линии 5V, будет необходимо изготовить адаптер.
+
# Для использования программаторов, которые не работают с 3.3В схемами или питаются не от схемы и выдают на сигнальные линии 5V, необходимо будет изготовить адаптер.
  
 
== Требования по совместимости модулей с RoboBus ==
 
== Требования по совместимости модулей с RoboBus ==
Строка 88: Строка 98:
 
; '''Настоятельно рекомендуется''' : Допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
 
; '''Настоятельно рекомендуется''' : Допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
 
; '''Рекомендуется''' : Соблюдение условия не является обязательным, однако его выполнение расширяет возможности шины
 
; '''Рекомендуется''' : Соблюдение условия не является обязательным, однако его выполнение расширяет возможности шины
; '''Джампер''' : Устройство, позволяющее оперативно соединять между собой 2 электрические цепи. Конструктивно может быть выполнен в виде разъема со съемной перемычкой, пары площадок на печатной плате и т. п.
+
; '''Джампер''' : Устройство, позволяющее оперативно соединять между собой 2 электрические цепи. Конструктивно может быть выполнен в виде разъема или штырьков со съемной перемычкой, пары площадок на печатной плате и т. п.
  
 
=== Максимально допустимые уровни напряжения ===
 
=== Максимально допустимые уровни напряжения ===
Строка 101: Строка 111:
 
# На контакте питания 5V напряжение '''должно''' быть в диапазоне 4.5-5.5V;
 
# На контакте питания 5V напряжение '''должно''' быть в диапазоне 4.5-5.5V;
 
# Логические уровни на шине '''должны''' соответствовать следующим значениям (Vcc - напряжение на контакте питания 3.3V.):
 
# Логические уровни на шине '''должны''' соответствовать следующим значениям (Vcc - напряжение на контакте питания 3.3V.):
##'''Vih'''(входное напряжнение высокого уровня)= от 0.6Vcc до (Vcc+0.5) вольт;
+
##'''Vih'''(входное напряжнение высокого уровня)= от 0.6*Vcc до (Vcc+0.5) вольт;
 
##'''Vil'''(входное напряжнение низкого уровня)= от 0 до 0.3*Vcc вольт;
 
##'''Vil'''(входное напряжнение низкого уровня)= от 0 до 0.3*Vcc вольт;
 
##'''Voh'''(выходное напряжнение высокого уровня)= от (Vcc-0.8) до Vcc вольт;
 
##'''Voh'''(выходное напряжнение высокого уровня)= от (Vcc-0.8) до Vcc вольт;
Строка 108: Строка 118:
 
=== Требования к принципиальным схемам модулей ===
 
=== Требования к принципиальным схемам модулей ===
 
# Если модуль основан на МК типа AVR:
 
# Если модуль основан на МК типа AVR:
## Сигнал RESET от МК '''должен''' быть через джампер выведен на пин 3 системной шины;
+
## Сигнал RESET от МК '''настоятельно рекомендуется''' подключать к пину 3 системной шины;
 
## Сигнал XTAL1 от МК '''рекомендуется''' через джампер вывести на пин 7 системной шины;
 
## Сигнал XTAL1 от МК '''рекомендуется''' через джампер вывести на пин 7 системной шины;
## Если модуль может выступать мастером SPI, '''настоятельно рекомендуется''' предусмотреть возможность подключения сигнала RESET от МК к земле через джампер.
+
## '''Настоятельно рекомендуется''' проектировать модуль таким образом, чтобы выставлением джампера можно было заблокировать переход МК модуля в режим программирования при поступлении на вход RESET логического нуля. При этом МК должен находиться в отключенном состоянии (на его вход RESET должен подаваться низкий уровень).
 +
## Если предыдущее требование не выполняется, '''настоятельно рекомендуется''' предусмотреть возможность отключения вывода RESET МК от системной шины с помощью джампера.
 
## Сигналы MOSI, MISO, SCK от МК '''должны''' быть выведены соответственно на пины 4-5-6 системной шины;
 
## Сигналы MOSI, MISO, SCK от МК '''должны''' быть выведены соответственно на пины 4-5-6 системной шины;
 
# Общая линия ввода/вывода, используемая как сигнал выбора устройства SPI, '''должна''' быть подтянута резистором 3.3 - 4.7 кОм к линии 3.3V. Таким образом, если ни одно устройство на шине не использует эту линию как выход, на ней присутствует уровень логической единицы;
 
# Общая линия ввода/вывода, используемая как сигнал выбора устройства SPI, '''должна''' быть подтянута резистором 3.3 - 4.7 кОм к линии 3.3V. Таким образом, если ни одно устройство на шине не использует эту линию как выход, на ней присутствует уровень логической единицы;
Строка 116: Строка 127:
 
## Для модулей, которые планируются для использования только в качестве I2C-Master, '''настоятельно рекомендуется''' предусмотреть возможность отключения этих резисторов;
 
## Для модулей, которые планируются для использования только в качестве I2C-Master, '''настоятельно рекомендуется''' предусмотреть возможность отключения этих резисторов;
 
## Для модулей, которые планируются для частичного использования как I2C-Slave '''должна''' быть возможность отключения этих резисторов;
 
## Для модулей, которые планируются для частичного использования как I2C-Slave '''должна''' быть возможность отключения этих резисторов;
# '''Настоятельно рекомендуется''' сигнальные контакты системного разъема подключать к остальной схеме модуля через резисторы сопротивлением не менее 100 Ом
+
# '''Настоятельно рекомендуется''' сигнальные контакты системного разъема подключать к остальной схеме модуля через резисторы сопротивлением 75...100 Ом;
 
# '''Настоятельно рекомендуется''' питание модулей от линии 3.3V осуществлять через LC фильтр.
 
# '''Настоятельно рекомендуется''' питание модулей от линии 3.3V осуществлять через LC фильтр.
  

Текущая версия на 13:18, 26 января 2009


Логотип шины RoboBus

RoboBus - открытый стандарт системной шины, предназначенной для взаимодействия электронных модулей в роботехнике.

Вы можете найти список уже готовых компонентов, совместимых с этой шиной, на странице RoboBus-совместимые устройства. Кроме того доступна для скачивания библиотека Eagle с разъемом RoboBus и логотипом шины для размещения на печатных платах.

История

Прототипом шины RoboBus является шина из проекта МиниБот. Не считая небольших оговорок, RoboBus в точности повторяет шину этого проекта и отличается только четко прописанными правилами разработки модулей на этой шине, гарантирующими максимальную возможность одновременного использования любых модулей (в разумных пределах, разумеется). Дата появления первой детальной спецификации шины - 12.09.2008. Разработчики первой версии шины: EdGull, blindman, =DeaD=, Mazayac.

Основные особенности

  • Изначально шина проектируется для схемы с главным МК и множеством подчиненных модулей, хотя в принципе главные МК по каждому интерфейсу (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;

Системный разъем

В качестве системного разъема используется IDC-14 (он же BH-14, IDC-14MS или IDCMH14), либо его угловая модификация IDC-14R (BH-14R, IDC-14MR, IDCMH14RA).

Расположение разъема на печатной плате

Example.jpgExample2.jpg

ВНИМАНИЕ!!! Разъем настоятельно рекомендуется располагать на плате ключом (вырезом под выступ на ответной части) в сторону элементов (см. рисунок справа). Это необходимо для того, чтобы в случае установки углового разъема он оказался направленным к краю платы. Также это необходимо для того, чтобы в случае установки прямых разъемов, не приходилось перекручивать шлейф при соединении расположенных друг над другом модулями.

ВНИМАНИЕ!!! Для нумерации системного разъема используется "шахматный" порядок, т.е. фактически номера контактов разъема совпадают с номерами проводов в соединительном шлейфе.

Нумерация системного разъема Номер Pin Назначение Расшифровка
1 GND Земля
2 3.3V Очищенное питание для всей электроники +3.3V
3 RES Сигнал RESET (Программатор)
4 MOSI Сигнал MOSI (Программатор)
5 MISO Сигнал MISO (Программатор)
6 SCK Сигнал SCK (Программатор)
7 GP2\XTAL1 Вход\выход общего назначения №2 (опционально - Тактирование МК)
8 GP1 Вход\выход общего назначения №1
9 GP0 Вход\выход общего назначения №0
10 SDA Шина I2C
11 SCL Шина I2C
12 TxD Асинхронный выход данных (от главного МК к модулю)
13 RxD Асинхронный вход данных (от модуля к главному МК)
14 5V Очищенное опциональное питание +5.0V

Правила совместного использования модулей на шине RoboBus

Использование линий питания

  1. В системе допускается существование всего 1 источника очищенного питания по линии 3.3V, все остальные модули должны потреблять это питание;
  2. Также не допускается существование нескольких источников очищенного питания по линии 5V.
  3. Общий ток, потребляемый по линиям 3.3V и 5V, не должен превышать 1А в каждом случае (это ограничение обусловлено используемыми разъемами шины).
  4. Рекомендуется источник питания для системы, использующей RoboBus, проектировать таким образом, чтобы он мог обеспечить ток по линиям 3.3V и 5V не менее 1А .
  5. Контроль за не превышением допустимого тока потребления по линиям 3.3V и 5V возложен на пользователя модулей (как и в архитектуре персонального компьютера - за требуемой мощностью источника питания следит тот, кто собирает компьютер).

Использование интерфейсов SPI\I2C\UART модулями

  1. При использовании SPI только один модуль может выступать мастером SPI.
  2. При использовании UART только один модуль может передавать данные по линии TXD.
  3. При использовании UART только один модуль может передавать данные по линии RXD.

Использование программаторов с RoboBus-модулями

  1. Программатор, напрямую подключаемый к шине RoboBus, должен удовлетворять всем её спецификациям. Особенно внимательно стоит отнестись к уровням напряжений. При подаче на любую линию шины (кроме 5V) напряжения выше 3.6В может произойти необратимое разрушение низковольтных микросхем используемых модулей.
  2. Для использования программаторов, которые не работают с 3.3В схемами или питаются не от схемы и выдают на сигнальные линии 5V, необходимо будет изготовить адаптер.

Требования по совместимости модулей с RoboBus

Модуль считается совместимым с шиной RoboBus, если он:

  1. Совместим с системным разъемом;
  2. Не разрушается при подаче напряжения из допустимых интервалов на соответствующие контакты разъема;
  3. Сам не подает на контакты разъема напряжения выходящие за рабочие рамки;
  4. Удовлетворяет требованиям по принципиальной схеме;
  5. Удовлетворять правилам использования общих портов ввода\вывода;
  6. Удовлетворяет правилам работы по протоколам обмена;

Термины, используемые в условиях совместимости

Должен 
Соблюдение условия является безусловно обязательным
Настоятельно рекомендуется 
Допускается невыполнение условия, однако его выполнение повышает надежность функционирования шины
Рекомендуется 
Соблюдение условия не является обязательным, однако его выполнение расширяет возможности шины
Джампер 
Устройство, позволяющее оперативно соединять между собой 2 электрические цепи. Конструктивно может быть выполнен в виде разъема или штырьков со съемной перемычкой, пары площадок на печатной плате и т. п.

Максимально допустимые уровни напряжения

  1. На контактах питания 3.3V напряжение должно быть не менее -0.3V и не более 3.6V;
  2. На контактах питания 5V напряжение должно быть не менее -0.3V и не более 5.5V;
  3. На всех сигнальных разъемах (3-13 контакты) напряжение должно быть не менее -0.3V и не более 3.6V;


Рабочие уровни напряжения

  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 - логический ноль;