Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Синхронные последовательные интерфейсы.



Синхронные последовательные интерфейсы.

 

Методические указания к лабораторной работе № 4 по курсу “Вычислительная техника и информационные технологии” для студентов 4 курса факультета Радиотехники электроники и физики (специальность 201200) дневного отделения

 

 

Новосибирск 2007г.

 

Новосибирский государственный технический университет

 

 

УДК ХХХХ

 

 

Составитель:           Кривецкий А.В., доцент, к.т.н.

 

Рецензент:      Денисов А.Н., доцент

 

Работа подготовлена на кафедре конструирования и технологии РЭС

Цель работы

Изучение принципов последовательной передачи данных в микропроцессорных системах, а также архитектуры модуля мастера последовательного синхронного порта (MSSP) восьмиразрядных однокристальных микроконтроллеров PIC 16 F 877, разработка простейшего протокола обмена между микроконтроллером отладочного модуля MPLAB - I C D Demo Board и периферийным модулем.

        

Последовательные синхронные интерфейсы

Расширению областей применения микроконтроллеров в технике способствует развитие рынка “интеллектуальных” микроэлектронных приборов, поддерживающих возможность информационной связи между отдельными конструктивными и функциональными узлами аппаратуры. Такую возможность обеспечивают программно-аппаратные решения в виде интерфейсов или портов. Последовательные интерфейсы для передачи данных, как правило, делят на два типа – асинхронные, используемые для связи микропроцессорных систем на расстояниях от нескольких метров до нескольких километров, и – синхронные, используемые для связи микропроцессора с расположенными конструктивно “близко” (от нескольких сантиметров до нескольких метров) периферийными приборами и устройствами. Именно синхронные последовательные интерфейсы позволяют значительно сократить количество сигнальных линий, объединяющих микропроцессор и различные модули ввода-вывода на одном печатном узле мобильного телекоммуникационного или измерительного прибора. Характерной особенностью синхронных интерфейсов является применение сигналов TTL/CMOS (5 вольт) и TTL/CMOS (3.3 вольт) соглашений.



Интерфейс SPI

Интерфейс SPI (Serial Peripheral Interface), он же Microwire, — трехпроводный синхронный с раздельными линиями входных и выходных данных — применяет­ся для связи микроконтроллеров с периферийными микросхемами и микросхе­мами памяти. С его помощью программируются многие микросхемы программи­руемой логики (например, FPGA фирмы Altera), применяемые в различных узлах ПК и периферии. По сравнению с 12С интерфейс SPI обеспечивает более высо­кую скорость передачи данных. Частота синхронизации может достигать 60 МГц (зависит от подключаемых устройств); при этом за каждый такт синхрониза­ции одновременно может и передаваться, и приниматься очередной бит данных. В основном варианте использования предполагается, что интерфейс соединя­ет одно ведущее устройство с одним или несколькими ведомыми устройствами. Интерфейс может применяться и для обмена между несколькими микроконтрол­лерами, допуская наличие на шине нескольких ведущих устройств, но протокол предоставления доступа не стандартизован. Ниже рассматривается работа ин­терфейса с одним ведущим устройством. В интерфейсе используются 3 обязатель­ных сигнала:

♦ SCK (Serial Clock) — синхросигнал, которым ведущее устройство стробирует каждый бит данных;

♦ MOSI (Master Output Slave Input) — выходные данные ведущего устройства и входные данные ведомого устройства;

♦ MISO (Master Input Slave Output) — входные данные ведущего устройства и вы­ходные данные ведомого устройства.

    Кроме того, может использоваться сигнал выбора ведомого устройства SS# Slave Select, или CS# — Chip Select): ведомое устройство должно реагировать на сигна­лы интерфейса и генерировать выходные данные на линии MISO только при низ­ком уровне этого сигнала; при высоком уровне выход MISO должен переводиться в высокоимпедансное состояние. С помощью сигналов SS#, раздельно формиру­емых ведущим устройством для каждого из ведомых устройств, ведущее устрой­ство может выбирать партнером в транзакции одно из ведомых. При этом получа­ется гибридная топология соединений: по сигналам SCK, MOSI и MISO — топология шинная, по SS# — звездообразная (центр — ведущее устройство).

