реклама на сайте
подробности

 
 
> LPC1768, UART
addi II
сообщение Jan 26 2018, 21:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 277
Регистрация: 1-02-16
Пользователь №: 90 294



Здравствуйте!
Проблема с FIFO буфером UART3
Адрес RX и TX совпадают, при передачи данных передаются отчасти приходящие данные wacko.gif
Код из примера:
Код
#define THRE (1<<5) // Transmit Holding Register Empty
void U0Write(char data)
{
     while ( !(U0LSR & THRE ) ); // wait till the THR is empty
     // now we can write to the Tx FIFO
     U0THR = data;
}


Подскажите пожалуйста кто знает как с этим бороться... smile3046.gif

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jan 27 2018, 13:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(addi II @ Jan 26 2018, 23:22) *
Подскажите пожалуйста кто знает как с этим бороться... smile3046.gif

Только искать баги у себя в ПО или в схемотехнике (вывод TX как-то пролазит на RX). Больше никак.
Go to the top of the page
 
+Quote Post
svss
сообщение Jan 28 2018, 11:36
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 231
Регистрация: 19-12-08
Из: Новосибирск
Пользователь №: 42 594



Цитата(jcxz @ Jan 27 2018, 19:03) *
Только искать баги у себя ... Больше никак.

В-общем, да.
Однако можно попробовать задачу изложить поточнее: каким боком участвует FIFO,
что обозначает "адрес Rx и Tx совпадают" и что такое "отчасти".

В принципе код корректный, и всё должно работать.
Для уменьшения нагрузки на CPU нехудо б использовать прерывания.
Счётчик прерываний мог бы помочь отлаживать..
А так - нипишИте тест, подключИте осциллограф и найдИте отличие переданного по проволоке от записанного в регистр.

Ну и, конечно, упущено объяснение, откуда известно, что данные "передаются отчасти", а не "принимаются не все".
Go to the top of the page
 
+Quote Post
addi II
сообщение Jan 30 2018, 22:17
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 277
Регистрация: 1-02-16
Пользователь №: 90 294



Проверил подключение, все в порядке
Снифирил поток данных, в итоге получается следующее - Вместо 10 аски символов передается 2 нуля(аски) и далее самостоятельно(в коде такого разделения нет, просто передаю последовательно 10 байт) 8 оставшихся, но данные берутся с приемного буфера
Такое ощущение что проблема как раз с FIFO, я не понимаю как разделять на RXFIFO и TXFIFO... и не понятно почему нет альтернативной передачи одного байта(и приема) без FIFO
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 31 2018, 06:38
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(addi II @ Jan 31 2018, 00:17) *
Такое ощущение что проблема как раз с FIFO, я не понимаю как разделять на RXFIFO и TXFIFO...

На моей прошлой работе на LPC17xx сделана была целая линейка устройств и уже лет 8 как продаются. За это время уже много десятков тысяч у заказчиков работают. В каждом - используются все UART-ы. И как-то они годами непрерывно работают без сбоев. И вообще LPC17xx - давно уже стала классикой среди LPC - очень много народу их использовала.
И сейчас появляетесь Вы и находите баг в его FIFO. Не находите это странным? biggrin.gif

Цитата(addi II @ Jan 31 2018, 00:17) *
и не понятно почему нет альтернативной передачи одного байта(и приема) без FIFO

С чего бы нет-то? FIFO там вполне себе отключаемое.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 04:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016