-
- Это не инструмент, а гуано, сделаное неадекватными людьми. И насчет
"проверенного" инструмента - это и есть херня. Ошибок в этих
библиотеках - дофига. Причем их там столько много, что процесс их
исправления (который, надо отдать должное - идет) ничего не
улучшает. Я вот последнее время тружусь над портированием - за
неимением в ближайшем будущем процессоров STM32F103 мы закупили: il-2(610 знак., 28.04.2021 11:48)
- Этапесдец, я сразу и не понял. dastun(1326 знак., 28.04.2021 13:51)
- хозяин барин, можешь всё переписать. А про дофига ошибок в STD
Peripheral Lib конкретнее можно? - User_(28.04.2021 12:26)
- Все-же не удержался и нашел кое что про USB il-2(112 знак., 28.04.2021 14:45, ссылка, ссылка)
- Писал я здесь про ошибки в STMовских либах, и в Кейловских. Примеры приводил. А уж про USB... это ппц чего там было. Все писал и ссылки кидал раза 3-5, когда аналогичная тема (как сейчас) всплывала. Искать не буду - надоело. Через пару месяцев опять всплывает подобная тема. - il-2(28.04.2021 14:36)
- Лично видел две: с I2C и в USB Device. USB давно исправили, про I2C
- не в курсе. Но бага с USB была настолько эпичной, что говорит о
качестве кода больше тысячи слов. - LightElf(28.04.2021 12:30)
- I2C из библиотеки не использовал в stm32f4xx сам аппаратный I2C
глюкавый изначально. А где там USB в Std? В
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 например вообще про USB не
нахожу упоминания. Была отдельная STM32_USB_Device_Library, в каких
то версиях глюк с VCP был точно, на форуме ST он описывался. - User_(28.04.2021 12:46)
- Давно было, в нынешних версиях не ориентируюсь. Моя логика была
такая: взял то, что на тот момент выдавалось на сайте ST. Копнул,
огреб багу с серийным номером (вообще днище). Сделал по-своему.
Работает - не трогаю. Ну и сама идеология (которая была тогда) мне
не зашла. На мой взгляд - ни рыба ни мясо, хотя тут еще и специфика
самих камней играет рояль. Взять, к примеру, таймеры. Классные,
навороченные - но зачем-то все разные. Реверсивные/не реверсивные;
с выходами и без; с LightElf(201 знак., 28.04.2021 13:03)
- Это выходит нельзя просто в конфиге поменять например UART1 на
UART3 , надо еще и код лопатить? - Andreas(28.04.2021 13:23)
- Смотря какой функционал от UART используется. Если нужно просто
115200-8-N-1 - то просто заполняешь пяток регистров за пять минут с
перекуром. Если нужно что-то специфическое (CTS/RST, RS485, LIN,
ИК-передатчик, смарт-карта, DMA) - то сначала по даташиту выбираешь
UART, на котором есть нужный функционал. Потом смотришь, не
пересекается ли он по ногам и по каналам DMA с чем другим нужным.
Утрясаешь это безобразие, если понадобится. Потом за десять минут
пишешь код напрямую на LightElf(80 знак., 28.04.2021 15:45)
- Это одна из причин, почему я люблю C8051F380 (efm8), там всего 3
регистра для Uart/spi - для управления, делителя и данных. А шина
позволяет двигать Spi и т.д по всем ногам почти. Win! - Costic(29.04.2021 12:42)
- Ну оно такое. Чем больше фич - тем больше битиков для конфигурации. Аппаратный flow-control вкл/выкл, аппаратное управление трансивером RS485 - вкл/выкл, аппаратный адрес - вкл/выкл и тыды. - LightElf(29.04.2021 15:36)
- так у любого 8-битника разве не так? У моего Z8 бит включения UART, количество стоповых бит и скорость. Всё. Тоже в 3-х регистрах. SPi - 2 регистра. - Лaгyнoв(29.04.2021 15:15)
- Сейчас тенденция однако, :) чтобы чего-то запустить из периферии надо освоить кучу страниц pdf-а и познать комбинации настроек разных регистров и тогда какой-то USART, SPI, CAN, оживет, а в старых 8-ми битниках хватало настроить несколько регистров и осилить 2-3 страницы Pdf-а - User_(29.04.2021 12:55)
- На регистрах я и сам знаю как, там все просто и в свои ф-ции я просто номер порта передаю, а уже в них по номеру из таблиц указатели на структуру, пины вкл клока, номера прерываний берутся. Интересно как болезненно такое в стшной либе. А доп функции(ооочень редко нужные) я обычно дефайнами вкл/выкл и тут уж если выбрал не тот уарт - лови исключение. - Andreas(28.04.2021 15:54)
- Это одна из причин, почему я люблю C8051F380 (efm8), там всего 3
регистра для Uart/spi - для управления, делителя и данных. А шина
позволяет двигать Spi и т.д по всем ногам почти. Win! - Costic(29.04.2021 12:42)
- в большинстве случаев можно. - User_(28.04.2021 13:30)
- Смотря какой функционал от UART используется. Если нужно просто
115200-8-N-1 - то просто заполняешь пяток регистров за пять минут с
перекуром. Если нужно что-то специфическое (CTS/RST, RS485, LIN,
ИК-передатчик, смарт-карта, DMA) - то сначала по даташиту выбираешь
UART, на котором есть нужный функционал. Потом смотришь, не
пересекается ли он по ногам и по каналам DMA с чем другим нужным.
Утрясаешь это безобразие, если понадобится. Потом за десять минут
пишешь код напрямую на LightElf(80 знак., 28.04.2021 15:45)
- в комплекте с std lib идут примеры. Если их брать за основу и
работать по аналогии, то проблем не обнаружено. Можно долго
рассуждать о количестве строк в инициализации и прочих "вкусах", но
оно там в большинстве рабочее. Всякие там таймеры, SPI, DMA, CAN,
USART, порты и т.д. все это работает в STD lib - User_(28.04.2021 13:12)
- Я, видимо, непонятно выразился. Зачем нужен уровень абстракции,
если он ничего не абстрагирует? Ну заменили при ините DMA
используемый макрос с LightElf(239 знак., 28.04.2021 13:21)
- то что оно все не идеально, это понятно. Но когда надо быстро
запустить, то открыв пример с работой данной периферии все
становится понятно. Если начать использовать std lib без примеров,
то в ней еще больше запутаешься. Там алгоритм действий простой: 1.
открыл пример. 2. повторил использование, слегка подправив под свою
задачу. Без примеров полезность std lib уменьшается, но не
отменяется. :) Можно до дыр зачитывать pdf чтобы настроить USART, а
можно просто по примеру User_(420 знак., 28.04.2021 13:40)
- Ну вот как-то так: LightElf(330 знак., 28.04.2021 15:58)
- Кстати, прерывания зачастую не нужны, подключаю DMA. На приём
закольцованный режим, если в главном цикле успевать выгребать, то
кольцевой буфер не переполнится. А на отправку бывает достаточно
каждую посылку делать одной пачкой DMA. SciFi(791 знак., 28.04.2021 16:45)
- Прием - так же, передачу - когда как, по потребности. - LightElf(28.04.2021 18:32)
- Нафиг CR2 и CR3 обнулять? Там и так нули. - SciFi(28.04.2021 16:33)
- UART мог уже использоваться ранее в другом режиме - LightElf(28.04.2021 16:45)
- А вот не надо пускать на территорию кого попало, тогда и не будет
использоваться непонятно когда и как :-) - SciFi(28.04.2021 16:46)
- А ежели системный бут порезвился? Или его тоже не пускаем? - Andreas(28.04.2021 16:53)
- А вдруг? :) - LightElf(28.04.2021 16:51)
- А вот не надо пускать на территорию кого попало, тогда и не будет
использоваться непонятно когда и как :-) - SciFi(28.04.2021 16:46)
- UART мог уже использоваться ранее в другом режиме - LightElf(28.04.2021 16:45)
- Кстати, прерывания зачастую не нужны, подключаю DMA. На приём
закольцованный режим, если в главном цикле успевать выгребать, то
кольцевой буфер не переполнится. А на отправку бывает достаточно
каждую посылку делать одной пачкой DMA. SciFi(791 знак., 28.04.2021 16:45)
- Другими словами, на чём примеры сделаны, на том и кодим. Хоть на
васике. Если бы примеры были на голых регистрах, нам тут даже не о
чем было бы спорить :-) - SciFi(28.04.2021 13:40)
- Коллеги, LL нашефсё! - dastun(28.04.2021 13:53)
- когда начинал, LL еще не было, в новых проектах попробую. - User_(28.04.2021 14:24)
- Вот в помощь для F4 и F0 dastun(4 знак., 28.04.2021 21:04, ссылка, ссылка)
- LL нормально, тупые обертки над битовыми операциями. Использую на G0. - michas(28.04.2021 18:08)
- когда начинал, LL еще не было, в новых проектах попробую. - User_(28.04.2021 14:24)
- истину глаголишь :) , но даташит читать приходиться, а учитывая их
качество примеры облегчают существенно процесс понимания. В итоге,
проверку в железе никто не отменял, хоть std используй, хоть всё
ручками перепиши, тут уже все глюки проверяются и исправляются. - User_(28.04.2021 13:43 - 13:45)
- А вот с этого момента поподробнее, пожалуйста. Что там с качеством
даташитов? И желательно с примерами. - SciFi(28.04.2021 13:44)
- Им можно их улучшать. Есть стиль оформления, когда описывается
периферия, потом идет краткое итого - как настроить по шагам,
буквально делай раз, делай два и т.д. Вот таким подходом STM
похвастаться не может. Такое у них встречается не всегда. - User_(28.04.2021 13:58)
- У F0 хороши примеры в конце Reference Manual - LightElf(28.04.2021 15:47)
- Им можно их улучшать. Есть стиль оформления, когда описывается
периферия, потом идет краткое итого - как настроить по шагам,
буквально делай раз, делай два и т.д. Вот таким подходом STM
похвастаться не может. Такое у них встречается не всегда. - User_(28.04.2021 13:58)
- А вот с этого момента поподробнее, пожалуйста. Что там с качеством
даташитов? И желательно с примерами. - SciFi(28.04.2021 13:44)
- Коллеги, LL нашефсё! - dastun(28.04.2021 13:53)
- Ну вот как-то так: LightElf(330 знак., 28.04.2021 15:58)
- то что оно все не идеально, это понятно. Но когда надо быстро
запустить, то открыв пример с работой данной периферии все
становится понятно. Если начать использовать std lib без примеров,
то в ней еще больше запутаешься. Там алгоритм действий простой: 1.
открыл пример. 2. повторил использование, слегка подправив под свою
задачу. Без примеров полезность std lib уменьшается, но не
отменяется. :) Можно до дыр зачитывать pdf чтобы настроить USART, а
можно просто по примеру User_(420 знак., 28.04.2021 13:40)
- Я, видимо, непонятно выразился. Зачем нужен уровень абстракции,
если он ничего не абстрагирует? Ну заменили при ините DMA
используемый макрос с LightElf(239 знак., 28.04.2021 13:21)
- Это выходит нельзя просто в конфиге поменять например UART1 на
UART3 , надо еще и код лопатить? - Andreas(28.04.2021 13:23)
- Давно было, в нынешних версиях не ориентируюсь. Моя логика была
такая: взял то, что на тот момент выдавалось на сайте ST. Копнул,
огреб багу с серийным номером (вообще днище). Сделал по-своему.
Работает - не трогаю. Ну и сама идеология (которая была тогда) мне
не зашла. На мой взгляд - ни рыба ни мясо, хотя тут еще и специфика
самих камней играет рояль. Взять, к примеру, таймеры. Классные,
навороченные - но зачем-то все разные. Реверсивные/не реверсивные;
с выходами и без; с LightElf(201 знак., 28.04.2021 13:03)
- I2C из библиотеки не использовал в stm32f4xx сам аппаратный I2C
глюкавый изначально. А где там USB в Std? В
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 например вообще про USB не
нахожу упоминания. Была отдельная STM32_USB_Device_Library, в каких
то версиях глюк с VCP был точно, на форуме ST он описывался. - User_(28.04.2021 12:46)
- Пробую для этих целей внедрять BSP, который уникален для каждой
платы. Смысл в том, что вызов функции, завязанной на работу с
железом, например LedGreenOn(), описывается отдельно для каждой
платы: evgeniy1294(530 знак., 28.04.2021 12:05)
- BSP скорее для проца должен быть. gpio_set_pin(uint32_t pin) един для stm32f0, stm32f1, MKL27, lpc1850... - Andreas(28.04.2021 12:33)
- Я тоже о таком подумывал. Но, немного поразмыслив, рассудил, что в моей ситуации геморроя получится больше, чем выхлопа, и забил... - SciFi(28.04.2021 12:20)
- Это не инструмент, а гуано, сделаное неадекватными людьми. И насчет
"проверенного" инструмента - это и есть херня. Ошибок в этих
библиотеках - дофига. Причем их там столько много, что процесс их
исправления (который, надо отдать должное - идет) ничего не
улучшает. Я вот последнее время тружусь над портированием - за
неимением в ближайшем будущем процессоров STM32F103 мы закупили: il-2(610 знак., 28.04.2021 11:48)