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

Ну зачем это все, а? Человеку простой ремапинг подходит, зачем все остальное городить?

начнем с того, что ТС не описал максимальную скважность опросов.

с ремапом все понятно, я пытаюсь описать прелесть другого подхода

 

так-то оно, конечно, да - заремапить и делов

 

вариант с мультиплексором позволит (опять же - если время последовательного опроса не против) описать функцию приема-отправки байтов унифицированно, с единственным дополнительным параметром - номером порта. Еще плюс - освобождение GPIO

минус - место на плате. Опять же - ТС не указывает каких-то дополнительных данных, кроме как просто "мало места"

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


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

adnega, надо 9. чтобы к 8-ми приделать датчики, а по 1 гнать все данные дальше

мультиплексор подойдет...но плату надо минимизировать

А что за датчики? Какой протокол? Датчики шлют данные по свое инициативе или в ответ на запрос?

Почему нельзя работать всем датчикам на одной шине? Есть ли адресация в датчиках/протоколе?

Т.е. датчики напрямую к LVTTL-ногам контроллера подключены без какой либо защиты (раз места мало)?

На каком расстоянии все это должно работать? Что насчет помех?

Не у всех STM32 "нормальный" remap. Какое семейство рассматриваете?

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


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

Надо подбирать МК под задачу, а не пытаться втиснуть задачу в то, что знаете.

На STM свет клином не сошёлся. Например: TM4C129DNCPDT - 8 встроенных UART-ов. Недостающий 9-й можно эмулировать программно.

Или сделать программный 8-канальный UART на датчики, а для 9-го - использовать аппаратный.

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


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

..а что это даст?

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

 

ТС явно делает что-то не так, если ему так дофига UART'ов нужно!

 

то что на другом конце UART-ов имеет одинаковую прошивку

Перепрошить и задать возможность установки идентификаторов (можно и на первичной стадии во флеш писать).

 

P.S. А еще лучше вообще на нормальную CAN-шину пересесть, коли проблемы с уартами...

Изменено пользователем Эдди

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


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

А что за датчики? Какой протокол? Датчики шлют данные по свое инициативе или в ответ на запрос?

Почему нельзя работать всем датчикам на одной шине? Есть ли адресация в датчиках/протоколе?

Т.е. датчики напрямую к LVTTL-ногам контроллера подключены без какой либо защиты (раз места мало)?

На каком расстоянии все это должно работать? Что насчет помех?

Не у всех STM32 "нормальный" remap. Какое семейство рассматриваете?

Датчики (в конструкцию входит МК) шлют ответ по запросу.

Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет.

Вы про какую защиту? Защитные диоды стоят, они места почти не занимают.

Длина кабеля - два метра. Присутствуют высокочастотные помехи. Не могу их точно оценить, но первый образец прибора, говорят, не сбивался.

Рассматриваю STM32F09x - у них есть 8 UART-ов.

 

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


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

Датчики (в конструкцию входит МК) шлют ответ по запросу.

Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет.

Вы про какую защиту? Защитные диоды стоят, они места почти не занимают.

Длина кабеля - два метра. Присутствуют высокочастотные помехи. Не могу их точно оценить, но первый образец прибора, говорят, не сбивался.

Рассматриваю STM32F09x - у них есть 8 UART-ов.

Ну, если по очереди и никто больше сильно не мешает- то вполне можно и софтовые порты недостающие сделать, если ремапинг религия или объективные причины не позволяют использовать. Одно прерывание на бит с погрешностью 5% от длины бита (реакция на первый, стартовый, бит должна быть быстрее чем 5% от длины бита), сами считайте успеете или нет. У меня 16С84 с 4 МГц ядром успевал 9600 ловить с одного порта и в 8 других портов отсылать разные данные, а сейчас техника уже пошустрее :).

 

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

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


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

Датчики (в конструкцию входит МК) шлют ответ по запросу.

Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет.

Здесь нужен один-единственный UART + мультиплексор на Tx мелкоконтроллера (если действительно сами по себе датчики ничего в UART не пихают).

Т.е. для работы с 16 датчиками понадобятся: 2 ноги UART (Rx/Tx) + 4 ноги для адресации мультиплексора.

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


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

Датчики (в конструкцию входит МК) шлют ответ по запросу.

Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет.

"Нельзя различить" != "не умеете различить".

При желании и должном умении всё возможно.

И без всяких мультиплексоров можно обойтись и всего одним UART-ом на вашем головном МК (раз ПО на датчики пишете Вы сами и вы сами можете его менять, что изначально вы не указали).

Если структуру кабельных связей между датчиками и центром сбора на STM можно организовать в виде кольца, а не только звезды, то можно сделать простую сеть на одном UART.

Потребуется только один UART в центре сбора и по одному UART на каждом датчике.

Как:

Подключаете TX центра к RX датчика1, TX датчика 1 - к RX датчика2, ..., TX датчика 8 - к RX центра.

Получаете кольцо (всего два провода в кольце - данные и GND).

Далее имеем сеть в виде кольца. Сеть работает в пакетном режиме. Старт обмена - по инициативе центра. Каждый датчик имеет уникальный номер (от 1 до 8 например).

