Привет всем!
На этом уроке мы продолжим изучать микроконтроллер CC430F5137 с ядром MSP430 на котором основываются платы TiTAN и TiTAN-I.
Мы научимся работать с LCD-дисплеем с параллельным интерфейсом стандарта HD44780 и радиоинтерфейсом CC1101.
В результате мы получим вот такой стенд
Нижнюю часть стенда мы изучали на прошлом уроке, и научились подключать плату TiTANI по интерфейсу I2C к LCD-дисплею, запускать часы реального времени (RTC) и передавать данные по радио.
Теперь наша плата TiTAN должна принять данные по радио, вывести информацию о времени от TITAN-I на LCD-дисплей и в случае срабатывания режима «будильник», включить зуммер.
Вы готовы?
Как мы уже говорили нам понадобится библиотека RF1A из нашего примера с сайта https://titanproject.com в разделе «программное обеспечение».
Добавим ее в наш проект. В этой же библиотеке вы найдете массив rfSettings с настройками радио, которые были получены при помощи программы SmartRF Studio от компании Texas Instruments.
Кстати, необходимые для работы LCD-дисплея функции мы используем в этом примере
Подключим эти библиотеки к нашему проекту.
Сначала мы определим размер принимаемых данных и размер служебной информации (RSSI и LQI) которая сопровождает каждый принятый пакет.
Значения этих данных мы рассмотрим в одном из наших уроков, но вы можете и сами изучить их, воспользовавшись документацией Texas Instruments на интерфейс CC1101 в разделе 17
по этому адресу: https://www.ti.com/lit/ds/symlink/cc1101.pdf?ts=1590908983417 Определим массив для принимаемых данных и необходимые переменные.
Как вы уже догадались, основные действия в микроконтроллерах обрабатываются прерываниями. И приём данных по радио не является исключением.
Создадим обработчик прерывания по радио.
Не пугайтесь такого большого количества событий, которые могут обработать данное прерывание. Они подробно описаны в справочной документации от Texas Instruments в разделе 25.
Значение RFIFG9 нам сообщит о том, что данные приняты или отправлены, а также что произошла ошибка при приеме пакета, переполнился принимаемый или опустошился передаваемый буферы.
Проверим, что произошел прием данных. Первым байтом принятых данных будет длина данных вместе с полями RSSI и LQI. После чего мы получим все принятые данные в приемный буфер и выставим флаг, что данные приняты.
По окончанию перенастроим радио и подготовим его для принятия следующих данных.
Осталось совсем немного.
Проинициализируем LCD-дисплей, начнем выводить на него принятые по радио данные и при необходимости включим зуммер.
Хотим напомнить про функцию printf. В первой части урока мы рассказали, что необходимо сделать для того, что бы она воспринимала модификаторы.
Остается собрать наш проект и запустить на плате TiTAN-I.
Поздравляем!
Благодаря двум частям этого урока вы освоили 6 очень важных функций:
- Часы реального времени;
- интерфейс I2C;
- LCD-дисплеи на контроллерах PCF2119x и HD44780; — встроенный в CC430F5137 приемопередатчик CC1101;
- расширенную функцию printf.