Возможен и иной способ общения ведущего устройства с несколькими ведомыми устройствами с чисто шинной топологией. Здесь сигнал SS# для выбора устройств не используется, но ведомые устройства все время «слушают» шину, ожидая спе­циальной адресной посылки в начале транзакции. Опознав свой адрес, устройство отрабатывает дальнейшие протокольные посылки, и теперь ему разрешается вы­водить данные на линию MISO до конца текущей транзакции. Однако этот вари­ант требует довольно сложной логики поведения ведомого устройства.

Рис. 1. Форматы передач по интерфейсу SPI

 

Данные передаются старшим битом вперед. Устройства различных производителей могут использовать разные режимы обмена (SPI Mode 0... SPI Mode 3), различа­ющиеся фазой и полярностью синхросигналов. Рис.1 иллюстрирует переда­чу и прием байта в различных режимах. Заметим, что в любом режиме входные и выходные данные стробируются по разным перепадам синхроимпульсов. Кроме того, есть варианты в использовании сигнала SS#. В первом варианте (он и пред­ставлен на рисунке) для ведомого устройства признаком начала транзакции явля­ется спад сигнала SS#, а завершения — его подъем. Во втором варианте начало транзакции определяется по первому фронту (спаду) SCK, а сигнал SS# может иметь низкий уровень постоянно. Второй вариант иногда предпочитают для простей­шего двухточечного интерфейса с единственным ведущим устройством и единственным ведомым устройством, когда нет опасения потери синхронизации. Микроконт­роллеры с аппаратным портом SPI, как правило, имеют возможность программ­ного выбора режима. Форматы транзакций зависят от устройств, но общая идея такова: ведущее устройство по линии MOSI посылает код операции и адресную информацию для устройства; затем следуют данные. В операции записи они пе­редаются ведущим устройством по той же линии, в операции чтения устройство их посылает по линии MISO. На время всей транзакции ведущее устройство со­храняет активное состояние линии SS#, число требуемых синхроимпульсов зави­сит от формата команды.

 

Модуль MSSP . Режим SPI

В SPI режиме возможен одновременный синхронный прием/переда 8-разрядных данных. Модуль MSSP поддерживает четыре режима SPI с типовым использованием трех выводов микроконтроллера:

· Вход последовательных данных (SDI);

· Выход последовательных данных (SDO);

· Тактовый сигнал (SCK).

Дополнительно может быть задействован четвертый вывод для работы в режиме ведомого. Выбор ведомого (-SS).

При инициализации SPI необходимо определить параметры работы битами SSPCON<5:0>, SSPSTAT<7:6>.

Управляющие биты определяют следующие параметры работы:

· Ведущий режим (SCK выход);

· Ведомый режим (SCK вход);

· Полярность тактового сигнала (пассивный уровень SCK);

· Фаза выборки входных данных (в середине или конце передачи бита);

· Активный фронт тактового сигнала (передний, задний);

· Частота тактового сигнала (только в ведущем режиме);

· Режим выбора ведомого (только в режиме ведомого).

На Рис.2 показана структурная схема модуля MSSP в SPI режиме.

Для включения модуля MSSP необходимо установить бит SSPEN (SSPCON<5>) в '1'. Для сброса или перенастройки режима SPI рекомендуется сбросить бит SSPEN в '0', выполнить изменения параметров работы, а затем вновь установить бит SSPEN в '1'. После включения MSSP в режиме SPI выводы SDI, SDO, SCK, -SS используются последовательным портом. Для корректной работы последовательного порта биты регистров TRIS должны быть настроены следующем образом:

· SDI, автоматически управляется SPI модулем;

· SDO, бит TRISC<5> должен быть сброшен в '0';

· SCK (ведущий режим), бит TRISC<3> = 0;

· SCK (ведомый режим), бит TRISC<3> = 1;

· -SS, бит TRISA<5> = 1, в регистре ADCON1 вывод RA5 должен быть настроен как цифровой порт ввода/вывода.

Рис. 2. Структурная схема модуля MSSP в SPI режиме.

 

 

Режим ведущего SPI

Ведущий шины может инициализировать передачу данных в любой момент, поскольку он генерирует тактовый сигнал, и определяет когда ведомый должен передать данные в соответствии с используемым протоколом. В режиме ведомого данные передаются/приняты после их записи/чтения из регистра SSPBUF. Если в SPI режиме требуется только принимать данные, вывод SDO может быть заблокирован (настроен как вход). Данные с вывода SDI последовательно сдвигаются в регистр SSPSR с установленной скоростью. Каждый принятый байт загружается в регистр SSPBUF (как нормально полученный байт) с формированием прерываний и воздействием на соответствующие биты статуса. Эта функция может быть полезна при реализации "монитора шины".

Полярность тактового сигнала устанавливается битом CKP (SSPCON<4>), что позволяет получить различные методы передачи данных (см. Рис.3). Данные всегда передаются старшим битом вперед. В ведущем режиме частота тактового сигнала выбирается программно:

· FOSC/4 (или TCY);

· FOSC/16 (или 4 x TCY);

· FOSC/64 (или 16 x TCY);

· Выход таймера TMR2 / 2.

· Максимальная частота передачи данных 5МГц при тактовой частоте микроконтроллера 20МГц.

 

Бит CKE определяет по какому фронту тактового сигнала необходимо выполнять прием данных. Параметры выборки входных данных устанавливаются битом SMP. Поле загрузки принятых данных в регистр SSPBUF устанавливается флаг прерываний SSPIF в '1'.

Рис. 3. Временная диаграмма работы модуля MSSP в режиме ведущего SPI

Режим ведомого SPI

В режиме ведомого данные передаются/принимаются по внешнему тактовому сигналу на выводе SCK. Когда принимается последний бит байта, устанавливается в '1' флаг прерываний SSPIF (PIR1<3>). Внешний тактовый сигнал должен удовлетворять требованиям длительности низкого и высокого логического уровня, описанным в разделе электрических характеристик.

В SLEEP режиме микроконтроллера ведомый может принимать/передавать данные. После приема данных микроконтроллер выходит из режима SLEEP.

Примечания:

1. В режиме ведомого SPI с поддержкой выбора ведомого по сигналу на выводе –SS (SSPCON<3:0>=0100), SPI модуль сброшен, если на выводе -SS напряжение питания VDD.

2. В режиме ведомого SPI и CKE = 1, необходимо разрешить управление с вывода.

Рис.4. Временная диаграмма работы модуля MSSP в режиме ведомого

Таблица 1. Регистры и биты, связанные с работой модуля MSSP в режиме SPI

Адрес Имя Бит7 Бит6 Бит5 Бит4 Бит3 Бит2 Бит1 Бит0 Сброс POR, BOR Другие виды сброса
CBh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u
0Ch PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1F TMR2IF TMR1IF 0000 0000 0000 0000
8Ch PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1E TMR2IE TMR1IE 0000 0000 0000 0000
13h SSPBUF

Буфер приемника MSSP / регистр передатчика

xxxx xxxx uuuu uuuu
14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000
94h SSPSTAT SMP CKE D/-A P S R/-W UA SF 0000 0000 0000 0000

Обозначения: u = не изменяется; x = не известно.

Затененные биты на работу не влияют.

Примечание. Биты PSPIE и PSPIF в микроконтроллерах PIC16F873, PIC16F876 не используются.

