PIC и последовательные порты

Dec 26, 2003 11 Replies

Hello All!



Приятель собрался делать некоторое устройство на PIC, которое должно включаться "в разрыв провода" между двумя блоками довольно экзотического оборудования и по командам с компа что-то там делать с данными, по этому проводу бегающими. Экзотическое оборудование общается по RS422, скорость 38400. Общение довольно активное. Команды с компа должны поступать через последовательный порт, не часто и не быстро - это задание режима работы и получение некоторой статусной информации. Обязательна гальваническая развязка, ибо у компа на корпусе почти всегда напряжение, а дорогое оборудование подвергать риску нельзя. Из условий задачи следует, что к ПИКу должно быть подключено аж целых три последовательных порта. Программная эмуляция UART не годится по быстродействию. Контроллер будет стоять PIC16F874 (просто он есть в наличии и я уже пообещал предоставить его для экспериментов). Возникает вопрос - какие микросхемы UART предпочтительно использовать? Изучение ассортимента ближайшего магазина показало наличие вот этих:



MAX3140 от MAXIM/Dallas и SC28C94 от Philips. 3140 -- одноканальный дуплексный UART с интегрированной опторазвязкой, приемопередатчком RS422, внутренним кварцем и последовательным интерфейсом. Стоимость около 10уе.



28С94 -- 4-канальный дуплексный UART без приемопередатчиков и внутреннего генератора с параллельным интерфейсом и встроенной логикой обслуживания прерываний. Стоимость около 30уе. Требует двух внешних счетверенных приемопередатчиков по 2уе штука.

Первый выглядит симпатичнее, но смущает упоминание о последовательном интерфейсе. Можно ли два таких подключить к порту I2C ПИКа или это будет слишком медленно, или невозможно вообще? Второй - где бы подсмотреть способ правильного подключения к ПИКу?



Может быть есть еще какие-то подходящие к данному случаю UARTы ?



Заранее благодарю всех за полезные советы...



Zahar(@spbdept.rbc.ru)


Привет Zahar!

Friday December 26 2003 23:33, Zahar Kiselev wrote to All:

ZK> MAX3140 от MAXIM/Dallas и SC28C94 от Philips. ZK>

ZK> 3140 -- одноканальный дуплексный UART с интегрированной ZK> опторазвязкой, приемопередатчком RS422, внутренним кварцем ZK> и последовательным интерфейсом. Стоимость около 10уе. ZK>

ZK> 28С94 -- 4-канальный дуплексный UART без приемопередатчиков ZK> и внутреннего генератора с параллельным интерфейсом и встроенной ZK> логикой обслуживания прерываний. Стоимость около 30уе. ZK> Требует двух внешних счетверенных приемопередатчиков по 2уе штука.

Что это за такие навороченные приемопередатчики? Обычными МАХ202 обойтись нельзя? Обязательно все сигналы нужны?

ZK>

ZK> Первый выглядит симпатичнее, но смущает упоминание о последовательном ZK> интерфейсе. Можно ли два таких подключить к порту I2C ПИКа или это будет ZK> слишком медленно, или невозможно вообще? Второй - где бы подсмотреть ZK> способ правильного подключения к ПИКу? ZK>

ZK> Может быть есть еще какие-то подходящие к данному случаю UARTы ?

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

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link
,
formatting link
, ftp://altor.sytes.net

Hello Alexander!

Dec 27 00:42 03, Alexander Torres wrote to Zahar Kiselev:

ZK>> 3140 -- одноканальный дуплексный UART с интегрированной ZK>> опторазвязкой, приемопередатчком RS422, внутренним кварцем ZK>> и последовательным интерфейсом. Стоимость около 10уе. AT> Что это за такие навороченные приемопередатчики? Обычными МАХ202 AT> обойтись нельзя? Обязательно все сигналы нужны? Дело не в сигналах(хотя по-моему там есть управление потоком, уточню завтра), а в наличии всего готового, прежде всего опторазвязки. Так как конструкция изготавливается в количестве одна штука - лишние несколько баксов за возможность сиьлно уменьшить количество деталей на плате - не кажутся дорогой ценой. Вопрос вызывает лишь быстродействие - хватит ли его при последовательном подключении к ПИКу и скорости 38400 ? Я надеялся что кто-нибудь пробовал подключать такие "последовательные" приемопередатчики к ПИКу и сможет сказать что-то определенное о быстродействии.

AT> В твоем слечае, надо брать конечно контроллер с двумя УАРТами, А что - такие ПИКи бывают? Вообще-то в данном случае даже три порта нужно... Таких точно нет. Вот я и спрашивал - как к ПИКу лучше три порта подключить.

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

Zahar(@spbdept.rbc.ru)

Zahar, ты ещё здесь сидишь?

Суббота Декабрь 27 2003 16:18, Zahar Kiselev wrote to Alexander Torres:

AT>> В твоем слечае, надо брать конечно контроллер с двумя УАРТами, ZK> А что - такие ПИКи бывают?

Да. PIC18F6520/6620/6720/8520/8620/8720. Hе из дешёвых, но если надо...

ZK> Вообще-то в данном случае даже три порта нужно... Таких точно нет. ZK> Вот я и спрашивал - как к ПИКу лучше три порта подключить.

Мне разок приходилось добавлять ещё один проц, ради дополнительного UART'а. Подойдёт дешёвка, вроде AT89C2051 или PIC16F627. Ресурсов с избытком, при желании можно и программный UART на нём слепить...

AT>> - поставь вместо второго УАРТа другой контроллер, и свяжи их AT>> вместе ихним скоростным аппаратным SPI. ZK> Два контроллера вместо одного - слишком сложно потом это ZK> программировать.

Hичего сложного. Только внятный протокол обмена сочинить, да две программки писать, вместо одной. Эта часть за день-два делается.

ZK> В этом отношении параллельное подключение нескольких ZK> приемопередатчиков к одному контроллеру хотя и потребует много ZK> проводов на плате, но в использовании попроще будет.

"Хозяин - барин" (c)

Георгий

Здраствуйте Zahar,

*27.12.03* *16:18:26* Вы писали в *RU.EMBEDDED* сообщение к *Alexander Torres* о *"PIC и последовательные порты"*.

AT>> В твоем слечае, надо брать конечно контроллер с двумя УАРТами, ZK> А что - такие ПИКи бывают?

Да бывают: PIC18F6410; PIC18F6520; PIC18F6620; PIC18F6720; PIC18F8410; PIC18F8520; PIC18F8620; PIC18F8720.

;)

С уважением, Den

Пpивет, Alexander.

Вот что Alexander Torres wrote to Zahar Kiselev:

ZK>> Может быть есть еще какие-то подходящие к данномy слyчаю UARTы ?

AT> В твоем слечае, надо бpать конечно контpоллеp с двyмя УАРТами, но если AT> yж так хочется делать чеpез задницy с одним - поставь вместо втоpого AT> УАРТа дpyгой контpоллеp, и свяжи их вместе ихним скоpостным аппаpатным AT> SPI.

А тyт именно "чеpез задницy" (2 контpоллеpа, связанных SPI) и пpидётся делать. Ведь надо не 2, а 3 UARTа. Мне контpоллеpы с тpемя UARTами как-то не попадались.

Michael G. Belousoff

... ==== Пpоблемy надо pешать до того, как она появится. ====

AT> В твоем слечае, надо бpать конечно контpоллеp с двyмя УАРТами, но если AT> yж так хочется делать чеpез задницy с одним - поставь вместо втоpого AT> УАРТа дpyгой контpоллеp, и свяжи их вместе ихним скоpостным аппаpатным AT> SPI.

MB> А тyт именно "чеpез задницy" (2 контpоллеpа, связанных SPI) MB> и пpидётся делать. Ведь надо не 2, а 3 UARTа. Мне контpоллеpы MB> с тpемя UARTами как-то не попадались.

Таких много, нужно просто поискать. Кроме того, если скорость нужна не большая 1200-9600 то часто можно такой UART реализовать на периферии, например таймере, сделав его полуаппаратным. На MB90F457 у меня используется 3 UART, 2 из них на таймерах.

Hello Michael!

29 Dec 03 18:09, you wrote to Alexander Torres:

MB> А тyт именно "чеpез задницy" (2 контpоллеpа, связанных SPI) MB> и пpидётся делать. Ведь надо не 2, а 3 UARTа. Мне контpоллеpы MB> с тpемя UARTами как-то не попадались.

У ПИКа есть 8 ног в порту Б, и какое-то к-во этих ног можно запрограммировать на прерывание по изменению состояния. Далее, алгоритм ввода элементарен: Измеряется таймером время от предыдущего прерывания по изменению состояния, и в зависимости от этого времени в регистр сдвига заносится N бит текущего состояния входа. Таймаут по приему стопа добавить по вкусу. Мне известна реализация драйвера, позволяющего подключить аналогичным образом к писюку четыре телетайпных канала, и реализация пакетного терминала, эмулирующего синхронный порт.

