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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Дополнительный UART
dmyl
сообщение Jun 21 2006, 12:29
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Устройство на ARM7 от филипса. Кристаллы 2214 и 2138.
Нужно 2xRS232 и 1хRS485, получается нужен третий UART, на кристаллах только пара. Как бы попроще и покрасивее сделать?
Есть вроде конвертеры SPI-UART или подобные. Может решал кто похожую задачу.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 21 2006, 12:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А программный UART не устраивает (вопрос чисто теоретический)?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 21 2006, 13:03
Сообщение #3


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Подцепить 8-битку подешевле с SPI и UART, ту же Мегу8.
При желании накрутить на нее дополнительную функциональность - типа динамической индикации или опроса клавиатуры.
Из Меги161 можно вообще получить шикарный периферийный контроллер с двумя UART/


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
dmyl
сообщение Jun 21 2006, 13:09
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(rezident @ Jun 21 2006, 17:40) *
А программный UART не устраивает (вопрос чисто теоретический)?

Ну честно говоря даже на задумывался. Делал раньше его, но тогда и UARTa на крисиалле не было совсем. Не думал что когда-то придется к этому вернуться. В принципе если есть возможность найти на LPC готовый код программного УАРТа, который с небольшими переделками реально воткнуть, то вообщем это хороший вариант.

Насчет SPI->UART, есть готовые типа MAX3100, но с ними не работал. Смотрю я на них - они вроде бы включены слэйвом - так что получается их опрашивать постоянно надо - не лучше чем программый.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 21 2006, 13:15
Сообщение #5


Гуру
******

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



Цитата(dmyl @ Jun 21 2006, 17:09) *
Насчет SPI->UART, есть готовые типа MAX3100, но с ними не работал. Смотрю я на них - они вроде бы включены слэйвом - так что получается их опрашивать постоянно надо - не лучше чем программый.

У MAX3100 на прием есть FIFO и прерывание, так что опрашивать постоянно не придется. С передачей несколько хуже, так как буферизация отсутствует, но если не нужно гнать большой поток - вполне нормальный вариант.
Go to the top of the page
 
+Quote Post
dmyl
сообщение Jun 21 2006, 13:37
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(aaarrr @ Jun 21 2006, 18:15) *
У MAX3100 на прием есть FIFO и прерывание, так что опрашивать постоянно не придется. С передачей несколько хуже, так как буферизация отсутствует, но если не нужно гнать большой поток - вполне нормальный вариант.

Сорри, IRQ не заметил. Кстати буферизация выходная на один байт все равно получается есть? Регистра то два - буфер и шифтер. Значит непрерывная передача возможна.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 21 2006, 13:50
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(dmyl @ Jun 21 2006, 19:09) *
Ну честно говоря даже на задумывался. Делал раньше его, но тогда и UARTa на крисиалле не было совсем. Не думал что когда-то придется к этому вернуться. В принципе если есть возможность найти на LPC готовый код программного УАРТа, который с небольшими переделками реально воткнуть, то вообщем это хороший вариант.

Я указал "чисто теоретически" потому, что непосредственно с ARM я не работал. Но на MSP430 делал UART, используя функции Capture и Compare в режиме PWM таймера. Может тут тоже нечто подобное (аппартно-полупрограммное) замутить? ИМХО имеет смысл для RS485, т.к. все равно там полудуплекс.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 21 2006, 13:54
Сообщение #8


Гуру
******

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



Цитата(dmyl @ Jun 21 2006, 17:37) *
Кстати буферизация выходная на один байт все равно получается есть? Регистра то два - буфер и шифтер. Значит непрерывная передача возможна.

Как-то мутно этот момент документирован. С одной стороны, вроде как есть буфер, с другой - не вполне понятны условия установки бита T. На железе я этот момент не проверял, т.к. сплошной поток не был нужен.
Go to the top of the page
 
+Quote Post
Romario
сообщение Jun 21 2006, 14:08
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



ну вот мой софтверный уарт на 9600 при 4 сэмплах на бит. для LPC2138. алгоритм типа оверсемплинга.
что там что уже не помню (давно делал и больше не возвращался), выдрал из проекта если заинтересует или чтото будет непонятно отвечу конкретно.

p.s. там что-то лишнее, что может смутить - не обращай вниманияsmile.gif

p.p.s да, все переменные там 32 битные

Сообщение отредактировал Romario - Jun 21 2006, 14:10
Прикрепленные файлы
Прикрепленный файл  uart.txt ( 4.54 килобайт ) Кол-во скачиваний: 144
 
Go to the top of the page
 
