Опубликован: 24.11.2024 | Доступ: свободный | Студентов: 2 / 0 | Длительность: 05:47:00
Лекция 7:

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

< Лекция 6 || Лекция 7: 1234567

Последовательный периферийный интерфейс (SPI)

Простейшей формой последовательной связи было бы соединение двух сдвиговых регистров, содержащихся в двух отдельных устройствах. Именно так реализован последовательный периферийный интерфейс. Он состоит из регистра сдвига и некоторых выводов ввода/вывода для каждого устройства. Он широко известен как SPI (произносится как "СПАЙ").

Допустим, мы хотим соединить контроллер с периферийным устройством. Контроллер содержит сдвиговый регистр, и его выход подключен к последовательному входу периферийного устройства. Периферийное устройство на другом конце имеет соответствующий сдвиговый регистр, способный таким же образом отправлять данные обратно на контроллер. Микроконтроллер обычно является ведущим устройством этой сети, поэтому он выдает свой собственный тактовый сигнал для сдвига и некоторые линии выбора для адресации конкретного ведомого устройства. Таким образом, помимо линии заземления, SPI использует 3 сигнальные линии: MISO (Master In Slave Out), MOSI (Master Out Slave In) и линия Clock, которая управляется ведущим устройством. Если используется, ведущий также управляет линиями выбора ведомого устройства (SS).

На следующей схеме показано простое SPI-соединение между контроллером и периферийным устройством.

Простая сеть SPI (взято из SparkFun Electronics, предоставлено под CC BY 2.0)

Рис. 6.5. Простая сеть SPI (взято из SparkFun Electronics, предоставлено под CC BY 2.0)

Создание сети SPI с более чем одним ведомым устройством требует наличия GPIO для выбора ведомого устройства, с которым должен общаться ведущий. Это обычно считается недостатком SPI.

Здесь мы имеем сеть SPI с одним ведущим и тремя ведомыми устройствами:

Сеть SPI с одним ведущим и тремя ведомыми устройствами (взято из Wikimedia Commons, Cburnett, предоставлено по лицензии CC BY-SA 3.0)

Рис. 6.6. Сеть SPI с одним ведущим и тремя ведомыми устройствами (взято из Wikimedia Commons, Cburnett, предоставлено по лицензии CC BY-SA 3.0)

Чтобы узнать больше о SPI, вы можете прочитать руководство от SparkFun.

Переопределение названий сигналов SPI

SPI различает элемент, управляющий коммуникацией, и периферийные устройства, которые к нему подключены. С момента своего появления в 1979 году эти элементы были известны как Master и Slaves, но недавнее движение предложило перейти к более описательным названиям, которые не делают ненужных ссылок на рабство. В связи с этим новое предложение заключается в использовании терминов Controller вместо master и Peripheral вместо slave.

В SparkFun есть подробное объяснение этого переопределения имен сигналов. Это предложение было сделано недавно, а изменения требуют времени, поэтому в большинстве документации по SPI, которую вы найдете, вероятно, будут использоваться термины MISO и MOSI. Например, в руководстве по FE310 до сих пор используются эти термины.

Асинхронная последовательная связь (UART)

UART означает универсальный асинхронный приемник-передатчик, который является классическим последовательным интерфейсом связи, доступным в старых компьютерах. Вы можете подключиться к последовательному порту вашего компьютера через интерфейс COM-порта с помощью приложения-эмулятора терминала, такого как PuTTY или Tera Term.

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

Но как синхронизируются передатчик и приемник?

Они следуют протоколу. Вот он для 8-битной передачи:

  • Связь осуществляется в одну сторону по линии передачи данных, поэтому есть передатчик и приемник.
  • Линия данных начинается в состоянии ожидания, которое равно 1, или высокому уровню.
  • Когда передатчик хочет начать передачу, он подает на линию данных низкий уровень в течение определенного времени. Этот 0 известен как стартовый бит.
  • Эта длительность известна как время 1 бита, которое является обратной величиной согласованной частоты для сдвига битов. Эта частота соответствует скорости передачи данных. В данном типе связи эта скорость передачи данных также известна как скорость в бодах. Двумя очень распространенными скоростями передачи данных являются 9600 бит в секунду и 115 200 бит в секунду, для которых требуется тактовый сигнал передатчика 9,6 кГц и 115,2 кГц соответственно.
  • Далее 8 битов данных по очереди передаются по линии, каждый из которых занимает 1 бит. Обычно наименее значимый бит (LSB) идет первым.
  • После передачи всех 8 битов данных передатчик подает высокий уровень на линию данных в течение 1 бита. Это называется стоп-битом.

Следующая временная диаграмма показывает передачу байта 0x55 с использованием логики TTL (5 В для высокого уровня и 0 В для низкого):

Временная диаграмма асинхронной 8-битной последовательной передачи (взято из SparkFun Electronics, предоставлено по CC BY-SA 4.0)

Рис. 6.7. Временная диаграмма асинхронной 8-битной последовательной передачи (взято из SparkFun Electronics, предоставлено по CC BY-SA 4.0)

В протоколе есть 4 основных параметра:

  1. Скорость передачи данных. Список вариантов очень длинный: 9600 бод, 19200 бод, 115 200 бод и так далее.
  2. Количество битов для передачи. Обычно это 8 бит, но может быть от 5 до 9 бит.
  3. Тип четности: Четная четность, нечетная четность или отсутствие четности.
  4. Длительность стоп-бита: 1, 1,5 или 2 длительности бита.

Эти параметры фиксированы в системе, поэтому они не должны меняться во время выполнения.

Чтобы узнать больше об асинхронной последовательной связи, вы можете прочитать учебное пособие от SparkFun.

< Лекция 6 || Лекция 7: 1234567