Anatoly

Alexey, ты ещё здесь сидишь?

Четверг Январь 08 2004 19:37, Alexey Boyko wrote to Zahar Kiselev:

ZK>> Два контроллера вместо одного - слишком сложно потом это ZK>> программировать. В этом отношении параллельное подключение ZK>> нескольких приемопередатчиков к одному контроллеру хотя и ZK>> потребует много проводов на плате, но в использовании попроще ZK>> будет. AB> А прицепить 2-3 шт 16С550 не подойдет?

IMHO _очень_ громоздко.

AB> Есть, в принципе, аналогичные и на 4 канала. (16C554 вроде)

А их достать у нас реально?

Георгий

Hi George.

13 Jan 2004, 03:13, George Shepelev writes to Alexey Boyko:

ZK>> нескольких пpиемопеpедатчиков к одному контpоллеpу хотя и ZK>> потpебует много пpоводов на плате, но в использовании попpоще ZK>> будет. AB> А пpицепить 2-3 шт 16С550 не подойдет?

GS> IMHO _очень_ гpомоздко.

Есть счетвеpённые кpисталлы (4x16550), только названий не помню.

Dimmy.

Здравствуй, Dimmy!

Tuesday January 13 2004 13:14, you (2:469/15) wrote to George Shepelev:

DT> Есть счетвеpённые кpисталлы (4x16550), только названий не помню.

formatting link

Oxford Semiconductor Ltd. Oxford Semiconductor 2001 25 Milton Park, Abingdon, Oxon, OX14 4SH, UK OX16C954 rev B Data Sheet R1.0 _ November 2001 Tel: +44 (0)1235 824900 Fax: +44 (0)1235 821141 Part Nos. OX16C954-PCC60-B / OX16C954_TQC60_B FEATURES · Four independent full-duplex asynchronous 16C950 high performance UART channels · 128-byte deep FIFO per transmitter and receiver · UARTs fully software compatible with industry standard 16C55x type UARTs · Pin compatible with TL16C554 and ST16C654 · Baud rates up to 15 Mbps in normal mode and

60Mbps in external 1x clock (isochronous) mode · Readable FIFO levels · Flexible clock prescaler from 1 to 31.875 · Automated in-band flow control using programmable Xon/Xoff characters, in both directions · Automated out-of-band flow control using CTS#/RTS# and/or DSR#/DTR# · Arbitrary trigger levels for receiver and transmitter FIFO interrupts and automatic in-band and out-ofband flow control · Readable in-band and out-of-band flow control status · Programmable special character detection · Infra-red (IrDA) receiver and transmitter option · 5, 6, 7, 8 and 9-bits data framing · Detection of bad data in the receiver FIFO · Independent channel reset by software · Transmitter and receiver can be disabled · Transmitter idle interrupt · RS-485 buffer enable signals · Four byte device ID · Sleep mode (low operating current) · System clock up to 60 MHz at 5V, 50 MHz at 3.3V · 5.0 volt or 3.3v operation* · 68pin PLCC and 80pin TQFP package options. *Only the 80pin TQFP package supports operation at 5v or 3.3v. REV B ENHANCEMENTS The OX16C954B is an enhanced, backward-compatible revision of the OX16C954 rev A. It uses the newer core as in the OX16C950 rev B. The chief enhancements are as follows _ · All known errata fixed · Full TCR range from 4-16 · Enhanced controls for sleep-mode sensitivity, ability to read FCR and Good Data Status · 3.3V operation with 80 pin TQFP · Enhanced isochronous clocking options (optional inversions, DTR/DSR) Hereafter OX16C954 rev B is simply referred to as OX16C954. OX16C954 rev B High Performance Quad UART with 128-byte FIFOs Intel / Motorola Bus Interface

Alex

Hi Alex.

18 Jan 2004, 04:19, Alex Gavrikov writes to Dimmy Timchenko:

DT> Есть счетвеpённые кpисталлы (4x16550), только названий не помню.

AG>

formatting link

AG> Nos. OX16C954-PCC60-B / OX16C954_TQC60_B AG> FEATURES

Да их много на самом деле. Есть и более пpостые/дешёвые.

Dimmy.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required