Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС (Влада).docx
Скачиваний:
104
Добавлен:
05.05.2021
Размер:
4.89 Mб
Скачать

4 Режима работы spi:

CPHA = 0 (по умолчанию) передача по переднему фронту (установка)

CPHA = 1 передача по заднему фронту

[Из лекции рассуждения (ПОЧЕМУ ОБМЕН)]

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

Та порция данных, которая была в регистре ведущего, оказывается в регистре ведомого.

[Также дополнительная информация из лекции]

Что делать если хотим только записать данные и не считывать?

Регистр сдвига имеет двойную буферизацию. Данные поступают в промежуточный регистр. Поэтому…

Если хотим только записать, то порцию данных оставляем без внимания (она в буфере будет сидеть). При следующих итерациях, она перезапишется.

А если хотим только считать?

Чтобы получить порцию данных, надо что-то отдать. В даташите датчика/устройства в разделе связанном с SPI есть комбинации, которые нужно передать, чтобы получить порцию данных.

Типы подключения к шине SPI:

18. Интерфейс i2c. Протокол передачи данных, режимы работы. Основные преимущества и недостатки интерфейса.

I2C (Inter-Integrated Circuit — примерно «Схема внутренней связи» =), читается “и-два-цэ” — последовательная шина выдуманная в недрах Philips ещё в 80-х годах прошлого века.

2-wire Serial Interface (двухпроводной последовательный интерфейс)

Интерфейс I2C использует всего две линии: SCL (Serial Clock) и SDA (Serial Data).

SCL предназначена для передачи синхроимпульсов (они формируются тем устройством, которое в настоящий момент передает данные), а SDA – для передачи самих данных и команд, управляющих этим процессом. Обе линии требуют подключения «подтягивающих» резисторов сопротивлением 1-10 кОм.

Для примера на рисунке ниже показана структурная схема:

Процесс передачи данных

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

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

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

В конце передачи ведущее устройство прекращает генерацию синхроимпульсов; в результате на линии SCL благодаря подтягивающему резистору устанавливается напряжение высокого уровня, после этого отключается передатчик, из-за чего устанавливается высокий уровень на линии SDA, т.е. повторяется ситуация, обратная той, что наблюдалась перед началом передачи.

[Это скорее для «почитать»]В отличие от интерфейса RS-232, передача данных производится начиная со старшего бита. После передачи последнего (восьмого) бита каждого байта во время действия очередного синхроимпульса передатчик отключается от линии SDA, чтобы дать возможность приемнику подтвердить получение данных. Для этого приемник должен выставить на линии SDA сигнал низкого уровня.

Протокол передачи данных

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

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

Устройство мастер должно знать эти адреса, чтобы общаться с конкретным ведомым устройством

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

Метки «ведущий/master» и «ведомый/slave» по своей сути непостоянны: любое устройство может функционировать и как ведущее, и как ведомое устройство, если оно содержит необходимое аппаратное и/или программное обеспечение. На практике, однако, встраиваемые системы часто используют архитектуру, в которой один мастер отправляет команды или собирает данные с нескольких ведомых устройств.

Сигнал данных обновляется по заднему фронту тактового сигнала, а его выборка происходит по переднему фронту.

Данные передаются в однобайтовых секциях, причем каждый байт сопровождается однобитным сигналом подтверждения, называемым битом ACK/NACK (подтверждение или неподтверждение)

Пакет данных:

Во-первых, данные считываются только при единичном состоянии SCL, а меняться могут, только при нулевом состоянии SCL (выставили-держим-протолкнули-выставили следующий-держим-...).

Во-вторых, данные идут головой вперёд — начиная со старшего бита

7 битов адреса, восьмой — признак R/W — если хотим прочитать данные – «1», записать – «0». Прожевав восьмой бит, ведомая микросхема должна сказать уверенное “Ага”, если всё понятно – послать сигнал подтверждения (ack, acknowledge), прижав линию SDA (отпущенную ведущим) на время 9-го такта на SCL. Если ack нет (называется nack) – значит ведомому что-то не понятно, тогда нужно сформировать СТОП и повторить передачу. Затем, мастер либо посылает байт данных ведомову, и снова дожидается подтверждения, либо принимает от него байт и уже сам выдаёт подтверждение.

Байт данных может быть несколько, но все они когда-нибудь закончатся, и мастер должен будет сформировать СТОП-условие (P). Для этого надо отпустить линию SDA, не трогая SCL.

Либо

Преимущества интерфейса I2C

  • необходим всего один микроконтроллер для управления набором устройств;

  • используется всего два проводника для подключения многих устройств;

  • возможна одновременная работа нескольких ведущих (master) устройств, подключенных к одной шине I2C;

  • стандарт предусматривает «горячее» подключение и отключение устройств в процессе работы системы;

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

Недостатки интерфейса I2C

  • ограничение на ёмкость линии — 400 пФ;

  • несмотря на простоту протокола, программирование контроллера I2C затруднено из-за изобилия возможных нештатных ситуаций на шине. По этой причине большинство систем используют I²C c единственным ведущим (master) устройством и распространённые драйверы поддерживают только монопольный режим обмена по I2C;

  • трудность локализации неисправности, если одно из подключенных устройств ошибочно устанавливает

8

Соседние файлы в предмете Микропроцессорные системы