Последовательный синхронный порт (MSSP)
ПОСЛЕДОВАТЕЛЬНЫЙ СИНХРОННЫЙ ПОРТ (МSSР)
МSSР - ведущий синхронный последовательный порт - для связи с внешними периферийными устройствами и микросхемами (ЕЕРRОМ, АЦП драйверы ЖКИ и т.д.)
МSSР имеет 2 режима:
• Последовательный периферийный интерфейс (SРI)
• I2С.
Выводы МSSР в режиме SРI:
• SDI - вход данных SРI
• SDO - выход данных SРI
• SCK - тактовый сигнал.
Рекомендуемые материалы
• -SS - выбор ведомого.
Основные режимы SPI: ведущий (SСК - выход), ведомый (SСК - вход).
Дополнительные режимы SРI: 4 режима тактирования отличающиеся полярностью и фронтом SСК; управление фазой выборки бита данных: частотой приема/передачи в режиме Маster, режим выбора ведомого в режиме Slave.
Структурная схема модуля в режиме SРI
Регистры SFR, связанные с работой SРI: управления SSРСОN, статуса SSРSТАТ и данных SSРВUF.
Регистр SSРСОN:
WCOL | SSPOV | SSPEN | CKP | SSPM3 | SSPM2 | SSPM1 | SSPM0 |
Бит 7 | Бит 0 |
WCOL: Флаг - Режим "ведущий" 1/0 - конфликт - попытка записи SSРВUF во время передачи/нет конфликта; "ведомый" 1/0 - конфликт - запись в SSРВUF во время передачи байта/нет конфликта;
SSPOV: 1/0 - есть/нет переполнение SSРВUF (при передаче значения не имеет);
SSPEN: 1/0 - включение/выключен не последовательного порта;
CKP: 1/0 - полярность тактирующих импульсов, ожидание высокий/низкий уровень;
SSPM3… SSPM0: режим работы последовательного порта (ведущий/ведомый, SPI/I2C) и скорость передачи данных.
Регистр SSРSТАТ:
SMP | CKE | D/-A | P | S | R/W | UA | BF |
Бит 7 | Бит 0 |
SMP: 1/0 - входные данные защелкиваются в конце/середине выходных
СКЕ: Для режима SРI: при СКР=0: 1/0 - данные передаются по фронту/падению тактового импульса; при СКР=1: 1/0 - данные передаются по падению/фронту тактового импульса. Для режима I2C: 1/0 - уровни на шине соответствуют спецификации Smbus/ I2C
D/-A: последний принятый или переданный байт - данные/адрес (I2С)
Р: последний принятый бит - SТОР (I2C)
S: последний принятый бит - SТАRТ (I2C)
R/W: чтение/запись (действителен при совпадении адреса и до принятия битов SТАRТ, SТОР или АSК)
UA: обновить/нет адрес в регистре SSРАDD (10 разрядный I2C)
BF: буфер SSРВUF заполнен/пуст (при передаче - I2C). 1 - прием завершен/идет передача, 0 - идет прием/завершена передача.
Для передачи байта необходимо записать его в регистр SSРВUF. Во время приема информация записывается в регистр SSРSR и по его окончанию перемещается в регистр SSРВUF с одновременной установкой флага ВF. Запись в регистр SSРВUF во время осуществления передачи/приема игнорируется, однако при этом устанавливается бит WCOL сигнализирующий о коллизии. Для передачи следующего байта содержимое регистра SSРВUF должно быть прочитано, иначе не произойдет аппаратный сброс флага ВF и передача производится не будет.
Временные диаграммы работы MSSP
Пример соединения двух МК через SPI
Режим I2C последовательного порта MSSP.
Порт I2C
R/W = 0/1 - Запись/Чтение;
Start/Stop - стартовая/стоповая комбинация;
АSК - подтверждение (низкий уровень);
Not ASK - без подтверждения; Адрес ведомого - 7 бит
Формат кадра
Порядок шагов «ведущий передатчик». Ведущий -
1) обнаруживает свободное состояние шины
2) формирует на шине Start-состояние
3) выставляет адрес ведомого, ожидая АSК от адресованного ведомого.
4) передает байты данных, ожидая АSК после каждого байта.
5) формирует на шине Stop -состояние.
Порядок шагов «ведущий приемник» такой же, но ведущий принимает байты данных, посылая АSК в ведомый передатчик после каждого байта и выставляя Not ASK после получения последнего байта.
Порт МSSР в режиме I2C поддерживает все функции ведущих и ведомых устройств, поддержку общего вызова, аппаратные прерывания по обнаружению состояния на шине I2C-bus.
Поддерживает 7-10 разрядные адреса ведомых устройств. Имеет фильтры на 100 и 400 кГц для повышения помехоустойчивости.
Для работы используются 2 вывода: SDA – данные и SCL – синхросигнал.
Регистры, связанные с работой MSSP в режиме I2C:
• SSPCON, SSPCON2 – управления
• SSPSTAT – состояния
• SSPBUF – буфер данных
• SSPSR – внутренний сдвиговый регистр
• SSPADD – адреса.
Режимы I2C:
• ведомый, 7-разрядный адрес (в SSDADD – адрес)
• ведомый, 10-разрядный адрес (в SSDADD – адрес)
• ведущий, тактовая частота = Fosc/4/(SSDADD+1)
• программная поддержка ведущего режима (для совместимости)
Включается установкой 5-го бита (SSPEN) регистра SSPCON.
SSPSTAT содержит биты: обнаружение START, STOP, флаг приема данных/адреса, указатель загрузки старшего байта адреса, бит операции (прием/передача).
Все операции по реализации протокола I2C должны быть реализованы программно с помощью управляющих и статусных битов, так как MSSP осуществляет только аппаратную поддержку.
Структурная схема модуля MSSP в режиме I2C
Регистр управления SSPCON2
GSEN | ASKSTAT | ASKDT | ASKEN | RCEN | PEN | RSEN | SEN |
Бит 7 | Бит 0 |
GSEN: разрешить прерывание при приеме адреса 0000h – общего вызова (Slave)
ASKSTAT: передача ведущего, 1/0 – нет/есть сигнал ASK от ведомого (Master)
Ещё посмотрите лекцию "6. Общая структура КИС" по этой теме.
ASKDT: прием ведущего, 1/0 – передать/нет ASK ведомому (Master).
ASKEN: сформировать сигнал ASKDT; аппаратно сбрасывается (Master).
RCEN: разрешить прием данных (Master).
PEN: сформировать STOP (Master).
RSEN: сформировать второй START (Master).
SEN: сформировать START (Master).