Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 или LPC17xx?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
starmos
Оба семейства мне подходят (и на сейчас есть что выбрать и на перспективу). Я было выбрал STM32F103 по цене, но прочитал здесь про STM отзывы аж с 2008 сколько смог и приуныл. Глюки в документации, работа с периферией через библиотеки, а если нет (как я обычно), то недокументировано и т.д. Версия ядра с глюками... Кто сейчас активно их использует - изменилось что-нибудь в лучшую сторону или только цена привлекает по прежнему? Или LPC понадежней будет?
И заодно, с LPC23xx наверное уже не стоит связываться в свете наличия Cortex'ов?
Dron_Gus
Если не нужна внешняя шина - LPC. Если нужен USB host - LPC.
dac
если нужно низкое потребление - STM32L
Axel
По поводу STM32 - необходимость расковыривать библиотеки для того, чтобы написать нормальный код, действительно огорчает. Но к этому быстро привыкаешь (ИМХО). Кроме того - не вполне настоящий DMA - в смысле того, что он не имеет своей шины. Но в остальном - вполне рабочая лошадка.
SasaVitebsk
Цитата(starmos @ Sep 17 2010, 14:33) *
Оба семейства мне подходят (и на сейчас есть что выбрать и на перспективу). Я было выбрал STM32F103 по цене, но прочитал здесь про STM отзывы аж с 2008 сколько смог и приуныл. Глюки в документации, работа с периферией через библиотеки, а если нет (как я обычно), то недокументировано и т.д. Версия ядра с глюками... Кто сейчас активно их использует - изменилось что-нибудь в лучшую сторону или только цена привлекает по прежнему? Или LPC понадежней будет?

Приунывать - не стоит. Правда я не работал с LPC17xx, но документация на STM32F (user manual) вполне приличная. Просто сам контроллер, в плане переферии, уж больно навороченный. Поэтому сложно разобраться и нюансов возникает куча. Есть и некоторые вопросы к разработчикам. Например по целессообразности и т.п.

Работа с библиотеками - ваше дело. Я попробовал работать ч/з них. С одной стороны - общий подход и стиль. Развитие дальнейшее. Очень большой объём описаний. Особенно учитывая что средний переферийный блок - 20-30 регистров. То есть с одной стороны - большой объём проделанной работы за вас. С другой - они не могут писать на все случаи жизни. То есть иногда - хочется переписать либо изменить. Универсальность также привела к большому колличеству избыточного кода. Ещё один очень отрицательный момент - это очень слабое описание ф-ций. Точнее - функции описаны не до уровня работы железа. Таким образом для работы с библиотекой один фиг надо сначала прочитать мануал, разобраться в нём, понять что нужно сделать, потом перечитать описание библиотеки и подобрать средства - как именно сделать то, что ты хочешь, с помощью данной библиотеки. Не помешает также посмотреть и примеры приведённые.
Отдельный момент, что очень слабо в мануале просматриваются взаимосвязи. Ну скажем, читаешь какой-нибудь АЦП. Разобрался - настроил - а он не работает. Оказывается в RCC надо ему частоту подать. И там это описано, а в самом ADC - нет. (Это я для примера).

Ошибку я одну нашёл но только не в библиотеке, а в примере. Причём пример какой-то левый.

Я не претендую на полноту картины, и, пока, мало работал с контроллером, но, просто объективности ради хотел пару слов здесь привести.

Ну и ещё из того что мне нравится - один кристалл - много корпусов. Кристалл достаточно дубовый. Так мне на порт завели 8 ног 24V ч/з резистор 1к (входы). Я практически полностью отладил прогу, покак он задымился. Понравилась мне и возможность работы с 5V сигналами. В частности на плате MBI5168, полевики с 5V, и умудрились ресивер CAN поставить 5V. Всё удалось запустить лишь навесив резисторы подпоры.
starmos
Малое потребление мне не критично, а вот хорошее описание, пусть и на английском - да. Так что похоже все же LPC, тем более что я последние проекты делал на LPC21xx/22xx. Кроме этого я тут обнаружил что не все выводы портов STM32 совместимы с 5V. Спасибо за советы.
brag
Цитата
работа с периферией через библиотеки, а если нет (как я обычно), то недокументировано

Цитата
По поводу STM32 - необходимость расковыривать библиотеки для того, чтобы написать нормальный код, действительно огорчает.

тоесть хотите сказать,что в документации регистры периферии не описаны?
посмотрел док. "RM0008 Reference manual STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs" - описание регистров есть. сильно не вникал правда
с либами работать не планирую, все чиство вручную...

пс. я тоже сейчас выбираю кортексы ибо AT32UC3 атмел зажал, со складов пропали... STM32 - более доступные, есть на складах, LPC17xx - доступны только LPC1752FBD80 пока
SasaVitebsk
Цитата(starmos @ Sep 17 2010, 20:03) *
... а вот хорошее описание, пусть и на английском - да. .... Кроме этого я тут обнаружил что не все выводы портов STM32 совместимы с 5V.



Цитата(brag @ Sep 18 2010, 09:14) *
тоесть хотите сказать,что в документации регистры периферии не описаны?


Ещё раз повторю - описание очень даже не плохое. По-моему - всё внятно, чётко, достаточно детально. Сначала идёт полное описание узла, потом режимы работы и, в конце, регистры.

Не совместимы с 5V линии ADC. По-моему, там этого и не должно быть.
PS: Посмотрел LPC13xx - действительно у них все ноги толерантны.
brag
Цитата
Ещё раз повторю - описание очень даже не плохое. По-моему - всё внятно, чётко, достаточно детально. Сначала идёт полное описание узла, потом режимы работы и, в конце, регистры.

спасибо. прикуплю парочку данных девайсов на пробу wink.gif

Цитата
Не совместимы с 5V линии ADC. По-моему, там этого и не должно быть.

согласен
Axel
Цитата(brag @ Sep 18 2010, 10:14) *
тоесть хотите сказать,что в документации регистры периферии не описаны?...


Описаны, конечно... Только мне этого не хватило. Без текстов библиотек до нужной степени не разобрался. Но допускаю, что это только мои проблемы...
brag
я обычно, когда запускаю usb на новом для меня контроллере без примеров тоже не обходится.
scifi
Цитата(starmos @ Sep 17 2010, 15:33) *
Глюки в документации, работа с периферией через библиотеки, а если нет (как я обычно), то недокументировано и т.д. Версия ядра с глюками...

Использую STM32, раньше доводилось использовать STR710. Глюков в документации не встречал, библиотеки для периферии никогда не применял, ничего недокументированного не встречал, глюков ядра не видел. Откуда все эти страшилки?
brag
Цитата
Откуда все эти страшилки?

сам впервые "слышу", но тк с ними не работал, решил переспросить smile.gif
segment
Может офф, но я работал с LPC17xx - документация отличная. Пытался работать с STM32 - не так притягивает. Если кто будет пользоваться библиотекой CMSIS - будьте внимательны, очень много багов.
sonycman
Цитата(scifi @ Sep 18 2010, 13:59) *
Глюков в документации не встречал...

С USB, наверно, не работали? В режиме двойной буферизации для bulk endpoints?
Описание регистров Transmission\Reception byte count для этого режима не соответствует действительности sad.gif
brag
по подробнее можно? что именно не соответствует? а то usb уменя юзается очень активно...
а вообще кривоты в документации есть у каждого.
sonycman
Цитата(brag @ Sep 19 2010, 13:33) *
по подробнее можно? что именно не соответствует? а то usb уменя юзается очень активно...
а вообще кривоты в документации есть у каждого.

Вот это:
Нажмите для просмотра прикрепленного файла
как видно, изображён один 32 битный регистр, когда на самом деле используются два 16-ти разрядных.

