Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

Рис. 4.78. Блок-схемы алгоритмов программного обслуживания контроллера асинхронного обмена SPI


Микроконтроллер и периферийные интегральные схемы. Одна из основных функций интерфейса SPI в микропроцессорных системах — обмен данными между МК и установленными на той же печатной плате интерфейсными ИС. Контроллер SPI в составе МК 68HC12 может быть инициализирован для работы как в режиме ведущего (мастера), так и в режиме ведомого (подчиненного). В процессе обмена с интерфейса SPI — дополнительная функция линий PS7..PS4 порта S. Сигналы SPI распределяются между линиями PS7..PS4 в следующем порядке:

• PS7 — сигнал . Когда линия  установлена в 0, происходит передача данных из ведущего устройства SPI;

• PS6 — сигнал SCK;

• PS5 — сигнал MOSI. По этой линии передаются данные от ведущего устройства к ведомому;

• PS4 — сигнал MISO. По этой линии передаются данные от ведомого устройства к ведущему.


Регистры управления, используемый в примере. Ниже перечислены биты и регистры управления, которые используются в данном примере:

• DDRS — регистр направления передачи порта S. Разряды DDRS7…DDRS4 должны быть установлены соответствующим образом при работе контроллера SPI в режиме ведущего. Это необходимо для правильного формирования сигналов обмена на линиях порта S;

• SP0BR — регистр скорости передачи. Разряды SPR2…SPR0 этого регистра задают скорость обмена по шине SPI;

• SP0CR1 — регистр управления (первый). Задает режимы работы контроллера SPI;

• SP0CR2 — регистр управления (второй). Задает режимы работы контроллера SPI;

• SP0SR — регистр состояния. Отражает текущее состояние процесса передачи информации по шине SPI;

• SP0DR — регистр данных. В этот регистр записываются данные, подлежащие передаче в интерфейсную ИС.

Пример программирования контроллера SPI. В нашем примере мы будем использовать встроенный контроллер SPI в режиме ведущего. Контролер будет непрерывно посылать шестнадцатеричное число $F0 в «воображаемую» периферийную ИС. Работоспособность приведенного программного кода может быть проверена с помощью осциллографа. При желании Вы можете собрать простейшую периферийную ИС — последовательный регистр со светодиодами, подключенными к параллельным выходам (рис. 4.79). В примере не использованы прерывания, контроль за состоянием флага SPIF ведется методом полинга.

Рис. 4.79. Функциональная схема периферийного устройства для тестирования обмена по SPI


/*--------------------------------------------------------------------*/

/* filename: SPI.c                                                    */

/* МAIN PROGRAМ: Эта программа реализует непрерывную посылку кода     */

/* символа "S" с скоростью 9600 бод в 8-разрядном формате (кадр 10 бит)*/

/* с битом паритета                                                   */

/*--------------------------------------------------------------------*/

/*подключаемые файлы*/

#include <912b32.h>

#include


/*используемые функции*/

void initialize_spi(void);

void send_data(unsigned int);


void main(void) {

 int i, j;

 unsigned int data;

 initialize_spi(); /*инициализация модуля SCI*/

 data = 0xF0;

 while(1) /*передавать данные непрерывно*/

 {

  send_data(data);

 }

}


/* Функция initialize_spi производит инициализацию модуля SPI. */

void initialize_spi(void) {

 SP0BR = 0х04; /*установить скорость обмена*/

 SP0CR1 = 0x18; /*запретить прерывания от SPI, назначить режим*/

                /*ведущего, старшим битом вперед*/

 SP0DR = 0x00; /*очистить регистр данных */

 SP0SR = 0x00; /*очистить регистр состояния*/

 SP0CR1 = 0x58; /* разрешить SPI */

}


/* Функция send_data производит инициализацию модуля SPI. */

void send_data(unsigned int data) {

 unsigned int status;

 SP0DR = data; /*задать число для пересылки*/

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

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных