Таблица 13.1. Условия синхронизации передачи и приема данных через SPI
Значения CPOL и СРНА |
Управление передачей первого бита данных |
Управление передачей остальных битов данных |
Прием (выборка) данных |
CPOL = 0, СРНА = 0 |
До первого фронта (положительного перепада) сигнала SCK |
Спадом (отрицательным перепадом) сигнала SCK |
Фронтом сигнала SCK |
CPOL = 0, СРНА= 1 |
Первым фронтом сигнала SCK |
Фронтом сигнала SCK |
Спадом сигнала SCK |
CPOL=l, СРНА = 0 |
До первого спада сигнала SCK |
Фронтом сигнала SCK |
Спадом сигнала SCK |
CPOL= 1, СРНА= 1 |
Первым спадом сигнала SCK |
Спадом сигнала SCK |
Фронтом сигнала SCK |
Момент начала передачи байта через SPI для конкретного устройства, в общем случае, определяется тем,является ли оно ведущим или ведомым, а также зависит от значения переменной СРНА. Если устройство является ведущим, то оно само определяет конкретный момент начала передачи, когда имеет подлежащий передаче в ведомое устройство байт (или хочет получить байт от ведомого). Для осуществления передачи, ведущее устройство начинает генерировать синхросигнал на своем выходе SCK и синхронно с ним (в соответствии с условиями Табл. 13.1) выдает на линию MOSI подлежащий передаче байт в последовательном виде. Передача заканчивается, когда заканчивается последний тактовый цикл (см. Рис. 13.2).
Если устройство является ведомым и СРНА = 0, то оно начинает передачу, когда внешний сигнал SSEL переходит в активный уровень, и заканчивает, когда этот сигнал возвращается в пассивный уровень (см. Рис. 13.2)!
Если устройство является ведомым и СРНА = 1, то оно начинает передачу по первому фронту внешнего синхроимпульса в случае, если ведомый предварительно выбран активным уровнем внешнего сигнала SSEL, и заканчивает по последнему фронту синхроимпульса, который производит выборку данных (см. Рис. 13.2).
13.3. Детализация периферии SPI
13.3.1. Общая информация
Управление периферийным модулем SPI осуществляется с помощью четырех регистров.
Регистр управления SPI содержит программируемые биты, которые управляют функциями блока SPI. Значения этих битов должны быть установлены до начала обмена в соответствии с заданными параметрами настройки SPI.
Регистр состояния SPI содержит доступные только для чтения биты, которые используются, чтобы контролировать состояние интерфейса SPI, включая штатные функции и исключительные ситуации (ИС). Главное назначение этого регистра состоит в том, чтобы обнаружить завершение передачи данных. Для этой цели предназначен бит SPIF. Прочие биты в этом регистре являются индикаторами исключительной ситуации. Эти ИС будут описаны ниже в этом разделе.
Регистр данных SPI используется для хранения передаваемого и принимаемого байтов данных. Для осуществления фактической передачи и приема последовательных данных в логической схеме блока SPI имеется внутренний сдвиговый регистр. Предназначенные для передачи данные записываются в регистр данных SPI. При этом, фактически производится запись во внутренний сдвиговый регистр, поскольку какой-либо буфер между ним и регистром данных отсутствует. В связи с этим, данные должны записываться в регистр передачи SPI тогда, когда требуется немедленно начать передачу.
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |