Содержание
Урок 1. Первый проект
Урок 2. Управление кнопками
Урок 3. Подключение LCD
Урок 4. Использование ШИМ
Урок 5. Таймеры
Урок 6.1. Статическая индикация
Урок 6.2. Динамическая индикация
Урок 7.1. Генерация звука
Урок 7.2. Генерация звука. Продолжение
Урок 8.1. Передача данных через UART
Урок 8.2. Передача данных через UART. Продолжение»
Урок 9. Передача данных через SPI
Урок 10. Изучение АЦП. Простой вольтметр
Урок 11. Получение синуса при помощи ШИМ
Урок 12. Измерение температуры
Урок 13. Внешние прерывания.
Урок 14. Использование отладчика
Урок 15.1. Управление инкрементальным энкодером
Урок 15.2. Управление громкостью, при помощи энкодера
Урок 16. Управление RGB светодиодом
Урок 17. Использование ИК
Урок 18.1. Знакомство с графическим дисплеем
Урок 18.2 Вывод изображения на графический дисплей
Урок 18.3 Вывод русскоязычного текста
Урок 19. Формирование сигнала, при помощи ЦАП (R2R)
Урок 20. Опрос матричной клавиатуры
Урок 21. Сторожевой таймер
Урок 22.1 Воспроизведение wav. Введение.
Урок 22.2 Воспроизведение wav. Продолжение.
Урок 23.1 Работа с внешней памятью
Урок 23.2 Работа с файловой системой Fat

Двигаемся дальше, сегодняшней целью является UART. Попробуем покидать байты между ПК и малиной.

В прошлый раз не упомянул, но для настройки параметров платы есть специальная тулза. Разобраться в ней не составит труда.

sudo raspi-config

Так к чему же это? Как уже я говорил по дефолту в уарт сыпятся все системные сообщения. В предыдущих версиях Raspbian через конфиг можно было выключить уарт, при этом как устройство он оставался доступным, но отключались системные сообщения. В последних версиях похоже это изменилось. Нужно чтобы уарт был включен в конфиге, а системные сообщения отцепляются командой

systemctl mask serial-getty@ttyAMA0.service

После настройки и перезагрузки убедитесь, что уарт включен, в списке устройств он выглядит как ttyAMA0, но вроде как название может быть и другим.
ttyama0

После этого нужно убедиться что последовательный порт работает. Для этого подсоединяем к компу через USB-UART переходник, скачиваем minicom и запускаем.

minicom -b 9600 -o -D /dev/ttyAMA0

Пуляем байты и видим их на ПК. Все работает шикарно. Теперь попробуем что нибудь написать на Си.

#include 
#include                 
#include                      
#include            

void main(int argc, char *argv[])
{
        int fp;

        fp = open ("/dev/ttyAMA0", O_RDWR | O_NOCTTY | O_NDELAY);

        struct termios uart_param;
        tcgetattr(fp, &uart_param);
        uart_param.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
        uart_param.c_iflag = IGNPAR;
        uart_param.c_oflag = 0;
        uart_param.c_lflag = 0;
        tcflush(fp, TCIFLUSH);
        tcsetattr(fp, TCSANOW, &uart_param);

        write(fp, "hello", 5);
        close(fp);
}

B9600 — Бодрейт, соответственно, если нужно 115200, то ставим B115200.
CS8 — количество бит.
CLOCAL — без использования линий RTS, CTS
CREAD — включить приемник
IGNPAR — откидывать байты, не прошедшие проверку четности

В общем то и все, в терминал на десктопе прилетят заветные hello. Если нужно читать байты, то делается точно также функцией read.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Счетчик
Яндекс.Метрика