RS232 через UART
Последние две недели я пытаюсь установить связь между датчиком и моим CC1310, который работает с Contiki NG. Датчик представляет собой метеостанцию, которая каждую минуту выводит информацию (символы ASCII). Он поставляется с интерфейсом RS232, но при питании только от 0 и 5 В его можно использовать с логическими уровнями TTL, учитывая, что уровни инвертированы. Означает, что высокий уровень переводится в 0 в двоичном формате. Измеренное напряжение на линии TX датчика составляет 0 и 3,7 В в течение времени, в течение которого отправляется информация, поэтому только небольшую продолжительность каждую минуту. Это должно быть хорошо для RX UART на CC1310. Моя идея заключалась в том, чтобы соединить TX датчика с RX CC1310 и использовать приведенный ниже код, чтобы просто передавать полученные символы через последовательный порт на ПК.
PROCESS_BEGIN();
serial_line_init();
cc26xx_uart_set_input(serial_line_input_byte);
while(1){
PROCESS_YIELD();
if (ev == serial_line_event_message){
printf(data);
}
}
PROCESS_END();
Однако я не получаю никаких символов. Я имею в виду, что инверсия сигнала должна быть решена на заключительном этапе этого проекта, но, тем не менее, некоторые символы должны распознаваться UART. Поскольку это, похоже, не так, я подключил TX датчика к TX CC1310. Также была подключена перемычка к последовательному порту. В результате я каждую минуту мог видеть неизвестные символы на консоли. Мне кажется, что драйвер UART не распознает разные уровни на линии TX датчика. Есть ли какое-нибудь решение для этого, например, что я мог бы изменить напряжения логических уровней на UART? Может быть, я мог бы также использовать другой порт ADC и написать свой собственный драйвер для датчика? Или у вас есть еще одна идея, как решить проблему?
Спасибо, Лукас