Хвалёные доки от LPC тоже имеют неточности, это правда.
brag
Цитата
изображён один 32 битный регистр, когда на самом деле используются два 16-ти разрядных.

та, єто не существенно. привык уже smile.gif
sonycman
Цитата(brag @ Sep 19 2010, 22:33) *
та, єто не существенно. привык уже smile.gif

Как это - не существенно?
Указывается для записи 32 битный регистр по одному адресу, тогда как на самом деле это два 16 битных регистра по разным адресам.
wacko.gif
Если пользоваться готовыми библиотеками - то да, по барабану, но если работать с регистрами напрямую - проблемы обеспечены.

halfdoom
Согласен, что зря они продолжили нумерацию с 16 бита, но я эти грабли обошел просто приняв во внимание, что все счетчики USB_COUNT 16-ти разрядные.
brag
Цитата
Если пользоваться готовыми библиотеками - то да, по барабану, но если работать с регистрами напрямую - проблемы обеспечены.

а если пользоваться готовыми хедерами то проблем тоже не будет, компилятор заматерится smile.gif
у TMS320F28xx подобные грабли тоже были
SpiritDance
Хм. А я выбрал для себя stm32: огромный родмап и выбор корпусов/памяти, хорошая pin-to-pin совместимость, L-семейство с тем же ядром, F200 вообще будут зверскими кристаллами с 128К RAM. Ближе к концу года начну переползать на них, одна платка уже разведена ждет заказа.

А самая лучшая из всех документация - у атмеля, хотя и там не без косяков и "мелких" уточнений курсивом. Но у атмеля кристаллы говно, да и сам атмел тоже говно.
brag
AVR32 у атмела хоть и говно, но хорошое и шустрое smile.gif мне понравилось smile.gif
Serj78
Я выбрал STM32F103 только из- за наличия нужной мне периферии. Yи в каком другом таком кристалле такого набора не нашел. Как начал работать- да, в готовых конфигураторах нашел одну ошибку.

По документации- надо ОЧЕНЬ внимательно читать, Yо, действительно, все описано.
Кристалл хороший, но, как уже писали- надо перед проектированием устройства внимательно все изучить, как что работает.
Понравился запас по быстродействию-по началу после перехода на кварц 16Мгц ( на стартерките стоял 8 Мгц) забыл изменить коэфф в делителе и некоторое время удивлялся быстродействию на 144 Мгц smile.gif
brag
Цитата
после перехода на кварц 16Мгц ( на стартерките стоял 8 Мгц) забыл изменить коэфф в делителе и некоторое время удивлялся быстродействию на 144 Мгц

и я когда-то 2 дня с USB промучился, вместо 48мгц подал 70 с лишним smile.gif то работало, то не работало smile.gif
adnega
Цитата(Serj78 @ Sep 21 2010, 11:03) *
По документации- надо ОЧЕНЬ внимательно читать, Yо, действительно, все описано.
Кристалл хороший, но, как уже писали- надо перед проектированием устройства внимательно все изучить, как что работает.


+1
Особенно понравилось "многа букаф" про встроенный температурный датчик...
Из которых самыми нужными были те, что в начале: мол, если хотите абсольтную температуру, то пользуйтесь внешними датчиками температуры; если достаточно увидеть динамику (теплее-холоднее) - то можно пользоваться встроенным )
MrYuran
Цитата(adnega @ Sep 21 2010, 14:39) *
Особенно понравилось "многа букаф" про встроенный температурный датчик...
Из которых самыми нужными были те, что в начале: мол, если хотите абсольтную температуру, то пользуйтесь внешними датчиками температуры; если достаточно увидеть динамику (теплее-холоднее) - то можно пользоваться встроенным )