+Quote Post
dmyl
сообщение Jun 21 2006, 14:08
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(rezident @ Jun 21 2006, 18:50) *
Я указал "чисто теоретически" потому, что непосредственно с ARM я не работал. Но на MSP430 делал UART, используя функции Capture и Compare в режиме PWM таймера. Может тут тоже нечто подобное (аппартно-полупрограммное) замутить? ИМХО имеет смысл для RS485, т.к. все равно там полудуплекс.

Да хватило бы таймера, можно и сделать. А разницы на 485 или 232 большой нет. Тем более что у меня и на 232 похоже будет полудуплекс. Вопрос теперь что проще - запрограммировать SPI или написать программный УАРТ.
Go to the top of the page
 
+Quote Post
dmyl
сообщение Jun 21 2006, 14:21
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032



Цитата(Romario @ Jun 21 2006, 19:08) *
ну вот мой софтверный уарт на 9600 при 4 сэмплах на бит. для LPC2138. алгоритм типа оверсемплинга.
что там что уже не помню (давно делал и больше не возвращался), выдрал из проекта если заинтересует или чтото будет непонятно отвечу конкретно.

p.s. там что-то лишнее, что может смутить - не обращай вниманияsmile.gif

p.p.s да, все переменные там 32 битные

Взял. Посмотрю. А почему 4? Я делал на 3 с мажоритарным выбором. Все равно 8дата+старт+стоп=10, с четностью 11, ну стартовый опрашивается в начале, в данные не попадает, пусть 9..10, умножить на 4=36...40 в 32 не помещаются? Или стоповый тоже надо проверять отдельно. Четность наверное тоже нужна.
Go to the top of the page
 
+Quote Post
Romario
сообщение Jun 21 2006, 14:37
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



Цитата
Взял. Посмотрю. А почему 4? Я делал на 3 с мажоритарным выбором. Все равно 8дата+старт+стоп=10, с четностью 11, ну стартовый опрашивается в начале, в данные не попадает, пусть 9..10, умножить на 4=36...40 в 32 не помещаются? Или стоповый тоже надо проверять отдельно. Четность наверное тоже нужна.


- почему 4? да так захотелосьsmile.gif можно было 2 но опасно. Мажоритарный сэмплинг и то что у меня там
(а вернее модификация аппликухи от чипкона) немного разные вещи. При мажоритарной выборке не сохраняется предыстория (3 выборки, выбрал, определил бит и забыл) а алгоритм оверсемплинга ее требует.

- твои цифры я не понял. 32 битные потому, что если, например, взять 8 битные то в операция сравнения
компилер будет делать ненужные and 0xff а это всетаки ISR smile.gif вобщем пяток 32 битных переменных наверное не будет жалкоsmile.gif.

p.s. еще оптимизацию включить обязательно и тогда эта isr'ка довольно компактная - я пытался переписать ее на asm но замучался и понял что выиграю совсем тьфу.

Сообщение отредактировал Romario - Jun 21 2006, 14:41
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 21 2006, 17:01
Сообщение #13


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Все три уарта для ввода/вывода?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
acex2
сообщение Jun 21 2006, 17:01
Сообщение #14


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Если нет боязни пропустить важные данные или предусматривается работа запрос-ответ, то самым дешевым способом будет внешний мультиплексор.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Jun 22 2006, 03:15
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(dmyl @ Jun 21 2006, 20:08) *
Цитата(rezident @ Jun 21 2006, 18:50) *

Я указал "чисто теоретически" потому, что непосредственно с ARM я не работал. Но на MSP430 делал UART, используя функции Capture и Compare в режиме PWM таймера. Может тут тоже нечто подобное (аппартно-полупрограммное) замутить? ИМХО имеет смысл для RS485, т.к. все равно там полудуплекс.

Да хватило бы таймера, можно и сделать. А разницы на 485 или 232 большой нет. Тем более что у меня и на 232 похоже будет полудуплекс. Вопрос теперь что проще - запрограммировать SPI или написать программный УАРТ.


Вопрос тиражности изделия. Если изделие единичное, можно поставить дополнительную периферию. Хотя еще не факт, что програмно с ней проще будет работать, чем с программным uart.
На LPC 60МГц можно сделать программный uart до скоростей 19200 достаточно просто. Для облегчения задачи завести Rx на пин, который может детектировать прерывание по заднему фронту.
Можно uart сделать в fiq, а прерывания готовности приемника/передатчика сделать через программные прерывания и irq. Тогда критические секции не будут влиять на работу uart и добавлять джиттер.

Цитата(acex2 @ Jun 21 2006, 23:01) *
Если нет боязни пропустить важные данные или предусматривается работа запрос-ответ, то самым дешевым способом будет внешний мультиплексор.


Имхо, самый дешевый способ - програмный uart. Стоимость ~ == строимости 3-4 часов работы программиста, единовременно.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 16:59
Рейтинг@Mail.ru


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