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

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
м (переименовал «I2c-gate» в «ORFA»: Меняем рабочее название на "маркетинговое", проверили - такое слово в робототехнике вроде не используетс�)
Строка 1: Строка 1:
 
[[Категория:Open Robotics]]
 
[[Категория:Open Robotics]]
  
I2C-gate — это модульная прошивка для шлюз-контроллеров [[Open Robotics]].
+
ORFA — это модульная архитектура прошивки для семейства контроллеров [[Open Robotics]].
Находится в разработке. На данный момент поддерживает только микроконтроллеры семейства AVR Mega.
+
На данный момент поддерживает только микроконтроллеры семейства AVR ATMega.
 +
Архитектура и сами прошивки сейчас находятся в разработке.
  
На данный момент состоит из монолитного шлюза [[w:UART|UART]]->[[w:i2c|I<sup>2</sup>C]]
+
Текущая версия состоит из монолитного шлюза [[w:UART|UART]]->[[w:i2c|I<sup>2</sup>C]]
 
и модульного виртуального подчиненного устройства на шине I<sup>2</sup>C.
 
и модульного виртуального подчиненного устройства на шине I<sup>2</sup>C.
  
 
При таком подходе ПК обращается к блокам МК как и к любым другим устройствам на шине i2c, что дает унификацию.
 
При таком подходе ПК обращается к блокам МК как и к любым другим устройствам на шине i2c, что дает унификацию.
А при некоторой доработке виртуального слейва можно сделать прошивку для второго шлюз-контроллера, управляемого через i2c.
+
А при незначительной модификации виртуального слейва можно сделать прошивку для второго контроллера, уже не являющегося шлюзом, управляемого через i2c.
  
Те можно достаточно малой кровью получить хорошо расширяемую систему.
+
Т.е. можно достаточно малой кровью получить хорошо расширяемую систему.
  
 
[[Файл:or-ser-i2c-i2c.svg]]
 
[[Файл:or-ser-i2c-i2c.svg]]

Версия 10:54, 9 мая 2009


ORFA — это модульная архитектура прошивки для семейства контроллеров Open Robotics. На данный момент поддерживает только микроконтроллеры семейства AVR ATMega. Архитектура и сами прошивки сейчас находятся в разработке.

Текущая версия состоит из монолитного шлюза UART->I2C и модульного виртуального подчиненного устройства на шине I2C.

При таком подходе ПК обращается к блокам МК как и к любым другим устройствам на шине i2c, что дает унификацию. А при незначительной модификации виртуального слейва можно сделать прошивку для второго контроллера, уже не являющегося шлюзом, управляемого через i2c.

Т.е. можно достаточно малой кровью получить хорошо расширяемую систему.

Or-ser-i2c-i2c.svg

Взаимодействие модулей подчиненного устройсва основано на регистровой модели, т.е. каждый драйвер устройства связан с определенным набором адресов ячеек.

Структура и взаимодействие модулей в варианте с модулем uart->i2t:

Or-gate-ser.svg

Структура и взаимодействие модулей в варианте только i2c slave:

Or-gate-i2c.svg

Команды UART->I2C

Все команды текстовые, перевод строки означает окончание команды, запуск на исполнение.

Название Запрос Ответ Комментарий
Get protocol version V V1.0
Clear I2C bus X X
Set local address L<addr> L<addr>
  • addr — uint8
Set bus speed (freq) C<freq> C<freq>
  • freq — uint16
Read register R<addr><reg>[<len>] SWASR<rdata>P
  • addr — uint8
  • reg — uint8
  • len — uint8, default 1
  • rdata — uint8 array
Write register W<addr><reg> SWA(A)+P
  • addr — uint8
  • reg — uint8

A = Ack

I2C request
  1. S<adr+w>
  2. S<adr+r><len>
  • \1P
  • \2P
  • (\1|\2)+P
  1. SW(A)+
  2. SR<rdata>
  • \1P
  • \2P
  • (\1|\2)+P
  • adr+w — uint8, &0xfe
  • adr+r — uint8, |0x01
  • len — uint8
  • data — uint8 array
  • rdata — uint8 array

Установка

Репозиторий исходных кодов: http://hg.vehq.ru/i2c-gate