Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выбор мк с usb, uart и can
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
_3m
подбираю мк для преобразователя интерфейсов. требования к процессору:

Ядро C-m0 ... C-m4. Частота 48-100МГц (больше не нужно).
Флэш 64-128Кб
Озу 16-64 Кб (16 это совсем край, лучше 32-64).

интерфейсы:
usb fs (device) - 1
uart - 1 или 2. Работа с rs485. Обязательна поддержка 7, 8 и 9 битных форматов в том числе 7N1. uart должен быть удобен для честной реализации modbus rtu с его дурацкими таймингами (есть мк где не предусмотрено прерывание по окончанию передачи)
can - 1
Перечисленные интерфейсы используются одновременно.

Таймеры:
по 1 аппаратному таймеру на каждый uart + 2 системных.

Дополнительные требования:
Встроенный rom загрузчик через usb. Необходима возможность через usb прошивать флэш, заливать код в озу и запускать его.


Пока нашел только lpc15xx как условно подходящее.


Ruslan1
STM32CubeMX говорит, что есть 175 типов STM32F, удовлетворяющих Вашим требованиям.
Upd: Хм, а что такое 7N1 ? не, такое оно не может. может только 7N1.5 да и то ручками.
Lmx2315
К1986ВЕ1QI от Миландра
http://milandr.ru/index.php?mact=Products,...nt01returnid=68
Kabdim
nxp lpc 17XX|182(3,5)X
Но NXP в новых чипах держит только 1 уарт с полным фукнционалом, а остальные обрезки.
_3m
Цитата(Kabdim @ Jul 29 2015, 11:18) *
nxp lpc 17XX|182(3,5)X
Но NXP в новых чипах держит только 1 уарт с полным фукнционалом, а остальные обрезки.

В LPC17XX для rs485 пригоден только uart1, в других нет управления направлением rs485 и не предусмотрено прерывание по флагу статуса Transmitter Empty, без этого прерывания в многозадачной системе не сделать программное управление трансивером rs485.
Также я не представляю как в этих уарт ловить таймауты модбас-рту не отключая фифо.
Кроме того в lpc17 boot loader работает с уарт а мне обязательно нужна загрузка прошивки по усб.
lpc1820 хорош, но корпуса монстрообразные.
Kabdim
С модбасом не работал, возможно прерывание Character Time-out indication подойдет? Оно на 3.5 символа насколько я помню.
Бутлоадер можно и свой вставить, апноут насколько я помню есть.
jcxz
Цитата(_3m @ Jul 29 2015, 15:49) *
В LPC17XX для rs485 пригоден только uart1, в других нет управления направлением rs485 и не предусмотрено прерывание по флагу статуса Transmitter Empty, без этого прерывания в многозадачной системе не сделать программное управление трансивером rs485.

Странно.. У нас кучка устройств на LPC1768/LPC1778, во всех 1-2 RS-485, везде FIFO включен, ни один не находится на UART1, везде используется операционка, среди прочих протоколов используется и Modbus. Проблем не замечал.
Управление направлением передачи внешнего драйвера - GPIO. Обнаружение конца передачи - прерывание buffer empty, затем - поллинг в прерываниях сис.таймера с ожиданием shifter empty (при желании можно и точно рассчитать стоповый бит, взведя таймер по buffer empty, но оно имхо - не нужна такая точность).

Цитата(_3m @ Jul 29 2015, 15:49) *
Также я не представляю как в этих уарт ловить таймауты модбас-рту не отключая фифо.

Точно так же как и без FIFO - оно не влияет никак на таймауты.

Цитата(_3m @ Jul 29 2015, 15:49) *
Кроме того в lpc17 boot loader работает с уарт а мне обязательно нужна загрузка прошивки по усб.

PL2303/CP2102/FT232 ?

Цитата(Kabdim @ Jul 29 2015, 14:18) *
Но NXP в новых чипах держит только 1 уарт с полным фукнционалом, а остальные обрезки.

Интересно - в чём урезанность остальных UART???? CTS/RTS нету? Так оно для RS-485 и не нужно.
Если так подходить, то STM32 вообще UART полных не содержит - ни в одном нету FIFO rolleyes.gif

