Шлюз UART-to-I2C/SPI/1W
RH-0004

420,00 руб.

Шлюз, позволяющий через интерфейс UART общаться в режиме мастера с устройствами, имеющими интерфейсы I2C, SPI или 1W (однопроводная шина)

Любые дополнительные вопросы по поводу работы или покупки шлюза можно обсудить на форуме, в отдельной теме или в личной переписке с пользователем rhf-admin.

5 в наличии

Описание

Данный шлюз позволяет через интерфейс UART общаться в режиме мастера с устройствами, имеющими интерфейсы I2C, SPI или 1W (однопроводная шина).
Его можно использовать для подключения устройств с интерфейсами I2C/SPI/1W к микроконтроллерам (через UART) или к персональным компьютерам (через преобразователи интерфейсов USB-to-UART, RS232-to-UART и тому подобным). В конце страницы есть список вариантов применения шлюза совместно с ПК.

ОПИСАНИЕ ШЛЮЗА.

  • шлюз собран на базе RISC-микроконтроллера ATTiny2313
  • конфигурирование и управление шлюзом осуществляется через UART, при помощи специальных команд
  • настройки UART шлюза: скорость 115200 бит/сек, 8 бит данных, без проверки чётности, 2 стоп-бита
  • интерфейс I2C позволяет организовать побайтную передачу данных в режиме single master.
  • для интерфейса SPI реализованы все 4 режима работы, при этом имеется возможность передавать данные пакетами от 1 до 64 бит.
  • для интерфейса 1W доступна побитная и побайтная передача данных.
  • помимо интерфейсов I2C/SPI/1W шлюз имеет 3 линии GPIO, каждую из которых можно настроить на вход или на выход независимо друг от друга.
  • имеется возможность обновления прошивок управляющего контроллера — для этого на плате есть специальный разъём внутрисхемного программирования (XT2).
  • для питания можно использовать напряжение +5 или от +3.3 Вольта (выбирается джампером на плате).
  • имеется возможность сохранения выбранной конфигурации в EPROM и её автоматическая загрузка при последующих включениях.
  • вход приёмника uart (RxD) имеет преобразователь уровней и на него можно подавать сигналы как с 3.3, так и 5 вольтовым уровнем.

1. Назначение разъёмов, выводов и джамперов

плата шлюза UART-to-I2C/SPI/1W RH-0004

XT1 — Выводы для подключения по UART и питания шлюза (разъём BH-14):

  1. +3.3 — вывод для подачи на шлюз напряжения питания +3.3 Вольта
  2. +5 — вывод для подачи на шлюз напряжения питания +5 Вольт
  3. RxD — вывод приёмника UART шлюза. На этот вывод нужно подавать сигнал передатчика (TxD) подключаемого к шлюзу устройства
  4. TxD — вывод передатчика UART шлюза. На этот вывод нужно подавать сигнал приёмника (RxD) подключаемого к шлюзу устройства
  5. COM — общий провод (сюда подключается минус источника питания и общий провод интерфейса uart подключаемого к шлюзу преобразователя)

XT2 — разъём для внутрисхемного программирования контроллера шлюза.

XT3 — выводы интерфейсов I2C, SPI, 1W, GPIO (разъём WF-09R):

  1. Supply — на эту линию может выводиться подаваемое на шлюз напряжение питания (для этого нужно замкнуть джампер JP4)
  2. SCLK/Clock — вывод тактирования для интерфейсов I2C и SPI
  3. MISO — вход данных от «слэйва» для интерфейса SPI
  4. MOSI/1W/DATA — в зависимости от установленной конфигурации может работать как выход данных от «мастера» для интерфейса SPI или как двунаправленная линия данных для интерфейсов 1W (однопроводная шина) и I2C
  5. SS/CS — вывод Slave Select / Chip Select для интерфейсов I2C и SPI
  6. COM — общий провод
  7. I/O-0 — вывод первого канала GPIO
  8. I/O-1 — вывод второго канала GPIO
  9. I/O-2 — вывод третьего канала GPIO

Джамперы:

  1. JP1 — для выбора контакта разъёма BH-14, с которого будет браться напряжение питания. В одном положении оно берётся с контакта +3.3, в другом положении — с контакта +5.
  2. JP2 — позволяет организовать подтяжку линии MOSI/1W/DATA к напряжению питания резистором 4,7 кОм (для этого джампер должен быть замкнут).
  3. JP3 — позволяет организовать подтяжку линии SCLK/Clock к напряжению питания резистором 4,7 кОм (для этого джампер должен быть замкнут).
  4. JP4 — если замкнут — вывод Supply разъёма XT3 подключается к напряжению питания, если разомкнут — вывод просто висит в воздухе и питание на него не подаётся.

