Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Название:Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
- Автор:
- Жанр:
- Издательство:Издательский дом «ДМК-пресс»
- Год:2007
- Город:Москва
- ISBN:5-9706-0034-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С краткое содержание
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах.
Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров.
Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
4.18.5. Пример программирования контроллера SCI
Приведенный ниже программный фрагмент SCI.c иллюстрирует технику программного обслуживания асинхронного последовательного интерфейса МК семейства 68HC12.
Отладочная плата MC68HC912B32EVB предоставляет возможность использования только одного контроллера SCI с номером 0. Поэтому в именах регистров специальных функций символ «x» будет заменен нами на символ «0».
Ниже перечислены биты и регистры управления, которые используются в данном примере:
• SC0BDH:SC0BDL — регистры скорости обмена контроллера SCI. Записанное в него двоичное число определяет скорость передачи данных и скорость приема данных, которые для одного контроллера в соответствии с его принципом действия могут быть только равными;
• SC0CR1 — первый регистр управления контроллера SCI. Используется для выбора формата 8-ми или 9-ти разрядного представления слова в кадре обмена данными (бит M), для выбора режима работы с паритетом или без него (бит PE), для назначения четной или нечетной логики формирования паритета (бит PT);
• SC0CR2 — второй регистр управления контроллера SCI. Его биты разрешают работу передатчика (бит TE) и приемника (бит RE);
• SC0DRL — регистр данных контроллера SPI, младший байт. Используется для обмена данными в последовательном коде в 8-разрядном формате;
• SC0SR1 — первый регистр состояния контроллера SCI. Этот регистр содержит флаг готовности буфера передатчика к приему новых данных TDRE и флаг завершения приема очередного слова в буфер приемника RDRF.
В нашем примере задействован только передатчик контроллера SCI. Он будет непрерывно посылать по линии последовательной связи TxD (вывод PORTS0) код символа «S». Прерывания от контролера SCI в данном примере не используются.
Контроль за состоянием флага TDRE ведется методом полинга.
/*-------------------------------------------------------------------*/
/* filename: SCI.c */
/* МAIN PROGRAМ: Эта программа реализует непрерывную посылку кода */
/* символа "S"с скоростью 9600 бод в 8-разрядном формате (кадр 10 бит)*/
/* с битом паритета */
/*-------------------------------------------------------------------*/
/*подключаемые файлы*/
#include <912b32.h>
/*используемые функции*/
void sci_init(void);
void sci_trans(void);
void main(void) {
sci_init(); /*инициализация модуля SCI*/
while(1) {
sci_trans(); /*передавать данные непрерывно*/
}
}
/*-------------------------------------------------------*/
/* Функция sci_init производит инициализацию модуля SCI. */
/*-------------------------------------------------------*/
void sci_init(void) {
unsigned char clear;
SC0BDL = 0x34; /*установить скорость 9600 бод*/
SC0BDH = 0x00;
SC0CR1 = 0х04; /*10-разрядный формат кадра 8 бит данных, с*/
/*контролем паритета, логика паритета нечетная */
clear = SC0SR1; /*операция для сброса флага TDRE*/
/*флаг сбрасывается в два действия*/
/*сначала читать регистр SC0SR1*/
/*затем записать в регистр SC0DRL*/
}
/*-------------------------------------------------------------------*/
/* Функция sci_trans осуществляет непрерывную пересылку одного байта */
/*-------------------------------------------------------------------*/
void sci_trans(void) {
SC0CR2 = 0x08; /*разрешить работу передатчика*/
SC0DRL = 's'; /*загрузить в буфер передатчика код символа "S"*/
while (SC0SR1 != 0x80) /*ожидать установления бита TDRE)
{
;
}
}
/*-------------------------------------------------------------------*/
Если соединить два микропроцессорных контроллера по последовательному интерфейсу так, что выход TxD первого МК будет соединен со входом RxD второго МК и наоборот, то можно будет организовать двусторонний обмен информацией.
Именно эту задачу Вам предстоит решить в домашнем задании №11, полный текст которого Вы найдете в конце главы.
4.19. Синхронный последовательный интерфейс SPI
Интерфейс SPI относится к группе синхронных последовательных интерфейсов. Принцип действия интерфейсов этого типа предполагает, что передача каждого бита данных по однопроводной линии сопровождается сигналом синхронизации, который передается по другой линии. Спецификация интерфейса SPI определяет число линий связи и временные диаграммы сигналов на этих линиях в процессе обмена данными.
4.19.1 Концепция интерфейса SPIФункциональная схема обмена между двумя контроллерами SPI

Рис. 4.70.
Функциональная схема организации обмена данными с использованием интерфейса SPI представлена на рис. 4.70. При описании режимов работы и линий связи интерфейса SPI приняты к использованию следующие термины и обозначения:
• Master Mode — режим ведущего. Устройство, работающее в режиме ведущего, начинает сеанс обмена, генерирует передаваемые данные в ведомое устройство и формирует сигналы синхронизации, сопровождающие эти данные.
• Slave Mode— режим ведомого. Устройство, работающее в режиме ведомого, получает сигналы синхронизации от ведущего. В момент поступления импульса синхронизации ведомое устройство запоминает очередной бит 8-разрядного слова, переданный ведущим по одной линии данных, и выставляет на другую линию данных очередной бит другого 8-разрядного слова, передаваемого от ведомого к ведущему.
• MOSI (Master Output Slave Input) — линия передачи данных от ведущего к ведомому.
• MISO (Master Input Slave Output) — линия передачи данных от ведомого к ведущему.
• SCK (Serial Shift Clock) — линия сигнала синхронизации данных. По этой линии ведущее устройство «сообщает» ведомому о начале сеанса обмена с ним.
4.19.2. Алгоритмы работы контроллера SPI
В данном разделе мы рассмотрим организацию обмена данными с использованием аппаратных средств контроллера SPI в составе МК 68HC12. Мы также кратко остановимся на регистрах управления контроллера SPI. Более подробно эти регистры будут рассмотрены в следующем параграфе.
На рис. 4.71 представлена функциональная схема контроллера SPI. Остановимся сначала на системе синхронизации, которая располагается в левом верхнем углу рисунка. Модуль SPI использует в качестве источника тактирования импульсную последовательность PCLOCK, частота которой равна частоте ECLOCK (т.е. частоте системной шины МК). Частота PCLOCK делится делителем с программируемым коэффициентом. На выходе делителя формируется сигнал, частота которого определяет скорость обмена данными по SPI, если контроллер работает в ведущем режиме. Коэффициент деления назначается битами SPR2…SPR0 регистра скорости передачи SP0BR.

Рис. 4.71.Аппаратные средства контроллера синхронного обмена SPI
Читать дальшеИнтервал:
Закладка: