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

 
 
 
Reply to this topicStart new topic
> LPC1768, UART
addi II
сообщение Jan 26 2018, 21:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 267
Регистрация: 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
jcxz
сообщение Jan 27 2018, 13:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 530
Регистрация: 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


Местный
***

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



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


Гуру
******

Группа: Свой
Сообщений: 10 491
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(addi II @ Jan 31 2018, 01:17) *
я не понимаю как разделять на RXFIFO и TXFIFO

Не надо ничего разделять - ваша программа всегда читает RXFIFO и пишет TXFIFO. Писать RXFIFO и читать из TXFIFO физически нельзя. Сами по себе данные из одного FIFO в другое не попадут, ищите ошибки у себя.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 31 2018, 06:38
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 530
Регистрация: 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
Golikov A.
сообщение Jan 31 2018, 19:01
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 247
Регистрация: 17-02-06
Пользователь №: 14 454



Скорее всего человек не чистить фифо перед началом работы, и пока настраивает линию у него наваливается нулей, которые он радостно вычитывает и выдает первыми..
Go to the top of the page
 
+Quote Post
another_one
сообщение Feb 7 2018, 11:01
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 2-03-08
Пользователь №: 35 557



Цитата(Golikov A. @ Jan 31 2018, 22:01) *
Скорее всего человек не чистить фифо перед началом работы, и пока настраивает линию у него наваливается нулей, которые он радостно вычитывает и выдает первыми..

Когда отключают fifo, uart вообще не работает, 0x07 в FCR записывают, сейчас данные передаются не полностью, первые 32 байта передались остальные 12 не передаются, такое ощущение что 16 байт глубина стоит(хотя я поставил передачу и приём по одному байту) и пока буфер не накопиться не будет передача.... И когда добавляю до кратного 16 всеравно оставшиеся 12 байт не передаются


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th May 2018 - 01:10
Рейтинг@Mail.ru


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