PS: Любой из LPC17xx удовлетворяет всем Вашим требованиям. Ну с прерыванием опустошения сдвигового регистра там конечно туго, но можно обойтись и без него.
zltigo
QUOTE (_3m @ Jul 29 2015, 12:49) *
В LPC17XX для rs485 пригоден только uart1, в других нет управления направлением rs485 и не предусмотрено прерывание по флагу статуса Transmitter Empty, без этого прерывания в многозадачной системе не сделать программное управление трансивером rs485.
Также я не представляю как в этих уарт ловить таймауты модбас-рту не отключая фифо.

Это все по тому, что Вы писать не умеете ни для чего, кроме AVR:(. Минимальный NXP UART это чистой воды 80550 - именно на этом и 8050 чипе не одно поколение RS485 писателей, включая больных на всю голову авторов MODBUS-RTU реализовывали свои все.
QUOTE
Кроме того в lpc17 boot loader работает с уарт а мне обязательно нужна загрузка прошивки по усб.

А мне, как полагаю и прдавляющему большинству, ни нафиг не нужен ни один из заводских загрузчиков, если, как минимум не выполняется условие загрузки шифрованного образа.
Kabdim
Цитата(jcxz @ Jul 29 2015, 14:28) *
Интересно - в чём урезанность остальных UART?

Ну как еще сказать что один уарт немного ровнее других? sm.gif
_3m
Цитата(jcxz @ Jul 29 2015, 14:28) *
Странно.. У нас кучка устройств на LPC1768/LPC1778, во всех 1-2 RS-485, везде FIFO включен, ни один не находится на UART1, везде используется операционка, среди прочих протоколов используется и Modbus. Проблем не замечал.
Управление направлением передачи внешнего драйвера - GPIO. Обнаружение конца передачи - прерывание buffer empty, затем - поллинг в прерываниях сис.таймера с ожиданием shifter empty (при желании можно и точно рассчитать стоповый бит, взведя таймер по buffer empty, но оно имхо - не нужна такая точность).

С поллингом уарт идите в лес а мк которые по другому не позволяют работать фтопку!
Кроме rs485 есть и другие задачи критичные в времянкам.

Цитата
Точно так же как и без FIFO - оно не влияет никак на таймауты.

Простой вопрос: какой алгоритм определения таймаутов 1,5T и 3,5T при фифо размером 16 байт ?


Цитата
Интересно - в чём урезанность остальных UART???? CTS/RTS нету? Так оно для RS-485 и не нужно.
Если так подходить, то STM32 вообще UART полных не содержит - ни в одном нету FIFO rolleyes.gif

stm32 не обсуждается потому что он не поддерживает формат 7 бит данных 1 стоп без четности.

Цитата
PS: Любой из LPC17xx удовлетворяет всем Вашим требованиям. Ну с прерыванием опустошения сдвигового регистра там конечно туго, но можно обойтись и без него.

Не удовлетворяет нифга. Загрузки по усб нету. Я в Пакистан раскирпичивать девайс не поеду.
LPC15** удовлетворяет но маловто озу. В 15-й серии уарт немного другой.
zltigo
QUOTE (_3m @ Jul 29 2015, 16:53) *
Я в Пакистан раскирпичивать девайс не поеду.

А не писать кирпичные девайсы не судьба? Ну откуда в этом "пакистане" USB sm.gif может их там нет sm.gif. Нафига вообще USB, если он НЕ нужен для работы, зато по Вашим словам сей девайс есть конвертор интрефейсов у которого по определению разных интерфейсрв с которыми работает заказчик таки есть и без USB. Посему НОРМАЛЬНЫЙ подход к делу, это ВТОРИЧНЫЙ загрузчик работающий по одному или вообще по всем рабочим интерфейсам и загружающий шифрованные образы, которые уже можно хоть в Пакистан, хоть в Китай с Индией посылать - не жалко.

mantech
Цитата(jcxz @ Jul 29 2015, 14:28) *
Кроме того в lpc17 boot loader работает с уарт а мне обязательно нужна загрузка прошивки по усб.


Возьмите любой мк с усб-хостом, поднимите в бутлодыре масссторадж и обновляйте прошивку с усб-флешки, очень удобно и не надо вообще комп подключать! Клиенты скажут спасибо rolleyes.gif
_3m
Цитата(zltigo @ Jul 29 2015, 17:41) *
А не писать кирпичные девайсы не судьба? Ну откуда в этом "пакистане" USB sm.gif может их там нет sm.gif. Нафига вообще USB, если он НЕ нужен для работы, зато по Вашим словам сей девайс есть конвертор интрефейсов у которого по определению разных интерфейсрв с которыми работает заказчик таки есть и без USB. Посему НОРМАЛЬНЫЙ подход к делу, это ВТОРИЧНЫЙ загрузчик работающий по одному или вообще по всем рабочим интерфейсам и загружающий шифрованные образы, которые уже можно хоть в Пакистан, хоть в Китай с Индией посылать - не жалко.

Программ без ошибок не бывает. Во время обновления могут вырубить электричество. Юзер может быть идиоттом и не дождавшить завершения процесса нажмет ресет / выдернет шнурок / отключит питание.
Нормальный подход к делу - это гарантировать восстановление физически исправного изделия из любых состояний включая полностью чистую флэш силами пользователя без применения специального оборудования.
usb есть в составе нашего аппаратного коплекса.
В разрабатываемом конверторе интерфейсов первичным вяляется интерфейс usb.
С шифрованными образами идите к Сноудену.
Как показала многолетняя практика голый бинарник прошивки он как неуловимый Джо : нафиг никому не нужен.
Секретить имеет смысл репозитарий исходников + багтрекер.
Основную ценность имеет история коммитов с обоснованием принятых решений.

вообще мы отвелекаемся. Не надо обсуждать загрузку по усб. Это обязательное требование.
мне понравились rom-less lpc18xx. Если бы не ужасные копуса применил бы. Даже цена устраивает.
Golikov A.
Цитата
Нормальный подход к делу - это гарантировать восстановление физически исправного изделия из любых состояний включая полностью чистую флэш силами пользователя без применения специального оборудования.

Нормальный подход к делу это решать, а не придумывать проблемы. С какого, такого бадуна
Цитата
включая полностью чистую флэш
как пользователь этого добился
Цитата
без применения специального оборудования


Теперь как это решается.

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

2. делаете рабочую программу работающую во из флеш, можете сделать в ней ключи которые проверяет загрузчик, вплоть до шифрации прошивки.


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

И всех делов. Уже давно выпускаем серийно устройство с обновлениями прошивки по езернет, в нашем формате, и пользователь что бы не сделал всегда может восстановить продукт без применения спец оборудования. Работает все на lpc1768, у которого нет заводского загрузчика езернет....
zltigo
QUOTE (_3m @ Jul 29 2015, 21:05) *
Программ без ошибок не бывает. Во время обновления могут вырубить электричество. Юзер может быть идиоттом и не дождавшить завершения процесса нажмет ресет / выдернет шнурок / отключит питание.

Никаких проблем - вторичный бутлоадер обязан остаться живым.
QUOTE
Нормальный подход к делу - это гарантировать восстановление физически исправного изделия из любых состояний включая полностью чистую флэш силами пользователя без применения специального оборудования.

Про восстановление - написал выше. Про "полностью чистую флешь" - дикакя глупость. Почему - тоже уже писал.
QUOTE
Как показала многолетняя практика голый бинарник прошивки он как неуловимый Джо : нафиг никому не нужен.

Вообще-то ни о чем кроме нулевой ценности Ваших программных работ это не говорит.
QUOTE
Не надо обсуждать загрузку по усб. Это обязательное требование.

А чего ее обсуждать? Надо - взял и написал, хоть по USB, хоть по всем интерфейсам сразу. Проблема ровно нулевая и это Вы ее чего-то вдруг поминать как какую-то проблему стали.
_3m
Цитата(Golikov A. @ Jul 29 2015, 21:27) *
Нормальный подход к делу это решать, а не придумывать проблемы. С какого, такого бадуна как пользователь этого добился

Легко добился: рубим питание во время обновления прошивки. На N-й раз (или у N-го юзера) получаем слетевший загрузчик.
Цитата
Теперь как это решается.

Без проблем решается. Производтся большое количество процессоров с usb загрузчиком в заводской Rom.
Шифрование прошивки не требуется, более того для данного изделия был бы удобен rom-less контроллер.
zltigo
QUOTE (_3m @ Jul 29 2015, 21:45) *
Легко добился: рубим питание во время обновления прошивки. На N-й раз (или у N-го юзера) получаем слетевший загрузчик.

Фантазии ничерта не знающего, неумеющего и посему боящегося нечистых сил и тому подобного, чайника sad.gif во всей красе. Нет никаих причин хоть у сколь-нибудь грамотного загрузчика "слетать" куда-либо хотя-бы по простой причине, что он в свой собственный сектор не лезет никогда.
QUOTE
с usb загрузчиком в заводской Rom.

Нету "заводского ROM" совсем нет. Заводские загрузчики тоже во Flash. Сюрприз!

Golikov A.
Цитата
Легко добился: рубим питание во время обновления прошивки. На N-й раз (или у N-го юзера) получаем слетевший загрузчик.

Такого рода повреждения равносильно сгоревшему процу. То есть если у вас у клиента от его игр с питанием стирается программа во флэш при чтении, то у него и процессор сгорит на N+1 раз.

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

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


Цитата
Вообще-то ни о чем кроме нулевой ценности Ваших программных работ это не говорит.

тут не совсем согласен, реверсить бинарь для системы с прерываниями, и стеками типа ТСР/IP та еще задача, пока будут реверсить, уже куча новых продуктов выйдет. А забрать бинарь и себе залить тоже иногда не имеет смысл, когда система сложная и имеет в составе сложную механику и другие связи. Часто ценность системы время и сама она, а не бинарь, так что тут есть варианты...

zltigo
QUOTE (Golikov A. @ Jul 29 2015, 22:54) *
тут не совсем согласен, реверсить бинарь для системы с прерываниями, и стеками типа ТСР/IP та еще задача, пока будут реверсить, уже куча новых продуктов выйдет.

Реверсить полностью в 99.9% просто незачем, ибо это или просто копирование не требущее вообще ничего, либо активизация некоторых функций, либо куочек с мелкими ноухау, типа контрольных сумм протокола.
QUOTE
А забрать бинарь и себе залить тоже иногда не имеет смысл, когда система сложная и имеет в составе сложную механику и другие связи.

Ага, космический корабль sm.gif. На AVR.
QUOTE
Часто ценность системы время и сама она, а не бинарь, так что тут есть варианты...

Варианты всегда есть. Но вообще-то в реальной жизни разрабатывается далеко не одно изделие на каой-либо линейке контролеров а несклько. И даже если какие-то из них никому не нужны для копирования, то если все-же НАПИСАН загрузчик, то он может быть использован ВО ВСЕХ изделиях. Просто для унификации.
Кроме того используя свой "шифрованный" загрузчик сразу имеем контроль целостностьи образа, чего нет у 99% заводских (заливка битого бинарника, другого бинарника и вообще хрен знает чего вместо прошивки это есть ошибка номер один sad.gif ). И что так-же жизеннно важно НЕЗАВИСИМОСТЬ от заводских утилит, кторые не покрвывют всего спектра операционых систем и вообще завтра откажутся работать на каком-нибудь WIN10 после того, как пользователь обновиться. Вот у меня заводской програматор для Jennic писаный кем-то с бодуна на питоне вообще падает с дебильной диагностикой на ВСЕХ машинах на котрых его запускал. Правда есть альтернативный и работает, но исключительно WIN7 (какого черта консольной утилите потребовался WIN7, я уверен, не знает даже автор sad.gif )- на других ругается на DLL.
Правда протокол как-бы описан, но давно - к предыдущему семейству и уже набежали отличия. Ну и нафига мне такие "подарки"?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.