Инструкции

Справочный раздел

В этом разделе Вы найдетё инструкции, справочники, и всевозможные хелпы по использованию программного обеспечения.

Разделы инструкций

В сети

Пользователей: 111
Из них просматривают:
Аналоги: 67. Видео: 1. Даташиты: 30. Инструкции: 2. Кроссворд: 1. Новости: 4. Остальное: 1. Программы: 1. Форум: 3. Чат: 1.
Участников: 3
Гостей: 108

Google , T112-10 , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

Функции для работы с аппаратной реализацией SPI-интерфейса

Аппаратный модуль SPI имеется в ряде МК семейства PIC. Среда разработки mikroC предоставляет библиотеку для инициализации модуля SPI и удобства работы с ним.

 
С помощью SPI-интерфейса можно легко связать микроконтроллер с внешними микросхемами АЦП, ЦАП, памяти и т.д. Для этого потребуется только МК с аппаратно реализованным модулем SPI (например, PIC16F877). Некоторые микроконтроллеры, имеющие два модуля SPI, например P18F8722, требуют предварительно определить модуль, который будет использован. Для этого достаточно добавить номер 1 или 2 к имени функции Spi. Например, Spi2_Write().

 
Также, с целью обратной совместимости с предыдущими версиями компилятора и облегчения управления кодами, микроконтроллеры с несколькими модулями SPI имеют Spi-библиотеку, которая идентична Spi1 (т.е. можно использовать Spi_Init() вместо Spi1_Init() для операций с SPI).

 

Библиотека SPI включает в свой состав следующие функции: Spi_Init, Spi_Init_Advanced, Spi_Read и Spi_Write. Описание этих функций приведено в таблицах 44 - 47 соответственно.

 

 Таблица 44. Описание функции Spi_Init

Прототипvoid Spi_Init(void)
Возвращаемое значениеНет
ОписаниеКонфигурирование и инициализация SPI установками по умолчанию. Spi_Init_Advanced или Spi_Init должны вызываться перед использованием любых других функций библиотеки SPI. Установки по умолчанию: режим ведущего, частота синхронизации Fosc/4, низкий уровень при отсутствии синхросигнала на соответствующем выводе, передача по фронту, стробирование входных данных в середине интервала синхронизации. Для установки собственных настроек необходимо использовать функцию Spi_Init_Advanced
ТребованияТребуется PICмикроконтроллер с аппаратным модулем SPI
ПримерSpi_Init()

 

 Таблица 45. Описание функции Spi_Init_Advanced

Прототипvoid Spi_Init_Advanced(unsigned short master, unsigned short data_sample, unsigned short clock_idle, unsigned short transmit_edge)
Возвращаемое значениеНет
ОписаниеКонфигурирование и инициализация SPI. Spi_Init_Advanced или Spi_Init должны вызываться перед использованием любых других функций библиотеки
SPI. Аргумент mast_slav определяет режим работы SPI и может принимать следующие значения:
MASTER_OSC_DIV4 // Ведущий, частота синхр.=Fosc/4
MASTER_OSC_DIV16 // Ведущий, частота синхр.=Fosc/16
MASTER_OSC_DIV64 // Ведущий, частота синхр.=Fosc/64
MASTER_TMR2 // Ведущий, частоту синхр. задает TMR2
SLAVE_SS_ENABLE // Ведомый, разрешен Slave select
SLAVE_SS_DIS // Ведомый, запрещён Slave select
Аргумент data_sample определяет, когда стробируются входные данные, и может принимать следующие значения:
DATA_SAMPLE_MIDDLE // Входные данные стробируются
// в середине интервала синхронизации
DATA_SAMPLE_END // Входные данные стробируются
// в конце интервала синхронизации
Аргумент clock_idle определяет состояние вывода синхронизации при отсутствии обмена и может принимать следующие значения:
CLK_IDLE_HIGH // Высокий уровень на выводе
// синхронизации при отсутствии обмена
CLK_IDLE_LOW // Низкий уровень на выводе
// синхронизации при отсутствии обмена
Аргумент transmit_edge может принимать следующие значения:
LOW_2_HIGH // Данные передаются по фронту
HIGH_2_LOW // Данные передаются по спаду
ТребованияТребуется PICмикроконтроллер с аппаратным модулем SPI
ПримерSPI устанавливается в режим ведущего с частотой синхронизации = Fosc/4, входные данные стробируются в середине интервала синхронизации, вывод
синхронизации в состоянии низкого уровня при отсутствии обмена и данные передаются по фронту:
Spi_Init_Advanced(MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH)

 

 

 Таблица 46. Описание функции Spi_Read

Прототипunsigned short Spi_Read(unsigned short buffer)
Возвращаемое значениеВозвращает принятый байт
ОписаниеЗапускает обмен посылкой байта buffer, принимает данные и возвращает принятый байт по окончанию приёма
ТребованияТребуется PIC-микроконтроллер с аппаратным модулем SPI. SPI должен быть предварительно проинициализирован функциями Spi_Init_Advanced или Spi_Init
Примерshort take, buffer;
...
take = Spi_Read(buffer);

 

 Таблица 47. Описание функции Spi_Write

Прототипvoid Spi_Write(unsigned short data)
Возвращаемое значениеНет
ОписаниеЗаписывает передаваемый байт data в регистр данных SSPBUF, что немедленно вызывает передачу
ТребованияТребуется PIC-микроконтроллер с аппаратным модулем SPI. SPI должен быть предварительно проинициализирован функциями Spi_Init_Advanced
или Spi_Init
ПримерSpi_Write(1)

 

 
Следующий пример демонстрирует, как использовать функции библиотеки SPI. Предлагаемая аппаратная конфигурация: вывод выборки ведомого max7219 (драйвер 8-сегментного светодиодного дисплея на 8 позиций) соединён с RC1 PIC, выводы SDO и SCK PIC - с соответствующими выводами max7219, вывод SDI PIC не используется.

 

//---------- Объявления функций
void max7219_init1();
//----------------------- конец
unsigned short i;
void main() {
Spi_Init(); // Стандартное конфигурирование SPI
//Вместо Spi_init можно использовать Spi_Init_Advanced,
// как показано в следующей строке:
//Spi_Init_Advanced(MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE,
// CLK_IDLE_HIGH, HIGH_2_LOW);
TRISC &= 0xFD;
max7219_init1(); // Инициализация max7219
for (i = 1; i <= 8u; i++) {
PORTC &= 0xFD; // Выбор max7219
Spi_Write(i); // Посылка i в max7219 (номер позиции)
Spi_Write(8 – i); // Посылка 8-i в max7219 (цифра в этой позиции)
PORTC |= 2; // Отмена выбора max7219
}
TRISB = 0;
PORTB = i;
}//end
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Проводите пайку только при выключенном телевизоре.
В противном случае закоротив дорожки (даже кратковременно), Вы введете новые неисправности.

Похожие инструкции