2.6. Интерфейс I 2 C

    При решении задач контроля и управления, не требующих высокой скорости передачи (ЖК-дисплей, клавиатура, энергонезависимая память) при минимальном количестве линий актуальным является интерфейсный уровень шины I2C (Inter-Integrated Circuit), использующей в своей основе синхронную последовательную передачу и прием. Интегральные схемы любой технологии изготовления (CMOS, биполярной) могут поддерживать I2C -шину. Два провода: последовательности данных (SDA) и последовательности тактовых сигналов (SCL) несут информацию между устройствами, присоединенными к шине. Каждое устройство распознается по своему собственному адресу и может работать или как передатчик или как приемник, в зависимости от функции этого прибора. Очевидно, что схема управления дисплеем может быть только приемником, в то время как запоминающее устройство может быть и приемником, и передатчиком. В связи с этим передающие и принимающие устройства также могут рассматриваться как ведущие (master) и ведомые (slave) при выполнении передачи данных. Ведущий -это устройство, которое инициирует передачу данных по шине и генерирует тактовые сигналы для разрешения этой передачи. В это время все адресуемые устройства рассматриваются как ведомые.

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

SDA и SCL - двунаправленные линии с открытым стоком (коллектором), соединенные с положительным питающим напряжением через резистор (Рис. 5). Исходно обе линии находятся в состоянии “1”. Данные могут передаваться со скоростью до 100 Кбит/с в стандартном режиме, или до 400 Кбит/с в быстром режиме. Число устройств, соединенных с шиной исключительно зависит от емкости между линиями и общим проводом, максимальное значение которой - 400пФ.

Рисунок 5. Соединение I2C устройств.

 

Для передачи одного бита данных используется один импульс сигнала синхронизации, при этом уровень на линии SDA должен быть неизменным в течение высокого уровня на линии SCL, и может изменяться только при низком уровне на SCL (Рис. 6). Исключениями служат два особых состояния - START и STOP.

Рисунок 6. Передача бита.

 

Существуют два особых состояния линий интерфейса - start и stop, которые служат для индикации начала и конца передачи. Следует отметить, что до тех пор, пока не установлено состояние start, сигналы на линиях SDA и SCL могут быть совершенно произвольными (Рис. 7).

Состояние START - переход от “1” к “0” на линии SDA при “1” на линии SCL.

Состояние STOP - переход от “0” к “1” на линии SDA при “1” на линии SCL.

Эти два состояния всегда генерируются мастером.

Детектирование состояний start и stop в специализированных элементах обычно производится аппаратно. При полностью программной реализации шины I2C в микроконтроллерах без аппаратной I2C-части необходимо как минимум 2 раза проверять состояние линии SDA.

Рис. 7. START и STOP состояния.

 

Все передачи производятся 8-разрядными словами (байтами). Число байтов, которые могут быть переданы за одну передачу не ограничено. Каждый байт должен сопровождаться битом подтверждения (ACK). Данные передаются начиная со старшего бита (MSB) (Рис. 8).

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

 

Рисунок 8. Передача данных по шине I2C.

 

Для подтверждения передачи байта передатчик устанавливает линию SDA в “1” в течение синхронизирующего импульса. Приемник при этом должен выставить “0” на SDA (Рис. 9). Обычно, приемник, который был адресован, должен генерировать сигнал подтверждения после того, как каждый байт был получен, за исключением того, когда сообщение начинается с адреса.

Когда подчиненный приемник не подтверждает подчиненный адрес (например, устройство не готово, потому что это выполняет некоторую внутреннюю функцию), линия SDA данных должна быть оставлена в “1”. Мастер затем может выдать состояние STOP, чтобы прервать передачу.

Рис. 9. Подтверждение передачи.

2.6 Модуль MSSP . Режим I2C

    Модуль MSSP полностью поддерживает все функции ведущих и ведомых устройств, включая поддержку общего вызова, аппаратные прерывания по детектированию битов START и STOP для определения занятости шины I2C в режиме ведущего (при конкуренции на шине). В MSSP модуле реализована поддержка стандартного режима 7, 10- разрядной адресации. Фильтр "glitch" подключен к выводам SDA и SCL, когда они настроены на вход. Фильтр работает в режимах 100кГц и 400кГц. В режиме 100кГц, когда выводы SDA и SCL настроены на выход, фильтр контролирует длительность формируемых сигналов в не зависимости от тактовой частоты микроконтроллера. Для работы с шиной I2C используется два вывода SCL (сигнал синхронизации) и SDA (данные). Выводы SDA и SCL автоматически настраиваются при включении режима I2C. Включение модуля MSSP выполняется установкой бита SSPEN (SSPCO<5>) в '1'.

Для управления модулем MSSP в режиме I2C используется шесть регистров:

• SSPCON, регистр управления MSSP;

• SSPCON, регистр управления 2 MSSP;

• SSPSTAT, регистр статуса MSSP;

• SSPBUF, буфер приемника/передатчика;

• SSPSR, сдвиговый регистр (пользователю не доступен);

• SSPADD, регистр адреса.

В регистре SSPCON устанавливается требуемый режим I2C. С помощью четырех битов (SSPCON<3:0>) можно выбрать один из режимов I2C:

• Ведомый режим I2C, 7-разрядная адресация;

• Ведомый режим I2C, 10-разрядная адресация;

• Ведущий режим I2C, тактовый сигнал = FOSC/(4 * (SSPADD+1));

• Программная поддержка ведущего режима I2C (реализовано для совместимости с другими PICmicro).

При выборе любого режима I2C выводы SCL и SDA должны быть настроены на  вход, установкой соответствующих битов регистра TRISC в '1'. После выбора режима I2C и установки бита SSPEN в '1' выводы SDA, SCL подключаются к модулю MSSP. Для нормальной работы модуля I2C к выводам SCL, SDA должны быть подключены внешние подтягивающие резисторы. Бит CKE (SSPSTAT<6>) устанавливает уровни сигналов на выводах SCL, SDA в ведущем и ведомом режимах.

Если CKE =1, то выходные уровни соответствуют спецификации SMBus. Когда CKE=0, выходные уровни соответствуют спецификации I2C.

Регистр SSPSTAT содержит биты статуса передачи данных: обнаружение на шине битов START (S) или STOP (P), флаг приема байта данных или адреса, указатель загрузки старшего байта 10-разрядного адреса, бит операции приема/передачи.

В регистр SSPBUF загружаются данные для передачи по шине I2C, и из него читаются принятые данные. Регистр SSPSR выполняет сдвиг принимаемых/передаваемых данных. При приеме данных регистры SSPBUF, SSPSR работают как двухуровневый буфер приемника. Буфер позволяет принимать следующий байт до чтения предыдущего принятого байта из регистра SSPBUF. Когда байт полностью загружен в SSPSR, он передается в регистр SSPBUF и устанавливается флаг прерывания SSPIF в '1'. Если полностью принят следующий байт до чтения предыдущего байта из SSPBUF, то устанавливается бит SSPOV (SSPCON<6>) в '1', а байт в регистре SSPSR будет потерян.

В регистр SSPADD записывается адрес ведомого устройства. В 10-разрядном режиме пользователь должен сначала записывать старший байт адреса (1111 0 A9 A8 0). После соответствия старшего байта адреса необходимо загрузить младший байт адреса (A7:A0).

 

2.7 Модуль MSSP . Режим ведущего I 2 C

В режиме ведущего поддерживается генерация прерываний при обнаружении на шине битов START и STOP. Биты STOP (P) и START (S) в регистре SSPSTAT равны '0' после сброса микроконтроллера или при выключенном модуле MSSP. Шина находится в неактивном состоянии, если бит P=1 или оба бита S, P равны '0'. В режиме ведущего выводы SCL, SDA управляются аппаратно. Следующие события на шине I2C могут привести к установки флага прерываний SSPIF в '1':

Выполнено условие START;

Выполнено условие STOP;

Передан/принят байт данных;

Передан бит подтверждения;

Выполнено условие повторный START.

Рис. 10. Структурная схема модуля MSSP в режиме ведущего I2C

Ведущий формирует на шине I2C тактовый сигнал и биты START, STOP. Текущий обмен данными завершается после формирования бита STOP или повторный START. Поскольку бит повторный START инициирует новый обмен данными, шина I2C остается занятой. Передатчик ведущего выдает данные на линию SDA, а тактовый сигнал на линию SCL. Первый передаваемый байт содержит 7-разрядный адрес приемника (при 7-разрядной адресации устройств) и бит направления данных R/-W=0. После каждого переданного 8-разрядного байта принимается бит подтверждения ACK. Биты SATR и STOP формируется для указания начала и завершения передачи данных. В режиме приема ведущем на шину I2C сначала выдается байт, содержащий 7-разрядный адрес передатчика (при 7-разрядной адресации устройств) и бит направления данных R/-W = 1. Данные принимаются с линии SDA, а на линии SCL формирует тактовый сигнал. После каждого принятого байта формируется бит подтверждения. Биты SATR и STOP формируется для указания начала и завершения передачи данных.

Генератор скорости обмена BRG используется для установки требуемой частоты тактового сигнала на линии

SCL – 100кГц, 400кГц или 1МГц. Значение для перезагрузки BRG берется из 7 младших бит регистра SSPADD. BRG начинает работу сразу после записи данных в регистр SSPBUF. Как только операция завершена (передан последний бит байта и принят бит подтверждения) генератор BRG останавливается, вывод SCL "отпускается".

Рекомендованная последовательность действий при передаче данных:

1. Инициировать START установкой бита SEN в регистре SSPCON2.

2. Ожидать прерывание (если оно разрешено) или установку бита SSPIF после завершения выполнения START.

3. Записью в SSPBUF инициируется передача адреса.

4. 7 бит адреса (при 7-разрядной адресации) и бит направления данных выдается на SDA.

5. Принять подтверждение ACK от приемника, результат записывается в бит ACKSTAT регистра SSPCON2.

6. По заднему фронту девятого такта устанавливается бит SSPIF в '1'.

7. Записью в SSPBUF инициируется передача данных.

8. 8 бит данных выдаются на SDA.

9. Принять подтверждение ACK от приемника, результат записывается в бит ACKSTAT регистра SSPCON2.

10. По заднему фронту девятого такта устанавливается бит SSPIF в '1'.

11. Инициировать STOP установкой бита PEN в регистре SSPCON2.

12. Ожидать прерывание (если оно разрешено) или установку бита SSPIF после завершения выполнения STOP.

2.7.1. Передача данных в режиме ведущего I 2 C

Для инициализации передачи байта данных, 7-разрядного адреса или любой части 10-разрядного адреса нужно просто записать байт в регистр SSPBUF. В результате чего установится бит BF в '1', а BRG начнет формировать сигнал для передачи данных. Каждый передаваемый бит будет выдаваться на SDA по заднему фронту сигнала SCL. Низкий уровень на SCL удерживается в течение одно периода BRG. Данные должны поступать на SDA до прихода переднего фронта на SCL (см. раздел временных характеристик). После отпускания SCL в высокий уровень на время TBRG данные должны удерживаться на SDA в том же состоянии. По окончании передачи 8-го бита сбрасывается флаг BF в '0', а ведущий "отпускает" SDA с тем, чтобы принять бит подтверждения. По заднему фронту 9-го такта значение ACK записывается в бит ACKSTAT регистра SSPCON2. В этот же момент устанавливается флаг SSPIF в '1', а BRG отключается до следующей операции на шине оставляя низкий уровень на SCL и отпуская SDA (см. рис.11).

 Флаг BF

