Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stenin Lab / C8051F60-67-устройство МК.pdf
Скачиваний:
150
Добавлен:
10.02.2015
Размер:
5.19 Mб
Скачать

C8051F060/1/2/3/4/5/6/7

21.2. Функционирование SPI0 в ведущем режиме

Все сеансы обмена данными по SPI шине инициируются ведущим устройством. Модуль SPI0 переводится в ведущий режим работы установкой в 1 флага включения ведущего режима (MSTEN, SPI0CN.6). Если модуль SPI0 работает в ведущем режиме, то запись байта данных в регистр данных модуля SPI0 (SPI0DAT) вызовет загрузку буфера передатчика. Если сдвиговый регистр модуля SPI0 пуст, то в него загружается байт из буфера передатчика и начинается передача данных. Ведущий SPI сразу же начинает последовательно сдвигать данные на линию MOSI, выдавая тактовые импульсы на линию SCK. По окончании передачи устанавливается в 1 флаг SPIF (SPI0CN.7). Если прерывания разрешены, то при установке флага SPIF генерируется запрос прерывания. В полнодуплексном режиме работы в то время, когда ведущий SPI передает данные ведомому по линии MOSI, адресуемый ведомый одновременно передает содержимое своего регистра сдвига ведущему SPI по линии MISO. Поэтому флаг SPIF является как флагом окончания передачи, так и флагом готовности принимаемых данных. Байт данных, принимаемый от ведомого устройства, передается старшими значащими разрядами вперед в сдвиговый регистр ведущего. После полной загрузки сдвигового регистра полученный байт данных переписывается в буфер приемника, откуда он может быть считан процессором путем чтения регистра SPI0DAT.

Когда модуль SPI0 настроен как ведущий, он может работать в одном из трех различных режимов:

-режим работы с несколькими ведущими;

-3-х проводный режим работы с одним ведущим;

-4-х проводный режим работы с одним ведущим.

Активным по умолчанию является режим работы с несколькими ведущими, когда NSSMD1 (SPI0CN.3)

=0 и NSSMD0 (SPI0CN.2) = 1. В этом режиме NSS функционирует как вход и используется для отключения ведущего SPI0 в то время, когда другой ведущий пытается получить доступ к шине. Если в этом режиме на вход NSS подается сигнал низкого логического уровня, то сбрасываются в 0 биты MSTEN (SPI0CN.6) и SPIEN (SPI0CN.0), выключая тем самым ведущий модуль SPI0, и устанавливается в 1 флаг ошибки режима MODF (SPI0CN.5). При установке флага ошибки режима будет сгенерировано прерывание, если оно разрешено. При данных обстоятельствах требуется программно вновь включить модуль SPI0. В системе с несколькими ведущими любое устройство обычно по умолчанию становится ведомым устройством, если только оно не функционирует как ведущее устройство системы. В режиме с несколькими ведущими ведомые устройства можно адресовать индивидуально (при необходимости), используя порты ввода/вывода общего назначения. На рис.21.2 приведена схема соединений между двумя ведущими устройствами в режиме с несколькими ведущими.

3-х проводный режим работы с одним ведущим активен тогда, когда NSSMD1 (SPI0CN.3) = 0 и NSSMD0 (SPI0CN.2) = 0. В этом режиме NSS не используется и не разводится на внешний вывод порта с помощью матрицы. Все ведомые устройства, которые требуется адресовать в этом режиме работы, необходимо выбирать с помощью портов ввода/вывода общего назначения. На рис.21.3 приведена схема соединений между ведущим и ведомым устройствами в 3-х проводном режиме.

4-х проводный режим работы с одним ведущим активен тогда, когда NSSMD1 (SPI0CN.3) = 1. В этом режиме NSS функционирует как выход и может использоваться как сигнал выбора ведомого для одного устройства SPI. Логический уровень сигнала на выходе NSS определяется битом NSSMD0 (SPI0CN.2). Другие ведомые устройства можно адресовать с помощью портов ввода/вывода общего назначения. На рис.21.4 приведена схема соединений между одним ведущим и двумя ведомыми устройствами в 4-х проводном режиме.

253

Ред. 1.2

C8051F060/1/2/3/4/5/6/7

Рисунок 21.2. Схема включения в режиме с несколькими ведущими

Ведущее устройство 1

NSS GPIO MISO MISO MOSI MOSI SCK SCK GPIO NSS

Ведущее устройство 2

Рисунок 21.3. Схема соединения одного ведущего и одного ведомого с использованием 3-х проводной шины SPI

Ведущее

 

 

 

Ведомое

устройство MISO

 

 

 

MISO устройство

 

 

 

MOSI

 

 

 

MOSI

 

 

 

SCK

 

 

 

SCK

 

 

 

 

 

 

 

 

Рисунок 21.4. Схема соединения одного ведущего и нескольких ведомых с использованием 4-х проводной шины SPI

Ведущее

MISO

 

 

 

MISO

Ведомое

 

 

 

устройство

MOSI

 

 

 

MOSI

устройство

 

 

 

 

SCK

 

 

 

SCK

 

 

 

 

 

 

GPIO

NSS

 

 

 

NSS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MISO Ведомое

MOSI устройство

SCK

NSS

Ред. 1.2

254