
- •Организация микропроцессора
- •Организация входов-выходов
- •Регистры входов-выходов
- •Приборный интерфейс i2c
- •Состояние линии
- •Синхронизация
- •Форматы и режимы
- •Арбитраж
- •Организация контроллера
- •Тактовое питание
- •Регистры i2c
- •Векторы прерываний
- •Регистры адреса и масок
- •Регистры статусов
- •Регистры приема-передачи
- •Регистры режима
- •Режим цифровой петли
- •Другие регистры
- •Регистры идентификации
- •Аппаратурный сброс
- •Инициализация ведущего
- •Инициализация ведомого
Арбитраж
Рассмотрим тот случай, если несколько устройств будут передавать данные. В таких случаях есть специальная договоренность об арбитраже (см. рис.12). Арбитраж сводится к тому, что мы должны оставить на интерфейсе более приоритетные устройства и отключить менее приоритетные. Имеется два сигнала, которые присутствуют в линии, это сигнал тактового сигнала и сигнал данных. Если окажется, что одновременно два устройства передают одни и те же данные, имеем две диаграммы устройства 1 и устройства 2 (см. рис 12). Сигналы уже синхронизированы. Смена данных происходит в момент низкого уровня тактового сигнала, есть два устройства, которые передают в линию похожие данные. Но наступает момент, когда одно устройство передает 1, а другое передает 0, тогда устройства слушают линию. Устройство 1 передает 1, а в лини 0. Таким образом, первое устройство понимает, что не оно приоритетно и освобождает линию (отключается). То устройство, которое передает данные с меньшим значением (адрес, данные), имеет больший приоритет на интерфейсе. Если несколько устройств передают похожие данные, то арбитраж наступает тогда, когда эти данные становятся различными.
Рис.12. – Арбитраж
Арбитраж не работает от состояния STOP до состояния DATA (время передачи адреса) и от состояния START до состояния STOP в формате повторения.
Организация контроллера
Рис.13. – Организация контроллера
IС – I2С
X – Transmit (передача)
R – Receive (прием)
S – Shift (сдвиг)
Рассмотрим организация контроллера приборного интерфейса (см. рис.13). Видим две линии, которые поступают с внешних цепей, по которым поступает тактовый сигнал и данные. Тактовый сигнала поступает в синхронизатор тактов. Прескалер задает питание синхронизатору тактов. Арбитр, который слушает данные и получает синхросигналы из линии, а также принимает решение, когда надо отключиться. Часть схемы занимается приемом и передачей данных, она состоит из двух частей: передатчик, приемник. Основой для передачи данных служит регистр сдивига туда записывается параллельно передаваемое число, потом по действиям тактового сигнала, это число по одному биту передается во внешнюю цепь. После заполнения регистра сдвига данные передаются в регистр данных приемника или передатчика.
Есть регистры управления состояния этим контроллером, в которых задаются различные режимы передачи данных. Есть различные события, которые вызывать прерывания. И так как может использоваться канал прямого доступа для организации приема и передачи данных, есть соответствующие события, которые предаются в канал и вызывают из регистров данных приема и передатчик. События приема возникают когда данные получены, а события передачи, когда данные из регистра передатчика переписаны в регистр сдвига и выдаются; регистр передатчика освободился требуется его заполнить новыми данными, чтобы ощущение цикличности не пропадало.

Тактовое питание
Рис.14. – Схема тактового питания Рис.15. – Тактовое питание
На рисунке 14 мы видим схему реализации тактового питания контроллера. Аналогичные схемы ранее были рассмотрены, есть возможность выбор внешнего или внутреннего тактового сигнала. Если выбирается внешний тактовый сигнал, внешний вывод CLKSEL определяет направление приема тактового сигнала с источника часов реального времени. К внутреннему тактовому сигналу подключается множество устройств, и чтобы устройство не потребляло энергию, тактовое питание отключают. Также происходит и с тактовым питанием контроллера прерываний. Есть регистр управления RCGCR1, в нем содержится специальный разряд для контроллера (см. рис.16). Тактовое питание формируется на интерфейсе, используя двухуровневую схему (см. рис.15): прескалер – делитель с переменным коэффициентом; делитель – делит частоту до того значения, которое необходимо при передачи данных по интерфейсу.
Рис.16. – Регистр управления
Для того чтобы это тактовое питание можно было подать на выход интерфейса.
Частота рассчитывается по формуле, изображенной на рисунке 17. Причем коэффициент d определяется коэффициентом прескалера: для 0 – d=5, для 1 – d=6, для всего остального – d=7.
Рис.17. – Расчет частоты