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

 
 
> UART через PDC в AT91RM9200
Renik
сообщение Oct 23 2007, 04:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 29-05-07
Пользователь №: 28 025



Привет всем.

Есть платка от аргуссофта AS9200.
В datasheet на микроконтроллер написано, что предусмотрен режим ПДП для работы с последовательным портом. Также написано что формат обмена PDC может быть разным: «Depending on the type of transfer (byte, half-word or word), the memory pointer is incremented by 1, 2 or 4, respectively for peripheral transfers…».

Настраивал UART в 9-битный режим через PDC и контроллер завис.
Однако, при настройке в восьмибитный режим через ПДП - передача работала, равно как и при настройке в 9-битный режим без ПДП.

В чем может быть трабл? По сколько битов PDC для UART берет из памяти за одну транзакцию?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Oct 23 2007, 05:52
Сообщение #2


Гуру
******

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



PDC, по идее, должен брать по 2 байта на символ для 9-бит режима UART.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 23 2007, 12:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Oct 23 2007, 09:52) *
PDC, по идее, должен брать по 2 байта на символ для 9-бит режима UART.


USART передает байт данных в различных форматах, но всегда единицей информации длины для него будет 1 байт. Соответственно и PDC должен работать с байтовыми буферами.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 23 2007, 13:30
Сообщение #4


Гуру
******

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



Цитата(sergeeff @ Oct 23 2007, 16:54) *
USART передает байт данных в различных форматах, но всегда единицей информации длины для него будет 1 байт. Соответственно и PDC должен работать с байтовыми буферами.

Не поленился даже проверить. В 9-бит режиме PDC выбирает 2 байта на символ.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 23 2007, 16:13
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Oct 23 2007, 17:30) *
Не поленился даже проверить. В 9-бит режиме PDC выбирает 2 байта на символ.


Прошу пардона. А что это за 9-битный режим, если не секрет?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 23 2007, 16:21
Сообщение #6


Гуру
******

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



Цитата(sergeeff @ Oct 23 2007, 20:13) *
А что это за 9-битный режим, если не секрет?

Режим с девятью битами данных, несколько экзотичный. Включается битом MODE9 в USART_MR.
О работе PDC этом режиме в документации упомянуть забыли, видимо посчитав это очевидным.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 23 2007, 16:28
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Oct 23 2007, 20:21) *
Режим с девятью битами данных, несколько экзотичный. Включается битом MODE9 в USART_MR.
О работе PDC этом режиме в документации упомянуть забыли, видимо посчитав это очевидным.


Да вот вычитал у Atmel (doc1354.pdf): p.105
Each USART channel is closely connected to a corresponding Peripheral Data Controller
channel. One is dedicated to the receiver. The other is dedicated to the transmitter.
Note: The PDC is disabled if 9-bit character length is selected (MODE9 = 1) in US_MR.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 23 2007, 16:47
Сообщение #8


Гуру
******

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



Цитата(sergeeff @ Oct 23 2007, 20:28) *
Да вот вычитал у Atmel (doc1354.pdf): p.105

doc1354 - это даташит на AT91M40800 и его производные. Эти контроллеры относятся к предыдущему поколению, и PDC у них совсем другой.

С UART'ом, кстати, через PDC на них было крайне неудобно работать - как только кончался буфер (а он был один) приходилось начинать пляски с бубном, переключая прием на прерывания и перепрограммируя в это время PDC.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 23 2007, 17:01
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Oct 23 2007, 20:47) *
doc1354 - это даташит на AT91M40800 и его производные. Эти контроллеры относятся к предыдущему поколению, и PDC у них совсем другой.

С UART'ом, кстати, через PDC на них было крайне неудобно работать - как только кончался буфер (а он был один) приходилось начинать пляски с бубном, переключая прием на прерывания и перепрограммируя в это время PDC.


Про старые процессоры - это правильно. Но ведь у спросившего коллеги в этом режиме PDC тоже не работает? Поэтому, мне думается, что mode9 с pdc и в новых процессорах может не дружить.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 00:19
Рейтинг@Mail.ru


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