Интерфейс i2c и arduino

I2c  интерфейс в arduino

Спецификация аппаратного интерфейса

  1. SD, а именно SDATA: последовательные данные (сопоставленные с выводом MOSI), используемые для отправки или приема данных по двум мультиплексированным каналам данных с временным разделением каналов (только полудуплексный режим).
  2. WS: выбор слова (сопоставлен с выводом NSS), тактовая частота кадров, используемая для переключения данных левого и правого каналов. Частота WS равна частоте дискретизации аудиосигнала (fs).
  3. CK, а именно SCLK: последовательные тактовые импульсы (сопоставленные с выводом SCK), а именно битовые тактовые импульсы, являются последовательным тактовым выходом в ведущем режиме и последовательным тактовым входом в ведомом режиме. Битовая частота = частота дискретизацииКоличество каналовЦифры.
  4. I2S2ext_SD и I2S3ext_SD: дополнительные контакты, используемые для управления полнодуплексным режимом I2S (сопоставлены с контактом MISO).
  5. MCK: основной выход тактового сигнала, также называемый системным тактовым сигналом (Sys Clock), в 256 или 384 раз превышает частоту дискретизации. Иногда, чтобы обеспечить лучшую синхронизацию между системами, когда I2S настроен как ведущий режим (и бит MCKOE в регистре SPI_I2SPR равен 1), используются эти часы. Выходная частота синхросигнала равна 256 × fs, fs — аудио частота дискретизации сигнала (фс).

Время и требования I2S

В шине I2s любое устройство может стать ведущим устройством системы, предоставляя необходимый тактовый сигнал, а ведомое устройство получает свой внутренний тактовый сигнал через внешний тактовый сигнал. Существует задержка распространения между ведущим устройством и данными и сигнал выбора команды. Задержка в основном состоит из двух частей:

  1. Задержка между внешними часами и внутренними часами ведомого устройства
  2. Задержка между внутренними часами и сигналами данных и сигналами выбора команд

Для ввода данных и командных сигналов основная часть задержки — это задержка передачи на передающей стороне и время, необходимое для установки принимающей стороны. Задержка между внешними и внутренними часами не имеет значения, она просто увеличивает эффективное время настройки. T — тактовый цикл, Tr — минимально допустимый тактовый цикл, T> Tr, чтобы отправитель и получатель могли удовлетворить требованиям скорости передачи данных. Для всех скоростей передачи данных отправитель и получатель отправляют тактовый сигнал с фиксированным отношением метки к пространству, поэтому yLC и tHC определяются T Defined. tLC и tHC должны быть больше 0,35T, чтобы сигнал мог быть обнаружен на стороне ведомого устройства. Задержка (tdtr) и самая быстрая скорость передачи (определяемая Ttr) связаны. Сигнал быстрого отправителя на медленном фронте тактового сигнала может привести к тому, что tdtr не превысит tRC и сделает thtr нулевым или отрицательный. Только когда tRC не превышает tRCmax (tRCmax>: 0,15T), отправитель может гарантировать, что thtr больше или равно 0. Чтобы обеспечить возможность записи данных по заднему фронту, передний фронт синхросигнала и временная задержка, связанная с T, должны давать принимающей стороне достаточно времени для настройки. Время установки данных и время удержания не может быть меньше времени установки и времени удержания назначенного приемника.

Data and Clock

The I2C interface uses two bi-directional lines meaning that
any device could drive either line. In a single master system the master device
drives the clock most of the time — the master is in charge of the clock but
slaves can influence it to slow it down (See Slow Peripherals below).

The two wires must be driven as open collector/drain outputs and must be
pulled high using one resistor each (that is one resistor per I2C line i.e.for
data and clock) — this implements a ‘wired NOR function’ — any device pulling
the wire low causes all devices to see a low logic value — for high logic value
all devices must stop driving the wire.

Note : If you use I2C you can not put any other (non I2C) devices on the
bus as both lines are used as clock at some point (generation of START and STOP
bits toggles the data line). So you can not do something clever such as keeping
the clock line inactive and use the data line as a button press detector (to
save pins).