2. Управление шлюзом

Управление шлюзом осуществляется посредством передачи ему по UART специальных команд, в результате выполнения которых шлюз изменяет какие-либо свои служебные регистры и производит определённые действия. В служебных регистрах хранится конфигурация шлюза, его отдельных интерфейсов, коды ошибок и тому подобное.

Всего существует 5 групп служебных регистров:

  • регистры общего назначения: COMMON_CONFIG, ERROR
  • регистры I2C: FLAGS_I2C, BTS_I2C, RDB_I2C
  • регистры SPI: CONFIG_SPI, PAKET_SIZE, FLAGS_SPI, REG0REG7
  • регистры 1W: FLAGS_1W, BTS_1W, RDB_1W
  • регистры GPIO: DDR, PORT, PIN

Первые 4 группы регистров реализованы на регистрах общего назначения контроллера, а регистры GPIO — это соответствующие реальные регистры специального назначения, управляющие портами ввода/вывода.

Аналогично, для управления шлюзом существуют 5 групп команд:

  • команды общего назначения: ResetDevice, InterfaceChoiceI2C, InterfaceChoiceSPI, InterfaceChoice1W, ReadError, SaveToEPROM, ReadFromEPROM, EnableReports, DisableReports, EnableAutoLoad, DisableAutoLoad, ReadCommonConfig, ReadVersion
  • команды GPIO: IO0ConfigOutput, IO0ConfigInput, IO0Output0, IO0Output1, IO1ConfigOutput, IO1ConfigInput, IO1Output0, IO1Output1, IO2ConfigOutput, IO2ConfigInput, IO2Output0, IO2Output1, TestIO0, TestIO1, TestIO2, SetIOG
  • команды I2C: SendStart_I2C, SendStop_I2C, SendByte_I2C, ReadByteA_I2C, ReadByte_I2C, ClearCS_I2C, SetCS_I2C, ReadCS_I2C
  • команды SPI: LoadConfig_SPI, ReadConfig_SPI, LoadPaketSize_SPI, ReadPaketSize_SPI, LoadPaket_SPI, ReadPaket_SPI, StartChange_SPI, ClearSS_SPI, SetSS_SPI, ReadSS_SPI
  • команды 1W: SendReset_1W, SendByte_1W, ReadByte_1W, SendBit_1W, ReadBit_1W

Как видите, регистров и команд достаточно много, поэтому подробно все они описаны в отдельном документе: подробное описание регистров, команд и кодов ошибок шлюза, здесь же я добавлю про них лишь ещё пару слов.

Первые две группы команд доступны всегда, команды и регистры управления интерфейсами I2C/SPI/1W доступны только если шлюз сконфигурирован для работы с этими интерфейсами (в противном случае при получении такой команды будет сгенерирован код ошибки «неизвестная команда»). Это связано с тем, что некоторые регистры интерфейсов I2C/SPI/1W физически используют одни и те же регистры контроллера и, естественно, не могут использоваться для трёх целей одновременно.

Большинство команд после выполнения возвращают специальный код (код ошибки или 0 — признак успешного выполнения), который записывается в специальный регистр и может быть отправлен по uart. Если в процессе передачи данных по UART произошла ошибка, то принятый байт игнорируется.

Чтобы облегчить разработку ПО для шлюза, была написана специальная библиотека, реализующая все описанные выше функции. Описание этой библиотеки, её исходники и скомпилированный dll-файл находятся вот здесь.

3. Примеры программ и варианты применения

Программа, демонстрирующая общие возможности. Реализованы все существующие команды, но программа не заточена под какое-либо конкретное устройство. Этой программой удобно пользоваться для отладки при написании какого либо предназначенного для работы со шлюзом ПО.

Программа, демонстрирующая возможности чтения ключей-таблеток. При подключении к порту она автоматически конфигурирует шлюз на работу с однопроводной шиной и далее, после нажатия на кнопку «Read 1W Key», периодически посылает команду сброса и опрашивает ключ.

Использование шлюза в качестве USB-программатора I2C EPROM (совместно с USB-to-UART конвертером).

Использование шлюза в качестве USB-программатора SPI EPROM (совместно с USB-to-UART конвертером).

USB-термометр с передачей данных по сети на базе шлюза и датчика температуры DS18B20 (совместно с USB-to-UART конвертером).

Использование шлюза в качестве USB-программатора DS2430 EPROM (совместно с USB-to-UART конвертером).

Использование шлюза для построения системы управления аквариумом (совместно с USB-to-UART конвертером).

Обзоры

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “Шлюз UART-to-I2C/SPI/1W
RH-0004”