Мегаобучалка Главная | О нас | Обратная связь


Теоретический материал



2020-02-04 283 Обсуждений (0)
Теоретический материал 0.00 из 5.00 0 оценок




Serial Peripheral Interface (SPI) – популярный интерфейс для последовательного обмена данными между микросхемами. Шина SPI организована по принципу "ведущий-подчиненный". Основным блоком интерфейса SPI является сдвиговый регистр, сигналы синхронизации и ввода/вывода битового потока которого и образуют интерфейсные сигналы. SPI является не протоколом передачи данных, а протоколом обмена данными между двумя сдвиговыми регистрами, каждый из которых одновременно выполняет и функцию приемника, и функцию передатчика. Непременным условием передачи данных по шине SPI является генерация сигнала синхронизации шины. Этот сигнал имеет право генерировать только ведущий шины и от этого сигнала полностью зависит работа подчиненного шины. MOSI и MISO два канала передачи данных и  канал  подачи тактовых импульсов SCLK, а также линия включения ведомого устройства SS. При подаче низкого уровня по линии SS ведомый стает активным.

Рис.  11 Схема с SPI

SPI –простой последовательный интерфейс передачи данных, который основывается на сдвиговых регистрах. Его плюсом является возможность подключения нескольких ведомых устройств, но, он поддерживает только синхронную передачу.

 

Порядок работы

1. На основе примера написать свой код в среде разработки и скомпилировать его.

2. Ознакомиться с работой программы.

3. Создать новый проект в среде CubeMX и Keil.

4. Загрузить код на плату и проверить работу на отладочной плате Discavery.

 

Лабораторная работа № 7: Генерация сигналов и управление их характеристиками

Цель работы:изучить возможности генерации сигналов сиспользованием отладочной платы.

Оборудование и программное обеспечение:отладочная платаSTM32F4 Discovery,символьныйLCD-дисплей, 3 тактовые кнопки и резисторы для их подключения, среда разработки для STM32.

Пример кода

Получим сигнал прямоугольной формы в заданном диапазоне частот и с заданным коэффициентом заполнения с частотой – 3-4 кГц; коэффициентом заполнения ±50% от начального значения, которым считаем значение в 0,5.

 

 

 

 

В заголовочном файле объявим функции и используемые переменные и константы

 

 

Эксперимент

 

Рис. 12

В подключении участвуют 3 порта ввода/вывода (к выводу порта A, на котором генерируется сигнал, подключается измерительное оборудование, которое на рисунке не показано). Кнопки подключаются к выводам 0-2 порта В. Выходной сигнал можно наблюдать на выходе 0 порта А.

Схема подключения компонентов показана на рис. 11

Рис.  11 Схема подключения компонентов

Описание подключения дисплея к плате можно найти в приложении, однако следует отметить необходимость для этого дополнительных резисторов, один из которых обладает переменным сопротивлением для регулирования яркости отображаемых символов. Для управления вариантами меню, а также изменением характеристик используются подключенные к выходам 0-2 порта B тактовые кнопки. В данном примере использованы 4-контактные тактовые кнопки TS-06V (рис. 11), однако можно использовать и другие кнопки, которые удастся найти.

 

Рис. 12 Внешний вид тактовой кнопки

Перед тем, как выполнить подключение, следует изучить с помощью мультиметра в режиме измерения сопротивления, какие именно контакты замыкаются при нажатии, а какие остаются соединенными всегда. Кроме того, для подтяжки выхода к земле используются резисторы номиналом 5,9 кОм. Для размещения описанного выше соединения используется макетная плата для пайки. Все выводы на плате (3 – для кнопок и 2 – для питания и земли) для удобства подключены к штыревому разъему. Подключение с отладочной платой выполняется с помощью перемычек. Возможно, более удобным вариантом для начинающих будет использование макетной платы.

Работа с дисплеем

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

Для ознакомления с работой таких дисплеев рассмотрим дисплей RC1602A (рис. А.), а также его использование под управлением STM32F4Discovery. Данный дисплей отображает 2 строки по 16 символов в каждой и работает под управлением контроллера KS0066U. Он обеспечивает следующую функциональность по работе с дисплеем:

- выполнение команд управления (управление разрядностью, курсором и другие операции);

- выполнение записи и считывания памяти дисплея.

Рис. А.

 

Использованная схема подключения дисплея представлена на рис. В

 

 

 

Рис. В. Схема подключения дисплея.

 

Для управления дисплеем с помощью платы STM32F4Discovery написана библиотека (реализована не вся функциональность, а лишь наиболее необходимое: выполнение команд и запись данных в память для отображения). Сама память разделена на две части: память отображения (DDRAM) и память, отведенная под символы пользователя (CGRAM). Информация, записанная в память для отображения, появляется на экране. Поскольку размер памяти больше размера экрана, то отображается лишь ее часть, а отображение остальной части можно обеспечить с помощью сдвига отображаемой на экране памяти. Более детальное описание возможностей дисплеев такого типа можно найти в документации к ним.

Далее приведен код библиотеки: заголовочный файл и файл с реализацией.

Ниже представлен заголовочный файл библиотеки.

 

#ifndef KS006ULIB_H

 

#define KS006ULIB_H

 

#include <stm32f4xx_gpio.h>

#define DATA_PORT GPIOD

 

#define CONTROL_PORT GPIOE

#define DATA_PINS GPIO_Pin_0 | \

 

GPIO_Pin_1 | \

 

GPIO_Pin_2 | \

GPIO_Pin_3 | \

 

GPIO_Pin_4 | \

GPIO_Pin_5 | \

 

GPIO_Pin_6 | \

GPIO_Pin_7

 

#define CONTROL_PINS GPIO_Pin_0 | \

 

GPIO_Pin_1 | \

GPIO_Pin_2

 

#define RS_PIN GPIO_Pin_0

#define RW_PIN GPIO_Pin_1

 

#define E_PIN GPIO_Pin_2

 

void lcd_init();

 

void lcd_command(unsigned char command_data); void write_data(unsigned char data); void write_char(unsigned char data);

void write_string(char * string);

 

void write_string_at(char * string, unsigned char address);

 

void write_at(unsigned char symbol, unsigned char address);

void set_rs();

 

void unset_rs();

void set_rw();

 

void unset_rw();

void set_e();

 

void unset_e();

 

#define lcd_clear() lcd_command(0x01)

 

#define lcd_set_address(address) lcd_command(0b10000000 & address)

 

#endif

 

Библиотека будет использоваться как часть проекта в среде разработки

 

 



2020-02-04 283 Обсуждений (0)
Теоретический материал 0.00 из 5.00 0 оценок









Обсуждение в статье: Теоретический материал

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (283)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)