You will often will find devices that you realise are I2C compatible but
they are labelled as using a ‘2 wire interface’. The manufacturer is avoiding
paying royalties by not using the words ‘I2C’!

There are two wires (three if you include ground!, and four if you also
include power!) — but power and ground are taken as given i.e. they are
available on a PCB as needed so don’t really count.

Сраненение PCM5102 или PCM5122 — что лучше

HiFiBerry ранних моделей (DAC) построены ровно на той же микросхеме, что и платы с aliexpress (PCM5102). Новые HiFiBerry (DAC+) — на PCM5122 которая в основном отличается наличием аппаратной регулировки громкости. Если вы регулируете громкость на усилители (и это самый правильный вариант с точки зрения качества звука), то вам эта возможность просто не нужна. При желании регулировать через интерфейс, например, volumio, вы можете включить software volume control — теоретически это снижает качество, но на практике вряд ли вы это заметите.

Вывод на RCA разъемы Вывод на разъем для наушников

Китайцы на них пишут, что это Raspberry Pi HAT-платы, но это не совсем правда. Они подключаются к HAT разъему raspberry pi, но их нельзя просто вставить в него, как HiFiBerry.

В принципе, для подключения паяльник не обязателен, если речь о первом варианте платы и новых raspberry pi (не zero, на которой разъем расширения не распаян) — тогда можно соединить штырьки разъемов с помощью контактных проводов. Найти такие провода можно на aliexpress по строке “wires female to female dupont” — как правило, они цветные, на концах разъемчики (вам нужен вариант female — female).

Пример 1. Обнаружение I2C-устройств.

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

// Подключаем библиотеку
#include <Wire.h>


void setup()
{  
  // Начинаем работу с I2C
  Wire.begin();    
  
  Serial.begin(115200);
  Serial.println("------------------------");
  Serial.println("I2C bus scanning started");

  // Счетчик найденных устройств
  uint8_t foundDevicesCounter = 0;

  for (uint8_t i = 0; i <= 127; i++)
  {
    // Инициируем обмен данными с устройством, адрес которого равен i
    Wire.beginTransmission(i);

    // Завершаем обмен данными
    uint8_t result = Wire.endTransmission();

    // Если результат вызова функции Wire.endTransmission(i) равен 0,
    // значит устройство с адресом i присутствует на шине
    if (result == 0)
    {
      // Устройство найдено, выводим его адрес в Serial Monitor
      Serial.print("Device with address 0x");
      Serial.print(i, HEX);
      Serial.println(" found");

      // Увеличиваем счетчик
      foundDevicesCounter++;
    }
  }

  Serial.println("I2C bus scanning finished");
  Serial.print("Devices found: ");
  Serial.println(foundDevicesCounter);
  Serial.println("------------------------");
}


void loop() 
{
  
}

Суть всей работы заключается в том, что мы вызываем , передавая аргументом в цикле все адреса от 0 до 127 (кстати часть из этих адресов считается зарезервированной, тем не менее пройдем по всем). Затем по результату, возвращаемому функцией , делаем вывод, присутствует ли устройство с таким адресом на шине или нет. И все, остальная часть скетча просто выводит в Serial Monitor разные данные, в том числе адреса обнаруженных устройств и их количество ().

Результат работы скетча, если на шине отсутствуют устройства:

Подключаю ведомого с адресом 0x27:

Slave обнаружен, отлично, следующий пример уже ждет…

Как правильно использовать I2s?

Для правильного использования I2S (Inter-IC Sound) необходимо учитывать несколько факторов:

1. Проверьте поддержку вашего устройства.

Перед началом работы с I2S необходимо убедиться, что ваше устройство, будь то микроконтроллер, микропроцессор или аудио-кодек, поддерживает этот интерфейс.

2. Правильно подключите компоненты.

Для работы с I2S необходимо правильно подключить все компоненты: источник звука, усилитель, аудио-кодек и любые другие устройства, которые вы хотите подключить по этому интерфейсу.

3. Настройте правильные параметры передачи данных.

При работе с I2S необходимо правильно настроить параметры передачи данных, такие как частота дискретизации, разрядность, формат и порядок битов, а также настроить синхронизацию сигналов.

4. Управляйте буферами данных.

При работе с аудио-потоками через I2S необходимо правильно управлять буферами данных, чтобы избежать переполнения или потери данных.

5

Обратите внимание на помехи ишумы

При использовании I2S следует обратить внимание на помехи и шумы, которые могут возникнуть из-за неправильной маршрутизации сигналов или электромагнитных помех. Необходимо проектировать схему и разводку платы таким образом, чтобы минимизировать влияние этих факторов

6. Выберите правильные биты кодирования.

При передаче аудио-сигналов через I2S необходимо выбрать правильные биты кодирования, такие как PCM (Pulse Code Modulation) или DSD (Direct Stream Digital), которые соответствуют требованиям вашего приложения.

Все эти рекомендации помогут вам правильно использовать интерфейс I2S и получить качественное звучание в ваших аудио-проектах.

Data transfer from slave to master

I2C Tutorial : Instruction sequence data from slave to master

A similar process happens when a master reads from the slave but in this
case, instead of W, R is sent. After the data is transmitted from the slave to
the master the master sends the acknowledge (A). If instead the master
does not want any more data it must send a not-acknowledge which indicates to
the slave that it should release the bus. This lets the master send the STOP or
repeated START signal.

Device addresses

Each device you use on the I2C bus must have a unique address.
For some devices e.g. serial memory you can set the lower address bits using
input pins on the device others have a fixed internal address setting e.g. a
real time clock DS1307. You can put several memory devices on the same IC bus
by using a different address for each.

Each device manufacturer is assigned a set of addresses so devices should
not conflict with each other.

Note: The maximum number of devices is limited by the number
of available addresses (and you need non-conflicting addresses) and by the
total bus capacitance (maximum 400pF).

Слайд 2Формат (протокол) передачи данных — набор соглашений интерфейса логического уровня,

которые определяют обмен данными между различными программами. Эти соглашения задают

единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.Каждое устройство на шине I2C должно иметь свой уникальный адрес, но которому к нему можно обратиться. Адрес устройства всегда располагается в определенном месте (в определенных ячейках внутренней памяти). Адрес может быть назначен, а может быть жёстко определен. На шине I2С адреса устройств, называемые SLAVE-адресами, жёстко определены при изготовлении микросхем и не подлежат переназначению, то есть модификации. Иногда, для некоторых микросхем переназначить адрес можно (это делается с помощью 2—3 бит, которые нужно предварительно определить аппаратно, то есть установить перемычки на соответствующие выводы). Значение SLAVE-адреса можно узнать из документации на соответствующую микросхему.Так как все абоненты шины обмениваются данными только по линиям SDA и SCL, то в момент начала передачи все SLAVE-абоненты «слушают» линию на предмет опознавания своего SLAVE-адреса. Опознавший свой адрес абонент продолжает прием данных и выдачу сигналов АСК, остальные только следят за моментом выдачи состояния STOP.

Форматы передачи данных на шине I2C

Для адресации устройств на шине I2C используется два формата адреса: 7-разрядный формат с битом чтения/записи R/W;10-разрядный формат (передаются два байта)

Introduction To I2C Protocol:

The I2C Protocol, pronounced as I-squared-C, is a multi-master, multi-slave, packet-switched single-ended, serial-based synchronous type computer bus protocol invented in 1982 by Philips Semiconductor (Now it is NXP).

The I2C is a serial protocol for a two-wire interface to connect low-speed devices like microcontrollers, EEPROMs, A/D and D/A converters, Automotive vehicle sensors, I/O interfaces and other similar peripherals in embedded systems. Each I2C slave device needs an address which must still be obtained from the NXP.

The I2C bus is very popular because it is very simple to use, there can be more than one master, only upper bus speed is defined and only two wires with pull-up resistors are needed to connect the number of devices. Mostly the maximum number of Slaves can be connected to the BUS depends on the slave address. If the slave address is 7-bit, then the number of slaves that can be connected to the I2C BUS is 2^7 =  128. The I2C can use even slower microcontrollers with general-purpose I/O pins since they only need to generate correct Start and Stop conditions in addition to functions for reading and writing a byte.

Each slave device has a unique address. Transfer from and to the master device is serial and it is split into 8-bit packets. All these simple requirements make it very simple to the implement I2C interface of the even with cheap microcontrollers that have no I2C hardware controller. You only need 2 free I/O pins and few simple i2C routines to send and receive the commands.

The initial I2C specifications of the defined maximum clock frequency of 100 kHz. This was later increased to the 400 kHz as Fast mode. There is also a mode that can go up to 3.4 Mbps and there is also a 5 MHz ultra-fast mode.

I2C BUS Topology

I2C Commands (simplified for communication:

  • Device Address + write bit “To Write” = 0xC0
  • Device Address + read bit “To Read” = 0xC1
  • Command to Write “Convert Pressure and Temperature” = 0x12
  • Command to Read “Pressure ADC High byte” = 0x00
  • Command to Read “Pressure ADC Low byte” = 0x01
  • Command to Read “Temperature ADC High byte” = 0x02
  • Command to Read “Temperature ADC Low byte” = 0x03
  • Command to Read “Coefficient data byte 1 High byte” = 0x04

Влияние I2s на качество звука

Протокол I2S (Inter-IC Sound) играет огромную роль в передаче аудиосигналов между устройствами

Качество звука, получаемого при использовании I2S, зависит от нескольких факторов, которые важно учитывать при разработке или использовании данного протокола

Первое влияние I2S на качество звука — это качество самого аудиофайла. I2S передает аудиоданные без сжатия, поэтому качество и разрешение оригинального аудиофайла будут определять итоговое качество звука. Если исходный файл имеет низкое качество, то даже передача его через I2S не сможет существенно улучшить звучание.

Второе влияние I2S связано с качеством электронных компонентов, используемых в устройствах. Хорошие качественные компоненты (микросхемы, конденсаторы и др.) обеспечивают более точную передачу аудиосигнала и минимальные искажения. Поэтому выбор компонентов имеет большое значение при создании устройств, работающих по протоколу I2S.

Третье влияние I2S связано с качеством передачи сигнала по проводам. Если провода имеют плохое качество или длина кабеля превышает допустимый предел, это может привести к потере качества звука. Чистый и надежный сигнал важен для получения качественного звучания при использовании I2S.

Четвертое влияние I2S связано с шумами и помехами в окружающей среде. Электромагнитные помехи от других устройств или электрических сетей могут повлиять на качество передачи звука через I2S

Поэтому важно обеспечить хорошую экранировку и правильное размещение устройств, чтобы минимизировать воздействие внешних помех на передачу аудиосигнала

В заключение, качество звука, получаемого при использовании I2S, зависит от нескольких факторов, таких как качество исходного аудиофайла, качество компонентов, качество проводов и воздействие внешних помех

Важно учитывать все эти факторы при разработке и использовании протокола I2S для достижения наилучшего качества звука

Why use I2C?

  • The I2C bus is currently still a common communication peripheral used by various circuits and is simple to implement. No matter how many devices are connected to the bus, only two signal lines (clock SCL and data SDA) are needed.
  • It is a true multi-master bus, which is superior to SPI.
  • In addition, the I2C interface is also flexible which allows it to communicate with slow devices while also having high-speed modes to transmit large data. The transmission rate can reach 100kbit/s in standard mode, 400kbit/s in fast mode, and 3.4Mbit/s in high-speed mode;
  • Because of how flexible it is, I2C will always remain as one of the best communication peripheral to connect devices.

What is an I²C? (Signals)

Ref: Circuit Basics

  • I²C stands for Inter-integrated-circuit
  • It is a serial communication interface with a bidirectional two-wire synchronous serial bus normally consists of two wires – SDA (Serial data line) and SCL (Serial clock line) and pull-up resistors.
  • They are used for projects that require many different parts (eg. sensors, pin, expansions, and drivers) working together as they can connect up to 128 devices to the mainboard while maintaining a clear communication pathway!
  • It is used to connect various low-speed devices together like microcontrollers, EEPROMs, A/D and D/A converters, etc.
  • Unlike UART or SPI, I2C bus drivers are open-drain which prevents bus contention and eliminates the chances for damage to the drivers.
  • Each signal line in I2C contains pull-up resistors to restore the signal to a high of the wire when no device is pulling it low.
  • All transfers are initiated and terminated by the “master device”; the “master device” can write data to one or more “slave devices” or request data from the “slave devices”. “Master” and “Slave” are not fixed in the system. In fact, any device can be used as “Master” or “Slave” as long as it is configured with appropriate hardware or firmware.
  • The data is transmitted in one byte, and each byte is followed by a 1-bit handshake signal as the ACK/NACK bit (acknowledgement/no response).

I2C Applications

I2C is a widely used protocol in a variety of applications, including:

Embedded systems: I2C is commonly used in embedded systems to communicate with sensors, displays, and other peripherals. Its simplicity and low power consumption make it an ideal choice for these types of applications.

Industrial automation: I2C is used in industrial automation systems to connect sensors, actuators, and other devices to control and monitor processes.

Consumer electronics: I2C is used in a range of consumer electronics devices, such as smartphones, tablets, and laptops, to communicate with sensors, displays, and other peripherals.

Medical devices: I2C is used in medical devices such as monitoring systems, glucose meters, and portable oxygen concentrators to communicate with sensors and other peripherals.

Automotive: I2C is used in automotive systems to communicate with sensors, displays, and other peripherals, such as in engine control systems, infotainment systems, and safety systems.

Aerospace: I2C is used in aerospace applications to communicate with sensors, displays, and other peripherals, such as in aircraft avionics systems and satellite communication systems.

Применение интерфейса I2s в аудиоустройствах

I2s (Inter-Integrated Circuit Sound) – это цифровой интерфейс, предназначенный для передачи аудиосигнала между различными устройствами. Он широко применяется в аудиоустройствах и оборудовании, где необходима высококачественная передача аудиоинформации.

Основным применением интерфейса I2s является передача аудио данных между аудиопроцессором и цифро-аналоговым преобразователем (ЦАП). Такая связь позволяет осуществлять передачу цифрового аудио сигнала без потерь качества и минимизировать влияние шумов и искажений на итоговый звук.

Кроме того, интерфейс I2s применяется в других аудиоустройствах, таких как аудио-кодеки, аудио-интерфейсы, микрофоны и звуковые модули. Он позволяет осуществлять передачу аудиоинформации между устройствами, обеспечивая высокую точность и надежность передачи сигнала.

Интерфейс I2s также используется в аудиорекордерах, музыкальных инструментах, профессиональных звуковых системах, системах видеонаблюдения и других устройствах, где требуется высококачественное воспроизведение и передача аудиосигнала.

Преимущества применения интерфейса I2s в аудиоустройствах:

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

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

Arbitration in I2C Protocol

For normal data of the transfer on the I2C bus, only one master can be active. If for some reason of the two masters initiate the I2C command at the same time, the arbitration procedure determines which of the master wins and can continue with the command. Arbitration is performed of the SDA signal while the SCL signal is high. Each master of the checks if the SDA signal on the bus corresponds to the generated SDA signal. If the SDA signal on the bus is low but it should be high, then this master has lost the arbitration. Master I2C device that has lost arbitration can generate SCL pulses until the byte ends and must then release the bus and go into slave mode. The arbitration of the procedure can continue until all the data is transferred. This means that in the multi-master system each I2C master of the must monitor the I2C bus for collisions and act accordingly.

Слайд 10Служебные адреса: 0000 010, 0000 011, 0000 1хх 1111

1хх, 1111 0ххотносятся к расширениям шины I2С. Все новые

абоненты, доступные для использования в шинах с расширениями совместимы и со старыми форматами передачи (приема). режим fast-speed с возможностью передачи до 400 кбит/с; режим Hs-mode — до 3,4 Мбит/с;адресация с помощью 10 разрядов, расширенные возможности адресации до 1024 абонентов.Увеличение скорости на шине I2C достигается путём укорочения стробирующего импульса на линии SCL. Поэтому для совместимости со старыми интерфейсами (более медленными) стробирующий импульс может быть продлен до необходимой величины.Работа шины в режиме fast-speed характеризуется следующими важными свойствами:отсутствие совместимости с шиной CBUS, так как эта шина не имеет возможности работать на таких скоростях;наличие входных формирователей (триггеров Шмитта) SDA и SCL линий.

Если элементы, обладающие возможностью работы в режиме fast-speed, обесточены, они не должны влиять на работу шины.

I2s в микроконтроллерах и микросхемах

Протокол I2S широко используется во многих микроконтроллерах и микросхемах, предназначенных для обработки аудиосигналов. I2S (Inter-IC Sound) — это последовательный интерфейс передачи данных для аудиоустройств, который разрабатывался компанией Philips и стал стандартом в данной области. Он позволяет передавать и приемник аудиоданные с высокой скоростью и точностью, что делает его идеальным решением для цифровой аудиообработки и передачи звука.

Микроконтроллеры и микросхемы с поддержкой протокола I2S предоставляют удобный и эффективный способ обработки аудио. Они могут использоваться для создания различных устройств, включая аудиоусилители, аудиорекордеры, звуковые генераторы и многое другое. Поддержка I2S в микроконтроллерах и микросхемах часто означает наличие аппаратной поддержки соответствующих функций, что позволяет значительно ускорить и упростить разработку аудиоустройств.

Преимущества использования I2S в микроконтроллерах и микросхемах:

Высокая скорость передачи данных — I2S позволяет передавать аудиоданные с высокой скоростью, что особенно важно для обработки высококачественного звука.
Низкое энергопотребление — микроконтроллеры и микросхемы с поддержкой I2S часто имеют низкое энергопотребление, что позволяет увеличить время работы устройства от батареи.
Малый размер и масса — благодаря компактности и малому размеру, микроконтроллеры и микросхемы с поддержкой I2S можно легко интегрировать в различные устройства.
Простая и гибкая настройка — I2S имеет простую структуру и легко настраивается для различных задач обработки и передачи аудиоданных.

Микроконтроллеры и микросхемы с поддержкой протокола I2S предоставляют разработчикам удобное решение для обработки и передачи аудио. Они позволяют создавать высококачественные и функциональные аудиоустройства, которые могут быть использованы в различных областях, включая электронику потребительских товаров, профессиональное аудио и другие. Благодаря простоте использования и высокой надежности, I2S стал популярным протоколом для аудиоустройств и активно применяется во многих современных микроконтроллерах и микросхемах.

Синхронно-последовательный интерфейс (SSI)

Synchronous Serial Interface (SSI) – это вид цифрового интерфейса, который используется для передачи данных между устройствами в последовательной форме. SSI является одним из способов связи между различными устройствами, такими как микроконтроллеры, датчики и другие периферийные устройства.

Применение: SSI – широко используется во многих областях, включая:

  1. Промышленная автоматизация: SSI используется для передачи данных от датчиков и измерительных устройств к контроллерам и системам управления производством.
  2. Авионика: В авиационных системах SSI используется для связи между различными аппаратными модулями, такими как гироскопы, акселерометры и другие приборы.
  3. Медицинское оборудование: SSI может применяться для передачи данных с медицинских датчиков и приборов к медицинским системам мониторинга.
  4. Автомобильная промышленность: В автомобильных системах SSI может использоваться для связи между различными компонентами, такими как датчики двигателя и системы управления двигателем.

Достоинства:

  1. Простота и надежность: SSI – это простой и надежный способ передачи данных. Он обеспечивает последовательную передачу данных, что упрощает его реализацию.
  2. Длинные расстояния: SSI может быть использован для передачи данных на значительные расстояния, благодаря тому, что он работает с низкими скоростями передачи данных.
  3. Минимальное потребление энергии: Этот интерфейс может быть эффективным с точки зрения потребления энергии, что делает его подходящим для использования в батарейных устройствах.

Недостатки:

  1. Медленная скорость передачи данных: Одним из основных недостатков SSI является его низкая скорость передачи данных по сравнению с другими интерфейсами, такими как SPI (Serial Peripheral Interface) или I2C (Inter-Integrated Circuit).
  2. Не подходит для большого количества устройств: SSI не подходит для ситуаций, где требуется одновременная связь с большим числом устройств, так как он предназначен для последовательной передачи данных.
  3. Не поддерживает многозадачность: Интерфейс SSI работает в режиме ведущий-ведомый (Master – Slave), что ограничивает возможность многозадачности в системах, где требуется одновременная обработка нескольких задач.

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

Принцип формирования посылки представлен на импульсной диаграмме.

Система управления (контроллер) запрашивает у датчика линейного положения значение текущей координаты, путём посылки импульсной последовательности с периодом «Т» на тактовый вход датчика линейного положения (число тактовых импульсов в последовательности зависит от числа бит, которые необходимо передать).

  1. В режиме ожидания, когда данные не передаются, линия передачи данных и линия синхронизации находятся на высоком уровне.
  2. Данные о текущем положении в виде параллельного кода «m» записываются в сдвиговом регистре с первым падающим фронтом синхронизации. В этом цикле больше невозможно обновить данные о значении текущей координаты.
  3. При следующем восходящем тактовым сигналом, старший значащий бит «MSB» передаётся в систему управления (контроллер).
  4. С каждым последующим восходящим тактовым сигналом производится побитовая передача в контроллер остальных разрядов кода, это происходит до тех пор, пока не будет передан младший значащий бит «LSB».
  5. В момент, когда младший значащий бит «LSB» принимается контроллером, последовательность синхроимпульсов завершается и через интервал времени «tm» (минимум 48 мкс для серии MSI-B и 16 мкс для серии MSI-H, D, F, P*) линия передачи данных и линия синхронизации переходит в высокий логический уровень.

*Справедливо для датчиков выпущенных с начала 2024г.

Осциллограмма SSI протокола (monoflop time 48 микросекунд)

Осциллограмма SSI протокола (monoflop time 16 микросекунд)

В зависимости от области применения могут быть выбраны следующие режимы:Асинхронный режим:В асинхронном режиме датчик скорейшим образом передает положение магнита системе управления. Датчик работает независимо (свободный режим).Синхронный режим:В синхронном режиме происходит согласование сигнала положения датчика циклом опроса системы управления. Ошибка рассогласования минимальна, задержка соответствует времени цикла измеряемой длины.

Логическая схема

Reserved addresses

0000 000 1 START byte — for slow
micros without I2C h/w0000 001 X CBUS address — a different bus protocol0000 010 X Reserved for different bus format0000 011 X Reserved for future purposes0000 1XX X Hs-mode master code1111 1XX X Reserved for future purposes1111 0XX X 10-bit slave addressing

Most of these are not that useful for PIC microcontrollers
except perhaps the START byte and 10 bit addressing.

START (S) and STOP (P) bits

START (S) and STOP (P) bits are unique signals that can be
generated on the bus but only by a bus master.

Reception of a START bit by an I2C slave device resets its
internal bus logic. This can be done at any time so you can force a restart if
anything goes wrong even in the middle of communication.

START and STOP bits are defined as rising or falling edges on
the data line while the clock line is kept high.

Raspberry Pi A/B

На самых-самых ранних Raspberry Pi нужные для ЦАП контакты не выведены ни на какой разъем, но вообще есть на плате, и в интернете вы можете найти соответствующие схему. Вряд ли у вас такая модель, поэтому ниже я о них не пишу.

Если у вас чуть более свежие Raspbery Pi первой модели, но до “+” варианта, то нужные для ЦАП контакты находятся на 8-контактном разъеме P5, размещенном пониже основного 26-контактного разъема расширения P1.

Обычно P5 не распаян. Можете посмотреть видео, как его распаивать на сайте HiFiBerry.

Подробнее о P5 можно прочитать Raspberry Pi P5 Header.

Обратите внимание, что разъем подразумевается к установке с обратной стороны платы (хотя в видео про HiFiBerry его паяют с той же стороны, что и основной разъем расширения). Поэтому четные-нечетные контакты в P5 с противоположной стороны от того, как в основном разъеме P1

Проверить себя, можно померив напряжение — на контакте P5-1 должно быть 5В, на контакте P5-2 3.3В, оба последних контакта P5, P5-7 и P5-8 — земля.

Понравилась статья? Поделиться с друзьями:
Опытный компьютерщик
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: