12C Slave реализация с синхронной передачей данных
Автор: Михаил Сидоров • Январь 4, 2026 • Курсовая работа • 1,594 Слов (7 Страниц) • 7 Просмотры
[pic 1]
[pic 2]
Министерство образования и науки Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего образования
«Уральский федеральный университет имени первого Президента России Б.Н. Ельцина»
Физико-технологический институт
Кафедра экспериментальной физики
ТЕМА КУРСОВОй работы
12C Slave реализация с синхронной передачей данных
КУРСОВАЯ РАБОТА
Пояснительная записка
Руководитель | _____________ | М.В. Ушаков |
Студент гр. Фт-490301 | _____________ | Цымбаленко Д.Н |
Екатеринбург
2022
Оглавление
ВВЕДЕНИЕ 3
Протокол I2C 4
Передача и получение данных от ведущего 6
Реализация 8
START/STOP/RESTART 8
Фиксация входных данных 11
Конечный автомат 13
Асинхронная память 15
Выходной драйвер 18
Тестирование 19
Заключение 22
ВВЕДЕНИЕ
I2C — это популярный протокол двухпроводной последовательной шины для связи между устройствами. Его поддерживает большинство микроконтроллеров, так что это хороший выбор интерфейса для многих чипов. В данной работе будет реализован slave интерфейс I2C без использования тактовой частоты дискретизации шины.
Выборка по шине — это простой способ реализовать ведомое устройство I2C, но для поддержки разумных скоростей передачи I2C вам потребуется тактовая частота выборки в несколько МГц. Это нормально, если остальная часть вашего устройства уже нуждается в таких быстрых частотах, но если это не так, то энергопотребление будет излишне увеличено. Надежное slave устройство I2C может быть реализовано с использованием только сигналов шины для синхронизации. Преимущество этого заключается в том, что подчиненный интерфейс не потребляет энергии (за исключением токов утечки), когда шина простаивает.
Протокол I2C
Шина I2C состоит из двух линий: SCL (последовательные часы) и SDA(последовательные данные), обе из которых обычно поддерживаются на высоком логическом уровне с помощью слабого подтягивающего резистора. Устройства управляют шиной, выбирая перевод линий в низкий логический уровень или оставляя свои выходы с высоким импедансом. Это основной механизм, лежащий в основе арбитража с несколькими ведущими, но здесь он не будет рассматриваться — для простоты мы предположим, что один главный сервер имеет несколько подчиненных устройств.
Есть три специальных события, генерируемых мастером, которые называются START, STOP и RESTART. Они используются, соответственно, для того, чтобы начать транзакцию, завершать транзакцию и начинать новую транзакцию без освобождения управления шиной. Временные диаграммы для этих трех событий показаны здесь:
[pic 3]
Синхронизация трех специальных управляющих событий, генерируемых мастером на шине I2C.
Существует два типа событий передачи байтов: от ведущего к ведомому и от ведомого к ведущему. Время для обоих одинаковое:
[pic 4]Время передачи данных по шине I2C
Биты данных размещаются SDA сначала по старшему разряду. В транзакции «ведущий-ведомый» мастер отправляет байт данных в течение первых 8 циклов, а затем ведомый подтверждает на 9-м цикле, устанавливая SDA низкий уровень. Транзакция ведомого к ведущему в точности обратна, за исключением того, что ведущее устройство подтверждает только то, что оно хочет, чтобы ведомое устройство передало еще один байт. Без этого правила ведомое устройство может продолжать удерживать SDA в следующем цикле, что не позволяет ведущему устройству генерировать событие RESTART или .STOP
...