Привет всем! 

На этом уроке мы продолжим изучать микроконтроллер 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. 

Видео урок