Это в любом кристалле так.
Обычно в качестве встроенного датчика стоит туподиод.
Да и что может намерить встроенный датчик, если его кристалл греет?
На мой взгляд, основное его предназначение - определить три области: слишком холодно-нормально-слишком горячо.
adnega
Цитата(MrYuran @ Sep 21 2010, 14:49) *
Это в любом кристалле так.
Обычно в качестве встроенного датчика стоит туподиод.
Да и что может намерить встроенный датчик, если его кристалл греет?
На мой взгляд, основное его предназначение - определить три области: слишком холодно-нормально-слишком горячо.


Датчик и должен показывать температуру кристалла.

У STM32F10x показания зависят... от частоты ядра, периодичности выборки, последовательности каналов.
Показания, от -10 до +70 (от 72МГц до 12МГц)! - значение получем в единицах, переводим в милливольты, затем в градусы.

Слишком-холодно и слишком-горячо не получается. Можно лишь сказать "за последние 10 секунд температура повысилась на 12 градусов".
rezident
Цитата(adnega @ Sep 21 2010, 16:56) *
Датчик и должен показывать температуру кристалла.

У STM32F10x показания зависят... от частоты ядра
Вообще-то у подавляющего большинства МК на время измерения температуры кристалла встроенным термодатчиком, рекомендуется переводить ядро в режим энергосбережения ("спячки"). В противном случае получается цена на дрова в соседней области, слабо коррелирующая с реальной температурой кристалла.
adnega
Цитата(rezident @ Sep 21 2010, 15:09) *
Вообще-то у подавляющего большинства МК на время измерения температуры кристалла встроенным термодатчиком, рекомендуется переводить ядро в режим энергосбережения ("спячки"). В противном случае получается цена на дрова в соседней области, слабо коррелирующая с реальной температурой кристалла.


Хм... тем не менее если держать пальцем корпус десятые доли градуса начинают бежать вверх (корпус холоднее 36C). Показание температуры держатся крайне стабильно (в пределах 4-х единиц).

При скачкообразном изменении частоты ядра - температура тоже меняется скачкообразно.
При изменении частоты от 12МГц до 72МГЦ температура меняется с +70С на минус 10С.
Не верю, что при повышении частоты ядра "встроенный кондиционер"(?) сможет охладить кристалл на 80С за десятые доли секунды.
rezident
Цитата(adnega @ Sep 21 2010, 17:32) *
При изменении частоты от 12МГц до 72МГЦ температура меняется с +70С на минус 10С.
Не верю, что при повышении частоты ядра "встроенный кондиционер"(?) сможет охладить кристалл на 80С за десятые доли секунды.
Дык вас интересует температура (статистический параметр, определяющий среднюю кинетическую энергию частиц в некотором объеме) или некий параметр, связанный с частотой ядра? Если температура, то усыпляйте ядро во избежание наводок на датчик температуры. Стабильность измеренных показаний и корреляция с частотой ядра является следствием синхронности работы самого ядра и АЦП (тактируются-то они от одного сигнала).
scifi
Цитата(adnega @ Sep 21 2010, 15:32) *
При скачкообразном изменении частоты ядра - температура тоже меняется скачкообразно.
При изменении частоты от 12МГц до 72МГЦ температура меняется с +70С на минус 10С.

Время выборки АЦП на канале термодатчика правильно установлено?
adnega
Цитата(scifi @ Sep 21 2010, 17:27) *
Время выборки АЦП на канале термодатчика правильно установлено?


Да.

Причем делал два варианта:
1. Запускал преобразование битом ADON (вручную) с фиксированной задержкой (много больше 17 мкс).
При этом наблюдались периодически три значения с АЦП! Т.е. три пика в ПРВ (плотность распределения вероятности) значений. Аналогичный результат (три пика) и с опорой (!). Сигнал с реального входа - один пик. Если задержку сделать рандомную, то пики размываютя, но все равно три максимума.

2. По событию T2C2 через DMA (450 мкс). Наблюдается один пик. Но зависит от температуры и очень сильно от частоты ядра. От периода дискретизации практически не зависит. Опора тоже "плавает". Значания "по даташиту" получаются при FPLL = 24МГц.

Калибровку включал - принципиально не помогает.

Впрочем, к АЦП есть еще один маленький вопросик. Что за "пила" с частотой дискретизации (44100Гц) наблюдается на входе АЦП болтающемся в воздухе?

Нет. Я конечно понимаю, что большое входное сопротивление, перезарядка УВХ и емкости пина; допускаю, что на входе АЦП нужно ставить полосовой фильтр (или ФНЧ) для "работы теоремы Котельникова" без наложения спектров, но:
1. А как же аналоговые входы с большим входным сопротивлением без "огорода"?
2. Как один знакомый возмущается: "зачем ставить операционник там, где можно использовать один транзистор с ОЭ"?

Теперь по теме:

В целом, STM32F мне очень нравятся.
LPC17xx тоже пробовал, но мало. Ближайшее время есть необходимость поделать кое-что на LPC1114 (светодиодом на нем уже моргал - понравилось, особенно цена), но в новые разработки закладываю STM32F10x.

У STM, на мой взгляд, очень удачно Ethernet в 64 ногом корпусе, правда при этом многим приходится жертвовать...
У LPC с ремапом пинов вроде лучше, у STM - бардак полный) - даже большая часть эраты этому посвящена.
У LPC1114 сначало смутило, что под ремап пина уделяется отдельный регистр (причем хаос полный) - потом ощутил в чем прелесть)...
adnega
Посыпаю голову пеплом...
Разобрался: действительно неправильно задавал время преобразования канала(
Теперь все хорошо
brag
да, с кондиционером забавно было читать wink.gif
adnega
Цитата(brag @ Sep 22 2010, 13:34) *
да, с кондиционером забавно было читать wink.gif


ага. и опора по этой же причине показывала все что угодно, но не 1.2В - кондишн по сравнению со встроенной АЭС отдыхает)
brag
та да. с клоками надо осторожно...видел много всяких чудес от неверно сконфигурированных генераторов wink.gif
brag
IgorKossak, Замечание усек. прошу прощения...

а читать PSP(process stack) из Handler mode только так: переход в Thread Mode(privileged), чтение PSP, переход обратно в Handler ? или есть другие методы,более эффективные?
IgorKossak
Господа пользователи, давайте не отклоняться от темы!
Для частных вопросов прошу искать более подходящие темы или создавать отдельные.
Модератор
El-man
Цитата(Сега @ Sep 18 2010, 19:12) *
Может офф, но я работал с LPC17xx - документация отличная. Пытался работать с STM32 - не так притягивает. Если кто будет пользоваться библиотекой CMSIS - будьте внимательны, очень много багов.


Вопрос к спецам. Выбираю проц дла нового проекта. может кто даст совет. Нужен Ethernet желательно с PHY встроенный FLASH и максимальная производительность. Это основное. пока увидел только LPC1769. Спасибо за совет
SpiritDance
Цитата(brag @ Sep 21 2010, 03:04) *
хоть и говно, но хорошое и шустрое smile.gif мне понравилось smile.gif


Ой.

AVR32 не попробовал, но тут вроде не про них, а про армы, потому я их в расчет даже не брал. Ну а армы у атмеля... как бы это сказать помяхше... во! в текущее положение дел на рынке контроллеров не вписываются.

Ну и достать по приличной цене,насколько понимаю, проблематично сейчас и те и другие.

Цитата(El-man @ Sep 23 2010, 11:34) *
Нужен Ethernet желательно с PHY встроенный FLASH и максимальная производительность. Это основное. пока увидел только LPC1769. Спасибо за совет


Непонятно что означает максимальная производительность. at91sam9xe512 например smile.gif

И именно phy встроенный? у 1769? Тут stellaris вроде какой-то мелькал именно с phy встроенным.
brag
Цитата
AVR32 не попробовал, но тут вроде не про них, а про армы, потому я их в расчет даже не брал.

