I2C Master

Конфигурирование и связь с I2C ведомым устройством

  • Библиотека:
  • SoC Blockset/Аппаратная логика ввода-вывода

  • I2C Master block

Описание

Блок I2C Master конфигурирует и связывается с ведомым устройством связи между интегральными схемами (I2C), соединенным с программируемой полем массивом управления ключами (FPGA). Этот блок содержит главный контроллер I2C с интерфейсом AXI-Lite для выполнения строения.

Блок I2C Master поддерживает следующие функции:

  • AXI4-Lite поддержку интерфейса для строения и доступа

  • Поддержка с одним ведущим и с несколькими подчиненными серверами

  • Поддержка 7-битного и 10-битного адреса I2C ведомых устройств

  • Поддержка пакетного режима с максимальным размером пакета 256 байт

  • Поддержка нескольких режимов скорости передачи

  • HDL-IP-совместимая модель с возможностями генерации кода

Блок использует интерфейс AXI-Lite, чтобы сконфигурировать и создать интерфейс пути управления для связи с I2C ведомым устройством. Оборудование, сгенерированное в процессе генерации, содержит интерфейс регистра AXI-Lite и два аппаратных интерфейса, последовательный синхроимпульс (SCL) и последовательные данные (SDA). SCL и SDA соединяют блок I2C Master и ведомое устройство.

Каждый порт, представленный в блоке, является регистром AXI-Lite, за исключением портов sdaIn, sclIn, scl и sda. Для связи с ведомым устройством интерфейс регистра AXI-Lite конфигурирует регистрационную информацию в блоке I2C Master. Эта таблица содержит I2C регистрационную информацию Master AXI-Lite.

Адрес регистрацииИмя порта и регистраРазмер регистра в битахОперация
0x100ctrlInf - Управляющая информация

32

Написать
0x104slvAddr - Адрес ведомого устройства

32

Написать
0x108regAddr - Адрес регистра

32

Написать
0x10CdataReg - Регистр данных

32

Написать
0x110readDone - Чтение завершено регистр32Написать
0x114done - Done register

32

Написать
0x118rdy - Регистр готовности32Читать
0x11CrespData - Первый регистр данных отклика32Читать
0x120validData - Действительный регистр данных отклика32Читать
0x124statusReg - Регистр состояния32Читать

Чтобы выполнить операции чтения и записи с помощью блока I2C Master, необходимо следовать правильной последовательности. В этом разделе представлена информация о потоке последовательности для операций чтения и записи.

Чтение последовательности

Чтобы считать данные с внешнего ведомого устройства:

  1. Отправьте ctrlInf регистрационную информацию.

  2. Отправьте slvAddr регистрационную информацию.

  3. Отправьте regAddr регистрационную информацию.

  4. Установите для завершенного регистра значение 1 после отправки одного набора регистрационной информации в блок и последующего установки на 0.

  5. Считайте данные отклика от внешнего ведомого устройства. После чтения данных из respData регистра установите readDone регистр равным 1 и затем установите его на 0 немедленно.

  6. Установите значение регистра readDone 1 снова, чтобы считать больше чем 4 байта данных. После операции read установите ее на 0 немедленно.

В последовательности чтения один набор регистрационной информации является комбинацией ctrlInf, slvAddr и regAddr регистров.

Последовательность записи

Чтобы записать данные во внешнее ведомое устройство:

  1. Отправьте ctrlInf регистрационную информацию.

  2. Отправьте slvAddr регистрационную информацию.

  3. Отправьте regAddr регистрационную информацию.

  4. Отправьте регистр dataReg, который содержит данные для записи в регистр ведомого устройства.

  5. Установите для завершенного регистра значение 1 после записи одного набора регистрационной информации в блок, а затем установите его на 0.

  6. Установите для завершенного регистра значение 1 снова, чтобы записать более 4 байтов данных. После операции записи установите ее на 0 немедленно.

В пишут последовательность, один набор информации о регистре - комбинация ctrlInf, slvAddr, regAddr, и dataReg регистры.

Порты

Вход

расширить все

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

БитЦельОписание значения
0Установите режим записи или чтения.

Чтобы записать в реестр ведомых устройств, установите это значение равным 0. Чтобы считать из регистра ведомого устройства, установите это значение равным 1.

[2:1]Установите размер адреса регистра ведомого устройства.

Если размер адреса регистра ведомого устройства:

  • Один байт (8 биты), установите это значение равным 00

  • Два байта (16 биты), установите это значение равным 01

  • Три байта (24 бита), установите это значение равным 10

  • Четыре байта (32 бита), установите это значение равным 11

[10:3]Установите размер данных регистра ведомого устройства.

