ORFA — различия между версиями
Vooon (обсуждение | вклад) м |
Vooon (обсуждение | вклад) |
||
Строка 17: | Строка 17: | ||
т.е. каждый драйвер устройства связан с определенным набором адресов ячеек. | т.е. каждый драйвер устройства связан с определенным набором адресов ячеек. | ||
− | Структура и взаимодействие модулей в варианте с модулем uart->i2t: | + | ====Структура и взаимодействие модулей в варианте с модулем uart->i2t:==== |
[[Файл:or-gate-ser.svg]] | [[Файл:or-gate-ser.svg]] | ||
− | Структура и взаимодействие модулей в варианте только i2c slave: | + | ====Структура и взаимодействие модулей в варианте только i2c slave:==== |
[[Файл:or-gate-i2c.svg]] | [[Файл:or-gate-i2c.svg]] | ||
+ | |||
+ | == Команды UART->I<sup>2M/sup>C == | ||
+ | Все команды текстовые, перевод строки означает окончание команды, запуск на исполнение. | ||
+ | |||
+ | {| class=standard | ||
+ | !Название | ||
+ | !Запрос | ||
+ | !Ответ | ||
+ | !Комментарий | ||
+ | |- | ||
+ | |Get protocol version | ||
+ | |<code>V</code> | ||
+ | |<code>V1.0</code> | ||
+ | | | ||
+ | |- | ||
+ | |Clear I2C bus | ||
+ | |<code>X</code> | ||
+ | |<code>X</code> | ||
+ | | | ||
+ | |- | ||
+ | |Set local address | ||
+ | |<code>L<addr></code> | ||
+ | |<code>L<addr></code> | ||
+ | | | ||
+ | * addr — uint8 | ||
+ | |- | ||
+ | |Set bus speed (freq) | ||
+ | |<code>C<freq></code> | ||
+ | |<code>C<freq></code> | ||
+ | | | ||
+ | * freq — uint16 | ||
+ | |- | ||
+ | |Read register | ||
+ | |<code>R<addr><reg>[<len>]</code> | ||
+ | |<code>SWASR<rdata>P</code> | ||
+ | | | ||
+ | * addr — uint8 | ||
+ | * reg — uint8 | ||
+ | * len — uint8, default 1 | ||
+ | * rdata — uint8 array | ||
+ | |- | ||
+ | |Write register | ||
+ | |<code>W<addr><reg><data></code> | ||
+ | |<code>SWA(A)+P</code> | ||
+ | | | ||
+ | * addr — uint8 | ||
+ | * reg — uint8 | ||
+ | A = Ack | ||
+ | |- | ||
+ | |I2C request | ||
+ | | | ||
+ | # <code>S<adr+w><data></code> | ||
+ | # <code>S<adr+r><len></code> | ||
+ | * <code>\1P</code> | ||
+ | * <code>\2P</code> | ||
+ | * <code>(\1|\2)+P</code> | ||
+ | | | ||
+ | # <code>SW(A)+</code> | ||
+ | # <code>SR<rdata></code> | ||
+ | * <code>\1P</code> | ||
+ | * <code>\2P</code> | ||
+ | * <code>(\1|\2)+P</code> | ||
+ | | | ||
+ | * adr+w — uint8, &0xfe | ||
+ | * adr+r — uint8, |0x01 | ||
+ | * len — uint8 | ||
+ | * data — uint8 array | ||
+ | * rdata — uint8 array | ||
+ | |} |
Версия 07:33, 8 мая 2009
I2C-gate — это модульная прошивка для шлюз-контроллеров Open Robotics.
Находится в разработке. На данный момент поддерживает только микроконтроллеры семейства AVR Mega.
На данный момент состоит из монолитного шлюза UART->I2C и модульного виртуального подчиненного устройства на шине I2C.
При таком подходе ПК обращается к блокам МК как и к любым другим устройствам на шине i2c, что дает унификацию. А при некоторой доработке виртуального слейва можно сделать прошивку для второго шлюз-контроллера, управляемого через i2c.
Те можно достаточно малой кровью получить хорошо расширяемую систему.
Взаимодействие модулей подчиненного устройсва основано на регистровой модели, т.е. каждый драйвер устройства связан с определенным набором адресов ячеек.
Структура и взаимодействие модулей в варианте с модулем uart->i2t:
Структура и взаимодействие модулей в варианте только i2c slave:
Команды UART->I2M/sup>C
Все команды текстовые, перевод строки означает окончание команды, запуск на исполнение.
Название | Запрос | Ответ | Комментарий |
---|---|---|---|
Get protocol version | V
|
V1.0
|
|
Clear I2C bus | X
|
X
|
|
Set local address | L<addr>
|
L<addr>
|
|
Set bus speed (freq) | C<freq>
|
C<freq>
|
|
Read register | R<addr><reg>[<len>]
|
SWASR<rdata>P
|
|
Write register | W<addr><reg>
|
SWA(A)+P
|
A = Ack |
I2C request |
|
|
|