ну тема про кортексы, ан е про АРМы7, а АВР32 более на кортексы похожа wink.gif
Цитата
Ну а армы у атмеля... как бы это сказать помяхше... во! в текущее положение дел на рынке контроллеров не вписываются.

согласен. Армы7 у Атмела - говно, а вот кортексы не знаю, не юзал, они все еще пока Sampling
SpiritDance
Цитата(brag @ Sep 23 2010, 16:35) *
ну тема про кортексы, ан е про АРМы7, а АВР32 более на кортексы похожа wink.gif


Весь раздел про армы. Кортекс - арм. Ну да не суть. smile.gif

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

Цитата(brag @ Sep 23 2010, 16:35) *
а вот кортексы не знаю, не юзал, они все еще пока Sampling


Я, например, навряд ли буду пользовать. Описания вполне хватило. Текущая ситуация - Атмел не принимает заказы от российских дистрибьютеров до конца этого года - и общая политика атмела по поддержке mature устройств только укрепляет нежелание связываться.
brag
Цитата
Атмел не принимает заказы от российских дистрибьютеров до конца этого года

их ответ на мой запрос был таким же...

пс. Пока я остановился на STM32F10x по причине доступности, с NXP как-то туговато. поюзаю, посмотрим...
Danis
STM32 уже полгода юзаю, сам «си-шник», поэтому с библиотеками работать даже удобнее для меня, маленько непривычно поначалу, но ничего, быстро освоился. Глюков еще не наблюдал, после PIC24H(F), STM32 вообще для меня золото, недавно LCD TFT в режиме QVGA на нем запустил. Вообще хороший контроллер.
ClockworkOrange
Цитата(SasaVitebsk @ Sep 18 2010, 13:09) *
Не совместимы с 5V линии ADC. По-моему, там этого и не должно быть.
PS: Посмотрел LPC13xx - действительно у них все ноги толерантны.


правильно ли я понял - у LPC1300 IO совместимы с КМОП/ТТЛ 5В ??
MK2
Эти STM просто звездец какой-то. Ф-ции жутко бесят!!! если на ф-цию можно найти более менее вразумительное описание в firmware, то то что в них подставляется в примерах это жесть: дифайны по десяткам файлов раскинуты.
Неприятно еще то что firmware они использует спец ф-ции для своих отладочных плат, описание которых найдешь только в сорцах. И все примеры абсалютно заточенны под ф-ции.
Еще неприятно то что прерывание и тактирование для переферии настраиваются в других блоках. ну соттвественно описание там же mad.gif
Есть подобные неприятности у LPC или Stellaris ?
zltigo
QUOTE (MK2 @ Jun 18 2011, 16:25) *
Есть подобные неприятности у LPC или Stellaris ?

"Библиотеки" аналогичное дерьмо у всех помянутых. Студенты индийско-китайские какие-то пишут sad.gif - традиция. Но никто не запрещает потихоньку писать самому.

scifi
Цитата(zltigo @ Jun 18 2011, 19:39) *
Студенты индийско-китайские какие-то пишут sad.gif - традиция.

Если я правильно помню, у ST есть присутствие в Тунисе и Чехии. И да, софт, который они выдают - изрядное гуано. А если не обращать внимание на этот софт, STM32 - хорошие МК.
Кстати, если так сильно хочется софт от производителя МК, посмотрите на Freescale. Они раздают MQX - очень приличная штука.
Danis
Цитата(scifi @ Jun 18 2011, 20:21) *
...а, софт, который они выдают - изрядное гуано. А если не обращать внимание на этот софт, STM32 - хорошие МК.

Вопрос не только к Вам, без всякого подвоха. Как вы думаете, на какой софт надо смотреть ТС при изучении STM32?


Цитата(scifi @ Jun 18 2011, 20:21) *
STM32 - хорошие МК.

Уже успел в этом убедиться, поддерживаю полностью!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.