PIC. Урок 15. Модуль MSSP. Режим SPI. Часть 2



В предыдущей части урока мы познакомимся с шиной SPI и организацией работы с ней модуля MSSP, рассмотрев его основные два управляющих регистра.

 

В режиме SPI для ножек, участвующем в нём, приняты следующие сокращения в отличие от общепринятых:

SDI — Вход последовательных данных (для режима ведомого — MOSI, для режима ведущего — MISO).

SDO — Выход последовательных данных (для режима ведомого — MISO, для режима ведущего — MOSI).

Остальные две ножки (SS и SCK) и свою аббревиатуру не поменяли.

Ножка SCK в ведущем режиме настраивается на выход, а в ведомом — на вход.

Рассмотрим блок-схему работы модуля MSSP в режиме SPI

 

 

Мы видим два регистра — SSPSR (регистр сдвига) и SSPBUF (буферный регистр). С помощью SDI и SDO происходит обмен битами через регистр сдвига SSPSR старшим битом вперёд. После полного обмена битами (когда будет полностью получен и передан весь байт), данные из этого регистра сохраняются в регистр буфера SSPBUF. Когда нам требуется передать байт по SPI, а также принять байт от подключенного устройства, то есть осуществить обмен байтами между устройствами, мы отправляемый байт записываем в регистр SSPBUF и ждём установки флага прерывания SSPIF регистра PIR, который отчитается о том, что приём/передача байта закончены. После этого мы обязаны программно очистить данный бит. Также после этого мы можем прочитать принятый байт. Ниже в схеме показано тактирование шины.

 

 

Теперь давайте посмотрим наглядно в виде диаграммы, как вообще передаются и принимаются данные по шине SPI  в нашем контроллере при использовании ведущего режима (нажмите на картинку для увеличения изображения)

 

 

Мы видим что каждый бит передаётся и принимается синхронно с каждым полным периодом импульса на ножке SCK. Уровень активного состояния, а также фаза передачи бита регулируется соответствующими битами регистров.

То есть, режим работы нашей шины SPI мы выбираем с помощью установки или сброса битов CKP, CKE и SMP исходя из того, как это требует от нас документация того устройства, которое мы будем подключать к шине.

 

 

Вообще, существует общепринятая терминология режимов работы SPI (четыре режима). Вот соответствие режимов состояниям битов CKP и CKE

 

 

Также не нужно забывать про бит SMP, который управляет фазой получения данных.

На этом, думаю, знакомство с организацией шины SPI в модуле MSSP можно считать законченным.

Мы теперь вполне готовы к разработке проектов с использованием данной шины в контроллере PIC16.

Всем спасибо за внимание!

 

 

Предыдущая часть Программирование МК PIC Следующий урок

 

 

Купить программатор (неоригинальный) можно здесь: PICKit3

Купить программатор (оригинальный) можно здесь: PICKit3 original

Отладочную плату PIC Open18F4520-16F877A можно приобрести здесь: PIC Open18F4520-16F877A

Логический анализатор 16 каналов можно приобрести здесь

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

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

2 комментария на “PIC. Урок 15. Модуль MSSP. Режим SPI. Часть 2
  1. Леонид:

    Добрый день. Начал изучать SPI микроконтроллер PIC16F690. Возник вопрос импульсы синхронизации должны быть на выводе контроллера постоянно как только модуль подключен или только во время передачи или приёма?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*