В режиме передачи данных бит BF (SSPSTAT<0>) аппаратно устанавливается в '1' после записи данных в регистр SSPBUF и аппаратно сбрасывается после передачи 8 бит данных.

Флаг WCOL

Если во время передачи данных производится попытка записи в регистр SSPBUF, устанавливается бит WCOL в '1', а запись не происходит. Бит WCOL сбрасывается программно.

Флаг ACKSTAT

В режиме передачи данных бит ACKSTAT(SSPCON2<6>) равен нулю, если ведомый сформировал подтверждение. Ведомый посылает подтверждение, если он распознал адрес (включая общий вызов) или корректно принял данные.

2.7.2. Прием данных в режиме ведущего I 2 C

Прием данных ведущем шины I2C разрешается установкой бита RCEN(SSPCON2<3>) в '1'.

Примечание. При установке бита RCEN в '1' модуль MSSP должен находиться в режиме ожидания. BRG начинает формировать тактовый сигнал SCL, для приема данных в сдвиговый регистр SSPSR. Каждый бит данных будет приниматься с SDA по заднему фронту SCL. По заднему фронту 8-го такта, значение из SSPSR

переписывается в SPPBUF, устанавливается бит BF и SSPIF в '1', BGR останавливается, удерживая SCL в низком уровне, а модуль MSSP переходит в режим ожидания. После чтения регистра SSPBUF аппаратно сбрасывается бит BF

в '0'. По окончанию приема, ведущий может сформировать бит подтверждения установкой бита ACKEN (SSPCON2<4>) в '1'.

Флаг BF

В режиме приема данных бит BF (SSPSTAT<0>) аппаратно устанавливается в '1' после загрузки данных в регистр SSPBUF и аппаратно сбрасывается после чтения регистра SSPBUF.

Флаг SSPOV

При приеме данных бит SSPOV устанавливается в '1', если в момент приема 8-го бита следующего байта бит BF=1 после приема предыдущего байта.

Флаг WCOL

Если во время приема данных производится попытка записи в регистр SSPBUF, устанавливается бит WCOL в '1', а запись не происходит. Бит WCOL сбрасывается программно.

2.7.3. Формирование бита подтверждения в режиме ведущего I 2 C

Для инициализации формирования бита подтверждения на шине I2С необходимо установить бит ACKEN (SSPCON2<4>) в '1'. При установке этого бита на SCL выдается низкий уровень сигнала, а на SDA содержимое бита ACKDT. Если нужно подтвердить прием, бит ACKDT должен быть равен нулю. По окончанию счета BRG линия SCL "отпускается". Как только SCL перейдет из низкого уровня в высокий, BRG опять начнет счет. После окончания счета SCL переводится в низкий уровень, бит ACKEN автоматически сбрасывается в '0', устанавливается флаг прерывания SSPIF в '1', BGR останавливается, а модуль MSSP переходит в режим ожидания (см. Рис. 11).

Флаг WCOL

Если во время формирования бита подтверждения производится попытка записи в SSPBUF, устанавливается

бит WCOL в '1', а запись не происходит.

Рис. 11. Временная диаграмма формирования бита подтверждения

2.7.4. Формирование бита STOP в режиме ведущего I 2 C

Чтобы инициировать формирование бита STOP, необходимо установить бит PEN (SSPCON2<2>) в '1'. По окончании приема/передачи данных, после прохождения заднего фронта тактового сигнала на SCL удерживается низкий уровень сигнала. При установки бита PEN ведущий выдает низкий уровень на линию SDA, перезагружает BRG и начинает счет до нуля. По окончании счета линия SCL "отпускается". Через время TBRG, после установки высокого уровня на SCL, "отпускается" SDA. Когда на SDA появляется высокий уровень сигнала, устанавливаются биты P и SSPIF в '1', бит PEN автоматически сбрасывается в '0', а генератор BRG останавливается (см. Рис. 12).

Флаг WCOL

