Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: UART как средство пробуждения процессора
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
sigmaN
В общем суть в том, что есть некий процессор, который должен мониторить данные, приходящие к нему по SCI(он-же UART, он-же RS-232, только у этого другие уровни сигналов кажется).
Процессор жрущий не мало питания и его нужно переводить в состояние HALT для энергосбережения.
Проблема с его пробуждением.
Требуется подать на определённую ногу сигнал низкого уровня и продержать его ~10ms до пробуждения.
Специфика данных такова, что можно пропустить первые 8-10 байтов.
Остальные нужно уже принимать.

Есть идея сделать аппаратный wakeup, который бы смог это реализовать.
Схемка должна сработать на низкий уровень старт бита и подать на ногу проца этот уровень, но с задержкой). Что и требуется для его пробуждения из спячки.
Как думаете, реально?
Скорость порта 19200.
можно снизить до 9600, но с доп. телодвижениями.

Думаю что-то вроде транзистора и конденсатора(обеспечивающего эту задержку).

Как вообще, реально всё это? Или научная фантастика smile.gif


Ой, а может это больше к аналоговой технике относится.
Господа модераторы, если я ошибся - перенесите тему. ))
arttab
например на 555 микросхеме можно сгенерить такой импульс. Посмотрите еще на тип АГ(есть их импортные аналоги).
sigmaN
плата всего устройства размером с Sony Memory Stick PRO Duo ))
Нужно что-то ооооочень компактное.
поэтому и думаю о smd транзисторе...

Кстати есть способ перед засыпанием снизить скорость порта.
т.е. кол-во битов за 10ms можно существенно снизить(в 16 раз)!
При прочих равных - времени на просыпание и на срабатывание схемы, становится больше в те самые 16 раз! Так что думаю точно всё получится.

Теперь вопрос только в схемотехнике.
Завтра подумаю как всё завернуть по проще.
Чтоб на одном-двух транзисторах.

Ну или если кто подскажет к тому времени... ))
uriy
А у процессора нет своего wakeup если пришли данные на UART?
Цитата
Кстати есть способ перед засыпанием снизить скорость порта. т.е. кол-во битов за 10ms можно существенно снизить(в 16 раз)!
У вас есть способ сделать так чтобы на другом конце UART скорость тоже менялась в нужные моменты? Иначе же данные будут искажены. Может быть вам лучше поставить RS-триггер. Например на вход R будет соединена линия UART, когда там появится нолик он сбросит триггер и на его выходе тоже будет ноль. Один из выводов процессора соединить на вход S, куда будет подаваться сигнал с проца после пробуждения. RS-триггер наверно можно найти готовый или собрать на логике. BGA корпус размером примерно 1х2 мм у TI, посмотрю что у них есть.
=============================
Вот нашел 2И-НЕ SN74LVC2G00.pdf размер 8-выводного BGA 0,95х1,95 мм или SOP корпус размерами 3,2х2,1. На мой взгляд это куда лучше чем RC-цепочка. Кстати странно что у процессора внутри нет такой защелки триггера на вход прерывания.
sigmaN
На процессоре нет механизма, позволяющего реализовать это. Он когда входит в HALT, то единственное, что его может разбудить, это низкий уровень на одном из портов GPIOA или на XRS. XRS требует больее продолжительного времени, к тому-же если его передержать то будет аппаратный сброс. Поэтому его использовать не хочу.
Проц TMS320F28335.
Большое спасибо!
Идея с триггером действительно на много красивее!
sigmaN
почему-то нигде не могу найти параметры самой линии. т.е. уровни сигналов, какая нагрузочная способность выхода обычно(можно ли вешать туда ещё и триггер, какой запас будет).
Google уверенно пинает меня в сторону общих вопросов.
Нашел инфу только по RS-232 с +/-15ти вольтовыми уровнями. А это не то!

Help )))
uriy
Цитата
почему-то нигде не могу найти параметры самой линии. т.е. уровни сигналов, какая нагрузочная способность выхода обычно(можно ли вешать туда ещё и триггер, какой запас будет).
Не понял. У вас все таки что? Если вы подаете на входы проца то там должны быть уровни 0-3,3В или (0-5,0В) ваш процессор думаю скорее всего 3 вольтовый. А триггер можно подцепить без проблем, у него же большое входное сопротивление. Думаю если даже подцепить десяток другой входов триггера это никак не повлияет на линию.
sigmaN
Да, у меня 3.3V
Десяток-другой - это хорошо!
Просто хотел глянуть в документацию, чтоб всё по науке ))

что-то я не пойму на чём макет собрать.
У К155ЛА3 ведь может быть выход более 3.3v.
У меня на проце все входы не 5v tolerant.
Подскажите есть ли отечественная логика 3.3v или какой-нибудь другой способ.
uriy
Дык поставьте на выходе ЛА3 резистор где нить на 1 кОм и стабилитрон на 3,3В, вот вам и будет 3 вольта на выходе. А вот логики советской на 3 вольта не знаю. Разве что 561 серию от 3 вольт питать, вроде они при таком напряжении работают, но будут ли согласованы уровни с процом, это вопрос.
sigmaN
А если взять с открытым коллектором(К155ЛА18).
Высокий уровень формировать подтяжкой к +3.3 а низкий он и в африке низкий будет.
Пойдёт такая схема? ЛА18 как раз есть у меня в наличии....
uriy
да пойдет.
sigmaN
Не получается так, как я хотел.
1. Всё-таки нужно "отпустить" вывод обратно в единицу.
Поэтому триггер был выброшен и вывод проца был подключен непосредственно к RXD.
Получается start bit его к земле прижимает, а любой следующий не нулевой бит - его как-бы отпускает. Работает. Проц пробуждается по поступлению данных в порт.
2. Но сама подсистема SCI не успевает принять данные!
Ситуация у меня следующая:
в момент входящего звонка на порт приходит
RING

*ECAV: 1,6,1,,,"380508576919",145

Я расчитывал на то, что RING и часть *ECAV я просплю, а номер принять успею.
Но не тут-то было!
SCI видимо просыпается дольше проца и принять удаётся только следующий RING(а он приходит на много позднее!)

Может быть есть какие-нибудь аппаратные буферы UART?
Чтоб пока проц просыпается, данные туда сложить...... даже не знаю что и делать.
Без режима энергосбережения никак нельзя, а тут вон какая проблемка))
uriy
Все у теж же TI есть FIFO буферы может что подойдет. Правда еще нигде не видел чтобы их использовали.
sigmaN
Может кто-то встречал что-то по-компактнее? И попроще?
Может есть совсем простенькие чисто для UART?
Дело в том, что ведь эти FIFO без проца просто хлам.
Но наверное ничего такого не бывает, чтоб тупо для UART был отдельный FIFO - это кажется фантастикой))


Нашел я там чуть другой способ....в общем пошло шаманство ))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.