Радиомодуль NRF24LE1 предсталяет собой не только приемопередатчик, но и полноценный микроконтроллер с ядром 8051. А это значит, что у него есть вся необходимая периферия, которая присутствует у большинства современных микроконтроллеров. И одним из самых полезных периферийных модулей является UART, позволяющий общаться с другими контроллерами и даже компьютерами через RS232.

В предыдущем материале было показано, как начать программировать NRF24LE1 и мигать с помощью него светодиодами. В данной же статье будет продемонстрировано, как запрограммировать интерфейсный модуль UART на этом чипе.
UART (Universal Asynchronous Receiver / Transmitter или универсальный асинхронный приемник / передатчик) представляет собой способ последовательной передачи данных, который использует два провода: один для передачи (Tx) и один для приема (Rx). В пакете данных используются старт- и стоп-биты, чтобы указать начало и конец пакета. Также есть возможность использовать бит четности внутри данных, чтобы при необходимости указать на ошибку в переданных данных. Перед использованием UART нужно объявить скорость передачи данных, измеряемую в бодах. Наиболее распространенная скорость передачи равна 9600 бод (бит в секунду). Модуль NRF24LE1 предлагает различные скорости передачи данных, начиная с 600 бод и заканчивая 38400 бод. Для UART в данном модуле выделен вывод 3 порта 0 (P0.3) для Tx и вывод 4 порта 0 (P0.4) для Rx.
Функции, которые являются полезными для использования UART, следующие:
hal_uart_init() – эта функция принимает скорость в бодах для использования модулем UART.
hal_uart_tx_complete() – проверяет завершение передачи.
hal_uart_putchar() – эта функция принимает символы для передачи.
hal_uart_chars_available() – проверяет, был ли получен символ или нет.
hal_uart_getchar() – возвращает принятый символ.
Для того, чтобы проверять работу UART, можно подключить переходник USB-UART, как показано на приведенной ниже схеме.

Далее приведем код, который позволит передавать строку Hello Everyone по UART.
#include"reg24le1.h"
#include"hal_uart.h" // для использования UART обязательно подключаем этот заголовочный файл
#include"hal_delay.h"
// функция для формирования строки из символов
void putstring(char *s)
{
while(*s != 0)
hal_uart_putchar(*s++);
}
// основная функция
void main()
{
P0DIR = 0xf0; // устанавливаем P03 на выход и P04 на вход
// инициализируем UART со скоростью 9600 бод
hal_uart_init(UART_BAUD_9K6);
// разрешаем глобальные прерывания
EA = 1;
//бесконечный цикл
while(1)
{
// печатаем "Hello Everyone"
putstring("\r\nHello Everyone!!\r\n") ;
delay_ms(1000); // задержка 1 секунда
}
}
© digitrode.ru