Протокол обмена:

Центр отправляет (на свой TX) кадр заданного формата. В заголовке кадра указывает целевой адрес датчика (из диапазона 1...8).

ПО датчиков принимает кадр со своего RX, смотрит целевой адрес в кадре, если этот кадр предназначен не ему, просто пересылает этот кадр без изменений на свой TX.

Если кадр предназначен ему, заменяет содержимое поля запрос в кадре, на поле ответ. И отправляет на RX.

Центр принимает всё на RX и анализирует ответы.

Всё.

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

И назначить уникальные номера датчикам - не проблема. Например:

После включения питания все датчики находятся в безадресном режиме и принимают только команду установки энумерации.

Центр периодически (или по вкл. питания) отправляет команду энумерации в сеть, установив в ней некий счётчик в значение==0. Каждый датчик, приняв команду энумерации, инкрементирует в ней этот счётчик и затем устанавливает свой адрес равным ему, затем отправляет этот кадр дальше по кольцу. После прохождения кадра энумерации всего кольца, все датчики получат уникальные номера.

Данный алгоритм позволяет также горячее подключение новых датчиков в ходе работы.

 

Здесь нужен один-единственный UART + мультиплексор на Tx мелкоконтроллера (если действительно сами по себе датчики ничего в UART не пихают).

Т.е. для работы с 16 датчиками понадобятся: 2 ноги UART (Rx/Tx) + 4 ноги для адресации мультиплексора.

Если датчики можно объединить в кольцо, то здесь нужен один-единственный UART и 0 мультиплексоров и ног GPIO.

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


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

Подключаете TX центра к RX датчика1, TX датчика 1 - к RX датчика2, ..., TX датчика 8 - к RX центра.

Получаете кольцо (всего два провода в кольце - данные и GND).

Далее имеем сеть в виде кольца. Сеть работает в пакетном режиме. Старт обмена - по инициативе центра. Каждый датчик имеет уникальный номер (от 1 до 8 например).

угу. И имеем ситуацию: лифты во всем доме не работают, потому что перегорела лампочка подсветки кнопки вызова лифта на 7-м этаже 4-го подъезда.

Аналогия, думаю, понятна.

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


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

Подключаете TX центра к RX датчика1, TX датчика 1 - к RX датчика2, ..., TX датчика 8 - к RX центра...

ремонт елочных гирлянд - занятие кропотливое)

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


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

угу. И имеем ситуацию: лифты во всем доме не работают, потому что перегорела лампочка подсветки кнопки вызова лифта на 7-м этаже 4-го подъезда.

Аналогия, думаю, понятна.

Аналогия непонятна и совершенно не к месту.

Естественно если нужно горячее включение, то необходимо предусмотреть некую аппаратную поддержку (замыкать RX на TX для откл. датчиков).

Если какой-то из датчиков повис (повисло ПО), то естественно в нём есть сторожевик, который как минимум подаст RESET на него. Данный RESET можно использовать для замыкания TX-RX (если по каким-то причинам ПО никогда не стартует).

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


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

Все не правы, потому что автор сам не знает, что хочет, а тему создал как эмоцию на "по идее, 8 должны примерно одновременно работать".

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


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

Вы про какую защиту? Защитные диоды стоят, они места почти не занимают.

Длина кабеля - два метра. Присутствуют высокочастотные помехи. Не могу их точно оценить, но первый образец прибора, говорят, не сбивался.

"Делай сразу хорошо - плохо само получится".

Меня лично настораживают уровни 3.3В "на улицу" на 2 метра на 8 датчиков в условиях помех.

Что за защитные диоды стоят? Те, которые сливают помеху на землю и питание? Не боитесь, что питание подскочит и все спалит?

Защита может быть гораздо больше по площади, чем мультиплексор.

Как вы проверяете защиту? Подавали помеху в виде постоянного уровня, например, от -7 до +12В на входы?

Любой монтажник перепутает провода и вся поделка в виде центрального блока и 8 датчиков рискует превратится в уголек.

Ну, да, конечно же монтажник виноват, но икаться будет вашей маме (это оборот речи, а не конкретно чья-то мать).

А при первой же возможности монтажники/проектировщики выберут другого поставщика/исполнителя.

Нормальное решение: RS485 + адресация в датчиках.

Если есть сложности с манипулированием перемычками в датчиках, то можно применить CAN.

Кста, если есть потребность в быстрой реакции, т.е. работать по событию, а не по опросу, то за CAN поднимается вторая рука.

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


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

На STM свет клином не сошёлся. Например: TM4C129DNCPDT - 8 встроенных UART-ов. Недостающий 9-й можно эмулировать программно.

 

MB91F524FSBPMC (Fujitsu/Spansion)- до 12 UART

MB91F527MSCPMC - до 20 UART

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


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

Далее имеем сеть в виде кольца.

Жесть!

Самый простой вариант с одним-единственным уартом - это повесить все на одну шину. Нефиг тут кольцевать. Работоспособный и проверенный вариант.

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


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

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

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

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

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

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

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

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

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

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