Запускаем Cubieboard2 UART

Для работы с UART на Cubieboard2 под Android необходимо:

  1. Поставить Android Terminal Emulator
  2. Поставить например Serial Port API Sample или любую другую программу для работы с UART
  3. Иметь на компе любой терминал. Я использую такой терминал

Теперь собственно мы готовы к работе.

Запускаем Терминал эмулятор

Пишем в нем:

$ su
# ls -l /dev/ttyS*

Получаем список UART портов. У меня ttyS0, ttyS2. У них нет прав на запись и чтение, даем их им (по этому поводу моно почитать здесь):

# chmod 666 /dev/ttyS*

ОК. Идем дальше. Запускаем Serial Port:

Setup -> Device -> /dev/ttyS0
Setup -> Baud rate -> 115200

Нажимем Loopback.

Соединяемся

Теперь требуется каким-либо образом соединить UART компа с устройством.

Для этого можно использовать FT232RL или плату о которой я говорил в прошлый раз. Если используете DVK521 то не забудьте подключить проводок:

На Cubie и на DVK521 соединить UART.

Переходим к компу

К USB порту на расширительной плате подключаем комп. Драйверы для платы PL2303 можно установить здесь.

Запускаем Terminal на компутере. Выбираем соответствующий COM порт и скорость 115200, соединяемся. Если на Cubie запустить Loopback то в Терминале сразу польется поток хрени. Это значит что все работает.

Более вразумительной проверкой работоспособности можно в Console

Флэшка своими руками

Привет всем. Для создания своей флэшки с блэк джеком и шлюхами я взял модуль памяти M25P32 (документация), контроллер ATMega168 (документация) и конвертер USB<->UART (SerialPort) (документация).

И так. Зачем все это нужно?

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

Схема

Без имени-2

Это документация на используемые схемы. Там же и есть способы их подключения.

FT232RL_V202 m25p32 atmega168

 

 

 

 

 

 

По сути же схема выглядит так

 

Протоколы

Здесь мы используем 2 основных протокола. Это UART и SPI оба они реализованы в контроллере, остается только привести их в удобный для себя вид.

Терминал

 

Основные ошибки с UARTом:

  • Забыть линию TXD настроить выходом ( например DDRD |= (1<<PD1) )
  • Скорость передачи лучше брать из стандартного ряда а значения для UBBR из мануала

Для проверки я использовал вот эту прогу (Terminal)

Не забывать при SPI:

  • Задать все порты (входы выходы)
  • Давать задержку между передачей и принятием данных

Программа

Для своего удобства разделил программу на несколько блоков

Вообще-то этот проект сделан чтобы автоматически прибавлять числа и записывать в память, но от изначальной задачи он отличается совсем немного.

Все изменения будут заключены в одном единственном блоке.

Пусть у нас будет 3 комманды:

  1. Запись данных
  2. Считывание данных
  3. Стирание

Изменения будут только в блоке прерывания:

ISR(USART_RX_vect){
 if(command==0xFF){
  command = UDR0;
 }else{
  switch(command){
   case 0x01://Запись данных

   break;
   case 0x02://Чтение данных

   break;
   case 0x03://Стирание данных

   break;
  }
 }
}

Проект

SoftWare

Наверное отдельно рассмотрю как делать ПО для такого типа приложений в другой статье. Но в общем и целом эта программа должна подключаться к одному из COM портов и передавать определенные пакеты данных.

HardWare

Это плата на которой это все тестилось.

2013-02-13 11.40.52

 

Питание так же от USB.

Заключение

Самое лучшее применение этой идеи, я думаю в дистанционных приборах, которые остаются где-либо и записывают что-то. Потом, с помощью специальной программы данные считываются и обрабатываются.