Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

Код, приведенный в Программе 12.6, в точности соответствует вышеприведенному списку операций. Байт данных, который необходимо передать, копируется из указанного регистра в регистр SSPBUF, после чего проверяется бит состояния WCOL, чтобы удостовериться, что новое значение действительно было загружено в буфер. Если в этот момент осуществлялась передача предыдущего байта, то новый байт не будет загружен в регистр SSPBUF, а бит WCOL будет установлен в 1. Если обращение к модулю SSP осуществляется только из указанной подпрограммы, то возникновение такой ситуации маловероятно, и в большинстве случаев эта проверка может быть исключена. Тем не менее наличие такой проверки увеличивает надежность системы.

Программа 12.6. Использование модуля SSP для приема и передачи данных по шине SPI

;************************

; * ФУНКЦИЯ: Передает и одновременно принимает один байт *

; * ФУНКЦИЯ: данных по шине SPI с использованием модуля SSP *

; * ВХОД: Передаваемый байт — в DATA_OUT *

; * ВЫХОД: Принятый байт — в DATA_IN *

;************************

SPI_IN_OUT

       movf DATA_OUT,w; Берем байт для передачи

       movwf SSPBUF; Загружаем его в SSPBUF

SSP_IN_OUT_LOOP

       btfss SSPCON,WCOL; Он загрузился?

          goto SPI_IN_OUT_CON7; ЕСЛИ да, TO продолжим

       bcf SSPCON,WCOL; ИНАЧЕ сбросим WCOL и

          goto SSP_IN_OUT_LOOP; попытаемся снова

SPI_IN_OUT_CONT

        bsf STATUS,RPO; Переключаемся в 1-й банк

        btfss SSPSTAT,BF ; Проверяем состояние буфера

           goto SPl_IN_OUT_CONT; ЕСЛИ не полон, проверяем снова

        bcf STATUS,RPO; Возвращаемся в 0-й банк

        movf SSPBUF,w; ИНАЧЕ считываем принятый байт

        movwf DATA_IN; и помещаем его в требуемый POН

        return

После загрузки передаваемого байта в буфер сразу же начинается процесс передачи, изображенный на Рис. 12.11. По окончании передачи устанавливается флаг BF, и принятый байт может быть скопирован из регистра SSPBUF в требуемый РОН. Флаг BF при этом сбросится автоматически.

Рис. 12.11.Временные диаграммы, соответствующие работе модуля SSP в режиме ведущего SPI

Помимо небольшого уменьшения размера кода, преимуществом использования аппаратного модуля является увеличение скорости передачи. Одна транзакция приема/передачи состоит из восьми тактов SCK, которые в нашем случае становятся равными восьми машинным циклам. При fOSC = 20 МГц частота сигнала SCK равна 5 МГц (т. е. скорость передачи составляет 5 миллионов битов в секунду; обычно это записывается как 5 Мбит/с). Таким образом, для передачи одного бита требуется всего 1.6 мкс.

На Рис. 12.11 показаны временные диаграммы работы модуля в режиме SPI,который используется в нашей подпрограмме. Поскольку мы сбросили бит СКР и установили бит СКЕ, то в режиме ожидания на линии SCK будет присутствовать НИЗКИЙ уровень. Сразу же после загрузки байта в регистр SSPBUF на вывод SDO выдается старший бит передаваемого байта. Это значение будет занесено в сдвиговый регистр удаленного приемника по нарастающему фронту тактового сигнала в середине фазы.

Поскольку удаленный приемник также тактируется в середине фазы, у него имеется достаточно времени для выдачи очередного бита данных на вход SDI микроконтроллера. Этот бит считывается микроконтроллером в конце каждой фазы.

* * *

Одним из применений последовательной передачи данных является объединение нескольких устройств в одну многопроцессорную систему. Например, каждый сустав манипулятора робота может управляться своим микроконтроллером, обменивающимся данными с основным процессором. Простая многоабонентская система из одного ведущего и двух ведомых процессоров показана на Рис. 12.12.

Рис. 12.12. Многоабонентская сеть на базе шины SPI

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки