Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
403
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

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

О применении ЦАП для формирования аналоговых сигналов разной формы см. раздел 3.7.

1.17 Последовательный синхронный приемо-передатчик SPI

1.17.1 Назначение и основы функционирования интерфейса SPI

Интерфейс SPI (Serial Peripheral Interface) представляет собой простейший последовательный синхронный интерфейс, использующий три проводника:

а) тактовый сигнал SCK (Serial Clock);

б) MISO (Master In Slave Out) — вход ведущего, выход ведомого; в) MOSI (Master Out Slave In) — выход ведущего, вход ведомого.

Основу приемопередатчика SPI составляет пара сдвиговых регистров и генератор синхроимпульсов. SPI обеспечивает полнодуплексный режим, то есть возможность одновременного приема и передачи данных. Интерфейс характеризуется сравнительно высокой скоростью передачи данных (десятки Мбит/с). Адресация не поддерживается, так же как и контроль ошибок.

Устройство, подключенное к интерфейсу SPI, может быть ведущим (master) или ведомым (slave). Ведущее устройство является источником тактовых импульсов, а ведомое синхронизируется тактовыми импульсами ведущего. При соединении более двух устройств каждому ведомому поступает сигнал выбора, имеющий активный низкий уровень.

Основное назначение — передача данных между цифровыми программируемыми микросхемами. Простой пример применения SPI — загрузка данными сдвигового регистра. В этом случае МК работает в режиме ведущего, а регистр является ведомым, поскольку не содержит генератора тактовых импульсов. Здесь достаточно всего двух линий МК: синхронизация SCK и выход ведущего MOSI.

Данный раздел посвящен модулю, обозначаемому в инструкции «SPI0». МК LPC2148 оснащен также синхронным последовательным портом

SSP (Synchronous Serial Port), совместимым с интерфейсами SPI, SSP и Microwire (обозначается SPI1). Модуль SSP в данном разделе не рассматривается.

1.17.2 Управляющие регистры

Схема управляющих регистров показана на рисунке 1.17.1 Регистр S0SPCR — основной управляющий регистр.

Бит 2 (BITEN). Установка данного бита в единицу разрешает управление разрядностью. Нулевое значение устанавливает разрядность 8 бит.

Бит 3 (CPHA). При равенстве единице включает сдвиг фаз на один такт между тактовым сигналом и данными. В большинстве случаев требуется сохранить нулевое значение (по умолчанию). Влияние бита на передаваемый сигнал показано на рисунке 1.17.2.

72

 

 

2

C

 

 

 

 

 

 

 

I2CxCONSET – установка состояния I

 

 

 

 

 

 

 

15

8

7

6

5

4

 

3

2

1

0

 

 

 

EN STA STO

SI

AA

 

 

 

 

ВКЛ

Старт/Стоп

 

Подтвержд.

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

Флаг прерывания

 

 

 

C

 

 

 

 

 

 

 

 

I2CxCONCLR – сброс состояния I

 

 

 

 

 

 

 

 

15

8

7

6

5

4

 

3

2

1

0

 

 

 

EN STA

 

 

SI

AA

 

 

 

 

ВКЛ

Старт

 

 

 

Подтвержд.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Флаг прерывания

 

 

I2CxSTAT – состояние I2C

 

 

 

 

 

 

 

 

 

 

15

8

7

 

 

 

 

3

2

 

0

 

 

 

 

STATUS

 

 

 

 

 

 

 

 

 

 

2

C

 

 

 

 

 

 

 

Состояние I

 

 

 

 

Рисунок 1.17.1 – Схема регистров управления приемопередатчиком SPI

● Бит 4 (CPOL). Задает активный логический уровень синхроимпульсов на линии SCK. соответствует высокому активному уровню,

соответствует низкому активному уровню (рисунок 1.17.2).

Рисунок 1.17.2 – Осциллограммы двоичного сигнала 01010101 (0x55), передаваемого по SPI, для разных режимов фазы (CPOL) и полярности синхроимпульсов (CPHA)

Бит 5 (MSTR). Выбор режима: 0 — ведомый, 1 — ведущий.

Бит 6 (LSBF). Определяет порядок передачи битов: 0 — первым передается старший бит; 1 — первым передается младший бит.

Бит 7 (SPIE). Бит разрешения прерывания от модуля SPI. Установка единицы разрешает формирование запроса прерывания при завершении приема/передачи или обнаружении конфликта.

Биты 8–11 (BITS). Биты настройки разрядности (числа передаваемых бит в пакете). Для настройки разрядности необходимо установить бит

73

. Число передаваемых бит совпадает с двоичным кодом BITS.

соответствует пакету 8 бит, — 15 бит,

— 16 бит.

Регистр S0SPDR. Двунаправленный регистр передачи данных. Запись в регистр приводит к началу передачи данных по SPI. Повторная запись допускается только после завершения передачи. На время передачи запись в регистр блокируется.

Чтение регистра дает принятые данные. Отсутствующие старшие разряды заполнены нулями.

Регистр S0SPCCR. Делитель частоты для синхросигнала SPI. Диапазон допустимых значений 8–254. В режиме ведущего на линии SCK будет установлена частота

. (1.17.1)

Внимание! Значение S0SPCCR должно быть четным и не менее восьми. Поэтому частота не может превысить МГц.

Частота равна битовой скорости передатчика (бит/с). Например, популярный сдвиговый регистр 74HC595 допускает частоту синхроимпульсов МГц (в зависимости от производителя).

Регистр S0SPSR отражает состояние приемопередатчика SPI.

Бит 3 (ABRT). Отмена передачи. Бит устанавливается в единицу, если в режиме ведомого передача прерывается переходом в пассивное состояние сигнала SSEL. Бит сбрасывается в ноль при чтении регистра.

Бит 4 (MODF). Ошибка режима. Бит устанавливается в единицу, если в режиме ведущего сигнал SSEL перешел в активное состояние, сигнализируя о том, что на линии есть еще один ведущий. Бит сбрасывается в ноль после чтения данного регистра и записи регистра S0SPCR.

Бит 5 (ROVR). Потеря данных при чтении. Бит устанавливается в единицу, если новый пакет был принят до того, как считан предыдущий из регистра данных S0SPDR. Бит сбрасывается в ноль при чтении регистра.

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

Бит 7 (SPIF). Значение 1 индицирует готовность после передачи. Флаг сбрасывается в ноль после двух действий: чтения регистра S0SPSR и обращению к регистру данных S0SPDR.

Регистр S0SPINT содержит единственный бит — запрос прерывания.

Бит 0 (SPINT). Флаг запроса прерывания. Флаг сбрасывается в ноль путем записи в него единицы.

1.17.3 Передача и прием данных в режиме ведущего

1. Настроить портовые линии на режим SPI через регистры PINSEL0, PINSEL1. В простейшем случае потребуются лишь две линии SCK и MOSI.

74