Если регистр ведомого устройства поддерживает:

  • Один байт данных, установите это значение равным 00000000

  • Два байта данных, установите это значение равным 00000001

  • Три байта данных, установленных это значение к 00000010

  • Четыре байта данных, установленных это значение к 00000011

  • Пять байтов данных, установленных это значение к 00000100

  • Шесть байтов данных, установленных это значение к 00000101

  • Семь байтов данных, установленных это значение к 00000110

  • Восемь байтов данных, установленных это значение к 00000111

  • Девять байтов данных, установленных это значение к 00 001 000

  • Десять байтов данных, установленных это значение к 00 001 001

  • Одиннадцать байтов данных, установленных это значение к 00 001 010

  • Двенадцать байтов данных, установленных это значение к 00 001 011

  • Тринадцать байтов данных, установленных это значение к 00 001 100

  • Четырнадцать байтов данных, установленных это значение к 00 001 101

  • Пятнадцать байтов данных, установленных это значение к 00 001 110

  • Шестнадцать байтов данных, установленных это значение к 00 001 111

….…....

  • 256 байтах данных установите это значение равным 11111111

11Установите тип ведомого устройства

Чтобы сконфигурировать 7-битное адресное ведомое устройство, установите это значение равным 0. Чтобы сконфигурировать 10-битное адресное ведомое устройство, установите это значение равным 1.

Типы данных: uint16

Регистр ведомого адреса, который содержит адрес ведомого устройства, заданный как скаляр.

Типы данных: uint16

Регистровый адрес ведомого устройства в виде скаляра.

Типы данных: uint32

Регистр данных, заданный как скаляр. Блок использует этот порт, чтобы записать данные в реестр ведомых устройств.

Типы данных: uint32

Считайте сигнал done, заданный как Boolean скаляр. Когда это значение 1 (true), пользователь готов считать данные отклика от блока, который принимается от ведомого устройства. Когда это значение 0 (false), пользователь не готов считать данные отклика из блока.

Типы данных: Boolean

Сигнал Done, заданный как Boolean скаляр. Это значение указывает блок, когда считать информацию о регистре AXI-Lite.

Типы данных: Boolean

Входные последовательные данные, возвращенные как Boolean скаляр. Этот порт обеспечивает последовательный сигнал данных для блока от ведомого устройства.

Типы данных: Boolean

Входной последовательный синхроимпульс, возвращаемый как Boolean скаляр. Этот порт обеспечивает последовательный синхросигнал блоку от ведомого устройства.

Типы данных: Boolean

Выход

расширить все

Вывод последовательного синхроимпульса в виде Boolean скаляр. Этот порт обеспечивает последовательный синхросигнал от блока к ведомому устройству.

Типы данных: Boolean

Вывод последовательных данных в виде Boolean скаляр. Этот порт обеспечивает последовательный сигнал данных от блока к ведомому устройству.

Типы данных: Boolean

Сигнал готовности, возвращается как Boolean скаляр. Когда это значение 1 (true), блок готов принять конфигурационные данные. Когда это значение 0 (false), блок не готов принять конфигурационные данные.

Типы данных: Boolean

Регистр данных отклика, содержащий данные из регистра ведомого устройства, возвращенный в виде скаляра.

Типы данных: uint32

Управляющий сигнал, который указывает, действительны ли данные отклика, возвращается как Boolean скаляр. Когда это значение 1 (true), данные отклика из регистров данных отклика действительны. Когда это значение 0 (false), данные отклика из регистров данных отклика недопустимы.

Типы данных: Boolean

Указывает состояние I2C шины, возвращаемое в виде скаляра.

БитЦельОписание значения
[7:4]Зарезервировано

Зарезервировано

3Указывает состояние I2C шины.

Когда это значение 1, это указывает, что I2C шина занята. Когда это значение 0это указывает, что шина I2C находится в режиме ожидания и готова к строению.

2Указывает состояние подтверждения от ведомого устройства до ведущего устройства I2C.

Когда это значение 1, это указывает, что ведомое устройство не подтвердило мастер I2C. Когда это значение 0, это указывает, что ведомое устройство подтвердило мастер I2C.

[1:0]ЗарезервированоЗарезервировано

Типы данных: uint32

Параметры

расширить все

Задайте режим скорости как одно из следующих значений:

  • Standard Mode - Поддерживает частоты до 100 кГц

  • Fast Mode - Поддерживает частоты до 400 кГц

  • Fast Plus Mode - Поддерживает частоты до 1 МГц

Вопросы совместимости

расширить все

Поведение изменено в R2020a

Расширенные возможности

Преобразование с фиксированной точкой
Разрабатывайте и моделируйте системы с фиксированной точкой с помощью Fixed-Point Designer™.

Введенный в R2019a