Если во время формирования бита STOP производится попытка записи в SSPBUF, устанавливается бит WCOL в '1', а запись не происходит.

Рис. 12. Временная диаграмма формирования бита STOP

Порядок выполнения работы

    3.1. Ознакомиться с вводной частью лабораторной работы и схемой электрической принципиальной отладочного набора.

    3.2. Получить задание у преподавателя.

    3.3. Запустить пакет MPLAB - IDE, создать и отладить проект с использованием симулятора MPLAB - SIM.

    3.4. Осуществить внутрисхемную отладку проекта, загрузив исполняемый код программы в память команд микроконтроллера.

    3.5. Провести все необходимые измерения и расчеты.

    3.6. Оформить отчет о проделанной работе.

 

Содержание отчета

4.1. Цель работы.

4.2. Последовательность действий по созданию и отладке проекта.

4.3. Текст программы.

4.4. Результаты проводимых замеров и расчетов.

4.5. Выводы.

5. Контрольные задания

    5.1. Нарисовать схему сдвигового последовательно-параллельного регистра и пояснить принцип его работы.

    5.2. Нарисовать схему сдвигового последовательно-параллельного регистра и пояснить принцип его работы.

6 . Литература.

1. В.А. Ульрих. Микроконтроллеры PIC16C7X. Справочник по КМОП-микросхемам с АЦП. Наука и техника 2000г. 253с.

2. PIC16F87X. 28/40-Pin CMOS FLASH Microcontrollers. DS30292C. Microchip Technology Incorporated, USA. - WWW.MICROCHIP.RU



Приложение 1. Пример использования модуля MSSP в режиме ведущего SPI

 

    В качестве примера рассмотрим схему подключения цифро-аналогового преобразователя AD421 к микроконтроллеру PIC16F877 отладочного модуля MPLAB - I C D Demo Board . Функциональная схема и диаграммы работы последовательного интерфейса ЦАП приведены на рисунках 14 и 15.

Рис. 14. Функциональная схема ЦАП AD421.

Рис. 15. Диаграммы работы последовательного интерфейса ЦАП AD421.

 

Ниже приведен пример программы, в которой после настройки соответствующих регистров модуля MSSP последовательный синхронный порт микроконтроллера обеспечивает вывод последовательности двоичных 16-разрядных комбинаций с записью в параллельный регистр-защелку ЦАП.

;   -= LIBRARY =-

; PING _ PONG . asm                                        ;название программы

listp = 16 f 877                                      ;подключаемые библиотеки

include <p16f877.inc>               ;

Movlw sspstat

Movlw sspcon

Start                                                     ; Цикл вывода

    movlw   0x00                                  ; старший байт

call        tx_w_f_tx_comp              ;

call         tx _ w _ f _ tx _ comp               ;младший байт

    movlw   0x40                                  ; старший байт

call        tx_w_f_tx_comp              ;

Синхронные последовательные интерфейсы.

 

Методические указания к лабораторной работе № 4 по курсу “Вычислительная техника и информационные технологии” для студентов 4 курса факультета Радиотехники электроники и физики (специальность 201200) дневного отделения

 

 

Новосибирск 2007г.

 

Новосибирский государственный технический университет

 

 

УДК ХХХХ

 

 

Составитель:           Кривецкий А.В., доцент, к.т.н.

 

Рецензент:      Денисов А.Н., доцент

 

Работа подготовлена на кафедре конструирования и технологии РЭС

Цель работы

Изучение принципов последовательной передачи данных в микропроцессорных системах, а также архитектуры модуля мастера последовательного синхронного порта (MSSP) восьмиразрядных однокристальных микроконтроллеров PIC 16 F 877, разработка простейшего протокола обмена между микроконтроллером отладочного модуля MPLAB - I C D Demo Board и периферийным модулем.

        


Поделиться:



Последнее изменение этой страницы: 2019-05-07; Просмотров: 256; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.181 с.)
Главная | Случайная страница | Обратная связь