exponenta event banner

I2C Мастер

Настройка и взаимодействие с I2C ведомым устройством

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

  • I2C Master block

Описание

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

Главный блок I2C поддерживает следующие функции:

  • Поддержка интерфейса 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. Эта таблица содержит Основную AXI-облегченную информацию о регистре I2C.

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

32

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

32

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

32

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

32

Написать
0x110readDone - регистр Read done32Написать
0x114выполнено - Выполнен регистр

32

Написать
0x118rdy - Готовый регистр32Читать
0x11CrespData - Регистр данных первого ответа32Читать
0x120validData - регистр допустимых данных ответа32Читать
0x124startReg - Регистр состояния32Читать

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

Последовательность чтения

Для считывания данных с внешнего ведомого устройства:

  1. Пришлите информацию о регистре, относящемся к "" ".

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

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

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

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

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

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

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

Для записи данных на внешнее подчиненное устройство:

  1. Пришлите информацию о регистре, относящемся к "" ".

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

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

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

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

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

В последовательности записи, один набор регистровой информации представляет собой комбинацию регистров, связанных с "" "," "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

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

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

Сигнал выполнен, указан как 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 Master. Когда это значение равно 0, это указывает на то, что ведомое устройство подтвердило I2C Master.

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

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

Параметры

развернуть все

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

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

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

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

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

развернуть все

В R2020a изменилось поведение

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

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

Представлен в R2019a