- Функции для работы с однопроводным интерфейсом One Wire
Функции для работы с однопроводным интерфейсом One Wire
Библиотека для работы с интерфейсом One Wire (1-Wire) представляет собой набор функций для связи с внешним устройством по однопроводной шине, например, с цифровым термометром DS1820. Протокол этого интерфейса, требующего для связи всего один провод, поддерживает ведущий (master) и ведомый (slave) микроконтроллер. Благодаря используемой для этого интерфейса конфигурации аппаратуры (подтяжка к питанию и драйверы с открытым коллектором), он позволяет устройству slave получать питание по проводнику, используемому для связи.
Протокол интерфейса One Wire имеет следующие основные характеристики:
• только одно ведущее устройство в системе;
• скорость обмена до 16 Кбод;
• расстояние между устройствами до 300 м;
• небольшие пакеты данных;
• низкая стоимость.
Каждое устройство One Wire шины имеет уникальный 64-битовый регистрационный номер (8 бит - тип устройства, 48 бит - серийный номер и 8 бит - CRC), поэтому большое количество ведомых устройств могут сосуществовать на одной шине.
Следует заметить, что для работы с цифровыми термометрами фирмы Dallas частота тактового генератора микроконтроллера должна быть не менее 4 МГц.
Для работы с USART используются функции Ow_Reset, Ow_Read и Ow_Write. Описание этих функций представлено в таблицах 41 - 43 соответственно.
Таблица 41. Описание функции Ow_Reset
Прототип | unsigned short Ow_Reset(unsigned short *port, unsigned short pin) |
Возвращаемое значение | 0, если DS1820 присутствует, и 1 – если нет |
Описание | Выдаёт сигнал сброса для One Wire DS1820. Аргументы port и pin определяют подключение DS1820 к микроконтроллеру |
Требования | Работает только с цифровым термометром DS1820 |
Пример | //Cброс DS1820, который подключен к выводу RA5: Ow_Reset(&PORTA, 5) |
Таблица 42. Описание функции Ow_Read
Прототип | unsigned short Ow_Read(unsigned short *port, unsigned short pin) |
Возвращаемое значение | Данные, прочитанные из внешнего устройства по шине OneWire |
Описание | Читает один байт данных по шине OneWire |
Требования | Нет |
Пример | unsigned short tmp; ... tmp = Ow_Read(&PORTA, 5); |
Таблица 43. Описание функции Ow_Write
Прототип | void Ow_Write(unsigned short *port, unsigned short pin, unsigned short par) |
Возвращаемое значение | Нет |
Описание | Передаёт один байт данных (аргумент par) по шине OneWire |
Требования | Нет |
Пример | Ow_Write(&PORTA, 5, 0xCC) |
Схема подключения цифрового термометра DS1820 по шине One Wire к выводу RA5 микроконтроллера показана на рисунке 28.
Рис. 28. Схема подключения цифрового термометра DS1820 к микроконтроллеру по шине One Wire