Перейти к содержанию
    

UART как средство пробуждения процессора

В общем суть в том, что есть некий процессор, который должен мониторить данные, приходящие к нему по SCI(он-же UART, он-же RS-232, только у этого другие уровни сигналов кажется).

Процессор жрущий не мало питания и его нужно переводить в состояние HALT для энергосбережения.

Проблема с его пробуждением.

Требуется подать на определённую ногу сигнал низкого уровня и продержать его ~10ms до пробуждения.

Специфика данных такова, что можно пропустить первые 8-10 байтов.

Остальные нужно уже принимать.

 

Есть идея сделать аппаратный wakeup, который бы смог это реализовать.

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

Как думаете, реально?

Скорость порта 19200.

можно снизить до 9600, но с доп. телодвижениями.

 

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

 

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

 

 

Ой, а может это больше к аналоговой технике относится.

Господа модераторы, если я ошибся - перенесите тему. ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

например на 555 микросхеме можно сгенерить такой импульс. Посмотрите еще на тип АГ(есть их импортные аналоги).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

плата всего устройства размером с Sony Memory Stick PRO Duo ))

Нужно что-то ооооочень компактное.

поэтому и думаю о smd транзисторе...

 

Кстати есть способ перед засыпанием снизить скорость порта.

т.е. кол-во битов за 10ms можно существенно снизить(в 16 раз)!

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

 

Теперь вопрос только в схемотехнике.

Завтра подумаю как всё завернуть по проще.

Чтоб на одном-двух транзисторах.

 

Ну или если кто подскажет к тому времени... ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у процессора нет своего 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-цепочка. Кстати странно что у процессора внутри нет такой защелки триггера на вход прерывания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На процессоре нет механизма, позволяющего реализовать это. Он когда входит в HALT, то единственное, что его может разбудить, это низкий уровень на одном из портов GPIOA или на XRS. XRS требует больее продолжительного времени, к тому-же если его передержать то будет аппаратный сброс. Поэтому его использовать не хочу.

Проц TMS320F28335.

Большое спасибо!

Идея с триггером действительно на много красивее!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почему-то нигде не могу найти параметры самой линии. т.е. уровни сигналов, какая нагрузочная способность выхода обычно(можно ли вешать туда ещё и триггер, какой запас будет).

Google уверенно пинает меня в сторону общих вопросов.

Нашел инфу только по RS-232 с +/-15ти вольтовыми уровнями. А это не то!

 

Help )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, у меня 3.3V

Десяток-другой - это хорошо!

Просто хотел глянуть в документацию, чтоб всё по науке ))

 

что-то я не пойму на чём макет собрать.

У К155ЛА3 ведь может быть выход более 3.3v.

У меня на проце все входы не 5v tolerant.

Подскажите есть ли отечественная логика 3.3v или какой-нибудь другой способ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дык поставьте на выходе ЛА3 резистор где нить на 1 кОм и стабилитрон на 3,3В, вот вам и будет 3 вольта на выходе. А вот логики советской на 3 вольта не знаю. Разве что 561 серию от 3 вольт питать, вроде они при таком напряжении работают, но будут ли согласованы уровни с процом, это вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если взять с открытым коллектором(К155ЛА18).

Высокий уровень формировать подтяжкой к +3.3 а низкий он и в африке низкий будет.

Пойдёт такая схема? ЛА18 как раз есть у меня в наличии....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не получается так, как я хотел.

1. Всё-таки нужно "отпустить" вывод обратно в единицу.

Поэтому триггер был выброшен и вывод проца был подключен непосредственно к RXD.

Получается start bit его к земле прижимает, а любой следующий не нулевой бит - его как-бы отпускает. Работает. Проц пробуждается по поступлению данных в порт.

2. Но сама подсистема SCI не успевает принять данные!

Ситуация у меня следующая:

в момент входящего звонка на порт приходит

RING

 

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

 

Я расчитывал на то, что RING и часть *ECAV я просплю, а номер принять успею.

Но не тут-то было!

SCI видимо просыпается дольше проца и принять удаётся только следующий RING(а он приходит на много позднее!)

 

Может быть есть какие-нибудь аппаратные буферы UART?

Чтоб пока проц просыпается, данные туда сложить...... даже не знаю что и делать.

Без режима энергосбережения никак нельзя, а тут вон какая проблемка))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все у теж же TI есть FIFO буферы может что подойдет. Правда еще нигде не видел чтобы их использовали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может кто-то встречал что-то по-компактнее? И попроще?

Может есть совсем простенькие чисто для UART?

Дело в том, что ведь эти FIFO без проца просто хлам.

Но наверное ничего такого не бывает, чтоб тупо для UART был отдельный FIFO - это кажется фантастикой))

 

 

Нашел я там чуть другой способ....в общем пошло шаманство ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...