Хочу вкатится в разработку на stm32. Сначала стоит вопрос выбора отладочной платы. Что лучше взять: NUCLEO-F401RE или NUCLEO-F303RE ? Или может вообще, что то другое. Нужно максимальное количество АЦП для обработки звука. Какую среду разработки лучше использовать?
>>339005 (OP) Тут есть ARM-тред, в котором ты вполне мог бы задать свой вопрос. Хотя действительно есть некоторый смысл в раздельных тредах. >Или может вообще, что то другое. Именно. Ты бы посмотрел какие АЦП используют для звука. У тебя в компьютере сколько разрядов в АЦП для звука? А сколько в STM32? >Какую среду разработки лучше использовать? Это не не оказывает существенного влияния на процесс вкатывания. Но если спрашиваешь, то это будет в самый раз: https://www.instructables.com/id/Quick-Start-to-STM-Nucleo-on-Arduino-IDE/
>>339005 (OP) Ждал этот тред больше 3 лет. Мимо начинал свой путь освоения контроллеров с AVR в AtmelStudio и теперь сижу на STM32 с STM32CubeMX как на герыче сука. Если совсем с нуля хочешь вкатиться, возьми на али пару простых отладочных плат и программатор:
Эти платы пригодятся всегда, когда надо будет собрать что-то относительно простое и оставить работать на неопределенный срок, чтоб не дергать основную плату.
STM32F030F4P6 - самое ходове дерьмо для проверки датчиков, дисплеев и создания всяких тестовых простых девайсов, кароче аналог ардуины, только быстрее и лучше. STM32F103C8T6 - второе ходовое дерьмо из-за своей дешивизны и предоставляемых возможностей, достаточно памяти, интерфейсов и всего остального, чтоб сделать йобу с кучей датчиков, цветным дисплеем и всякими передающими модулями или прицепить к пеке по USB.
У меня еще валяются такие же платы с STM32F103RET6 и STM32F103RFT6, когда нужно совсем много памяти для графики или больших массивов данных, да и в целом 103я серия очень нравится. Также есть STM32F429I-DISCO - это былая моя первая отладочная плата STM32, с которой я начал свое изучение и пилил тогда фо фан систему использующую DSP для распознавания цветов и простых форм с Omnivision камеры + наложение информации на кадры и трансляция через ESP8266 модуль по WiFi, чтоб через обычный браузер смотреть - было очень интересно.
Насчет Nucleo, так себе варчик, особенно если больше 1 покупаешь - неоправданная переплата за програматор на плате и кучу перефирии - она будет только мешать (не будешь же ты выпаивать каждый раз какую-то лабуду с нее, когда нужны будут ножки на которой она висит). Лучше взять у китайцев с голой разводкой (если имеются нужные тебе варианты) и навешивать все свое, единственную Nucleo которую я б купил это с контроллером STM32F334R8 из-за наличия в нем таймера разрешением 217 пикосекунд и отсутствия самого контроллера на али.
По звуку ничего определенного не могу посоветовать, но как писали выше - бери плату с DSP. А по среде разработки советую связку STM32CubeMX + Keil + STMStudio. Сгенерил проект в кубе и пишешь себе код в лучшей IDE для ARM, а потом тестишь всякие баги или проводишь наблюдения в STMStudio, которая будет строить график изменения значения наблюдаемых переменных хоть целый день.
>>339689 А зачем тебе куб нужен, только ради схемки тактирования и пинов? Я просто сразу с регистров начал и Keil и не понимаю зачем вообще эти говнокубы и говнохалы. Единственное - приходится читать исходники хала и комментарии ибо бывает сложно понять что и в какой последовательности врубать для того чтобы врубить какую-нибудь периферию ибо в RM не всё так понятно расписано.
>>339752 Ради инициализации периферии, меня это заебывало на AVR - постоянно лезть в мануал потому что на каждой атмеге свои регистры и комбинации флагов для одной и той же настройки частоты шима или параметров uart. Потом то я надрочился с ними и запомнил, но когда перекатился на stm, решил ну его нахуй пусть генерит - за 3 года никаких проблем не было, тем более HAL'овские функции довольно хорошо написаны, изи понимать что там происходит когда дебажишь. А в кубе все задал, оно сгенерило функцию с инициализацией двух десятков параметров и тебе не надо лезть каждый раз в мануал на 300 страниц если надо что-то изменить, особенно это касается всяких DCMI, FMC, встроенного LCD-TFT контроллера и прочего.
>>339829 Открыл шебм, изображение на экране посыпалось, все в полоску стало, пришлось ресет жать, теперь стремно снова открывать, что это за хуйня была.
От треда у меня сложилось впечатление, что вы тут обсуждаете тысячекратно оверпрайснутые аналоги ардуины. Лучше бы накидали литературы, желательно на русском. А также плюсы-минусы разных средств разработки. И все это желательно с ориентиром на массовую дурино-подобную плату с STM32F103C8T6, дабы вкатиться мог любой бомж.
>>339844 Тебе для чего? Как можно быстрее что-то сделать или основательно вкатиться? Если первое - бери ардуину. >литературы, желательно на русском. 1) Без книг по Си по любому не обойтись. Конечно можно это заменить каким-то кратким курсом, но тогда знания останутся поверхностными. Для начала микроконтроллеры можно вообще не трогать, а примеры с упражнениями компилировать под винду (или что там у тебя). Хороших книг тут две: - Подбельский и Фомин http://publ.lib.ru/ARCHIVES/P/PODBEL%27SKIY_Vadim_Valerievich/_Podbel%27skiy_V.V..html - Керниган и Ричи. http://publ.lib.ru/ARCHIVES/K/KERNIGAN_Brayan_Vil%27son/_Kernigan_B.V..html Но в этих книгах есть существенная проблема - не рассматриваются нововведения C99, без которых (хотя и совсем малой части) для микроконтроллеров не обойтись. Об этих нововведениях нужно где-нибудь прочитать, хотя бы статейку нагуглить. 2) Нужно что-то для понимания того что такое процессор. Нужно понимание о том что такое система команд, гарвардская/фон-неймановская архитектура, CISC/RISC и прочее. В рамках этого пункта, для общего развития, неплохо было бы разобрать систему команд какого-нибудь простенького процессора и написать десяток строк на ассемблере. Тут я не знаю какую литературу советовать. 3) Ядро Cortex-МЗ компании ARM. Полное руководство. Джозеф Ю. Стоит прочитать, хотя бы по диагонали. 4) После того как осилишь предыдущие пункты, остается только открыть документацию на микроконтроллер, посмотреть примеры и понять куда тыкать в IDE.
>А также плюсы-минусы разных средств разработки. Это по вкусу.
>И все это желательно с ориентиром на массовую дурино-подобную плату с STM32F103C8T6, дабы вкатиться мог любой бомж. Вообще без разницы. Все отличие этих плат лишь в наличии/отсутствии встроенного отладчика и количестве светодиодов.
>>339847 >Тебе для чего? Для махараек. >бери ардуину. С нее и AVR заинтересован в перекате. >Без книг по Си по любому не обойтись В дроч регистров, ногодрыг и битовые операции могу, книг особо не читал. Думаешь, стоит? Для аврок вроде знаний хватало. Библиотеки с классами и ООП, конечно, не делал, но оно мне вроде и не нужно. >Нужно что-то для понимания того что такое процессор. Нужно понимание о том что такое система команд, гарвардская/фон-неймановская архитектура, CISC/RISC и прочее Зачем? Вещатели о CISC/RISC и прочих общих определениях в 99% случаев тоже нихуя не смогут объяснить внутреннее устройство процессора, глубже чем "вот этот квадратик - АЛУ, а вот эти стрелочки - шина данных". >для общего развития, неплохо было бы разобрать систему команд какого-нибудь простенького процессора и написать десяток строк на ассемблере Так открываем даташит на те же аврки и пишем, список команд с кратким описанием там дан. Чего тут разбирать-то? Ну и смысла в этом нет, только для общего развития. >3) Ядро Cortex-МЗ компании ARM. Полное руководство. Джозеф Ю. Стоит прочитать, хотя бы по диагонали. По диагонали определенно стоит изучить. >После того как осилишь предыдущие пункты, остается только открыть документацию на микроконтроллер, посмотреть примеры и понять куда тыкать в IDE. Т.е. я уже практически готов к секасу? >Это по вкусу. Ну, допустим. А какие самые популярные у махарайщиков, с большим коммьюнити? >отличие этих плат лишь в наличии/отсутствии встроенного отладчика Вот, кстати, важный момент. Где на компе тестить и симулировать код внутри МК? С аврками Протеус в этом деле все решает, а вот с стм32 полные непонятки.
>>339849 >В дроч регистров, ногодрыг и битовые операции могу, книг особо не читал. Думаешь, стоит? Ну если ты можешь сказать (не подглядывая) чем отличается i++ от ++i и знаешь, что в выражениях типы короче чем int, неявно приводятся к int, то наверное не нужно ничего читать. Даже если не знаешь, то для махараек и так сойдет. >Зачем? В основном для общего развития. Для махараек вобщем то не нужно. Но можно ли нормально программировать те же AVR, не зная что у них раздельные адресные пространства кода и данных? А это уже отличие фон-феймановской архитектуры от гарвардской и модифицированной гарвардской. >Так открываем даташит на те же аврки и пишем, список команд с кратким описанием там дан. Чего тут разбирать-то? Ну и смысла в этом нет, только для общего развития. Может и нет смысла. Но дает некоторое представление о том что может процессор. Например, явно не лишним будет знать, что в cortex-M0 и M1 нет команды деления, а в M3 остальных она есть. Те же DSP инструкции, которые выше обсуждали.
>Ну, допустим. А какие самые популярные у махарайщиков, с большим коммьюнити? Бери кейл. Остальные варианты те же что для AVR - это практически любые, не заточенные под микроконтроллеры IDE. Преимущество тут во множестве мелочей, которыми IDE отличается от блокнота. Недостатки и так должны быть понятны.
>Где на компе тестить и симулировать код внутри МК? На компе - толком нигде. Пошаговая отладка и прочие штуки - прямо на микроконтроллере через ST-Link, J-Link и прочие. ST-Link, как видно из названия, только для ST. J-Link для всех ARM.
Посоны, я правильно понял, что CMSIS это самый такой байтоебский способ погромирования, с прямым обращением к регистрам и прочее. HAL сродни ардуиновскому языку. А по SPL какой положняк?
>>339859 >Посоны, я правильно понял Может правильно, а может и вовсе неправильно. Особенно подозрительно про "ардуиновский язык". >А по SPL какой положняк? В первом приближении это мало чем отличается от CMSIS. Вот например на картинке код одной из функций SPL. Как видно, берутся поля из структуры и практически напрямую запихиваются в регистры. Преимущество по сравнению с CMSIS в том что не нужно помнить какой бит в каком регистре и меньше шансов что-то пропустить и ошибиться.
ST постепенно отказываются от SPL, поэтому использовать SPL не стоит. Сейчас у них есть LL, которая мало чем отличается от SPL. Хотя может я в чем-то не прав, т.к. за STM наблюдаю издали, так сложилось что мне приходится использовать другие микроконтроллеры.
>>339862 >Как видно, берутся поля из структуры Дополню, а то вдруг не совсем понятно окажется. В эту структуру уже все вручную пихается. Получается что документацию в части регистров все равно, как правило, необходимо читать.
>>339859 CMSIS - по сути просто набор определений регистров, чтоб тебе не пришлось в одном контроллере писать значения в TFIT1 и TFIT2, а в другом для той же настройки в TFIT3 и TFIT4, можно с помощью CMSIS в обоих случаях задавать через REGISTER_ZALYPI_1 и REGISTER_ZALYPI_2.
SPL - набор высокоуровневых либ, по сути надстройка над CMSIS, тебе уже не надо вписывать значения в регистры, а просто вызвать функцию с параметрами и она сама их впишет или прочитает. Это говно лишилось поддержки 4-5 лет назад и оставило после себя кучи говна примеров русскоязычного комьюнити, которые теперь бесполезны.
HAL - так как SPL было корявым поделием с кучей багов и проблем переноски кода с одного контроллера на другой, ST создали новый набор либ с учетом всех проебов и он оказался просто 10 из 10, если тебе надо написать что-то сложнее мигания лампочки по таймеру.
LL - низкоуровневый API, который ST выкатили относительно недавно, по сути является аналогом CMSIS, но лучше и полностью совместим с STM32Cube и HAL, тоесть можно использовать в проекте написанном на HAL в качестве оптимизированных вставок.
>>339849 >С аврками Протеус в этом деле все решает Чет вообще вголос с этого, ведь есть AtmelStudio, купи только программатор нормальный и наслаждайся всеми плюшками бесплатной IDE от производителя микросхем.
>>339869 >SPL - набор высокоуровневых либ, по сути надстройка над CMSIS >LL - низкоуровневый API, который ST выкатили относительно недавно, по сути является аналогом CMSIS Что-то ты странное пишешь. Вот на на картинке код функции из LL, выше код аналогичной функции из SPL. Как говорится, найди 10 отличий (кроме имен). Ну да, записываются чуть разные биты (назначение функций немного отличается). Еще вместо переменных tmpreg в LL используется макрос MODIFY_REG. Но существенных отличий нет. >по сути является аналогом CMSIS Вот только как видно из приведенного кода, LL это такая же надстройка над CMSIS как SPL. И LL ничуть не заменяет CMSIS, а наоборот его использует.
>>339843 >Поморгаешь диолдами и положишь на полку. Анус ставлю.
Ну у меня есть конкретная, промышленная задача под STM. Нужно писать звук с АЦП и передавать в комп. Желательно минимум 8 каналов одновременно. Максимум 16 хотелось бы. Качество звука не волнует. Главное чтобы речь можно было разобрать.
>>339829 >>339878 Сразу не понял что это именно ты, а то похоже тут пишут уже все вкатывальщики подряд. Если не делать цифровую фильтрацию, то по вычислительным возможностям слишком жирно для твоих задач, впрочем это не плохо. Немного хуже то, что периферия там сложнее, будет сложнее освоить. Если цифровую фильтрацию не делать, то DSP инструкции тоже почти не пригодятся. Зато АЦП наоборот слабенький, но все равно должно хватить. Насколько я помню, у NXP были микроконтроллеры с более серьезными АЦП, но тебе это вроде не требуется. Я правильно понял, ты писать на компе собираешься? Тогда суммарная скорость передачи на ПК будет небольшая - 16 бит на канал, частота дискретизации максимум 16 кГц и на 16 каналов - получается 4 МБит/с, это вообще ерунда.
>>339883 >а COM порт на плате сможет пропустить столько? У него вроде максимальная скорость 128000 байт в секунду. На материнской плате компа? По разному, но я больше 921600 бод/с (это 737280 бит/с) я не встречал. А микроконтроллер вполне может несколько мегабит выдать.
У тебя два варианта - USB и Ethernet. На счет USB посоветовать ничего толком не могу, т.к. делал только HID и то давно. Знаю только что есть стандартный аудио класс, но не знаю можно ли в нем сделать столько каналов. Впрочем можно сделать составное USB устройство, т.е. чтобы компьютером виделось как несколько устройств. Другой способ - это использовать FT232H или другие микросхемы от FTDI. Программно это намного проще, только для компа придется что-то придумывать. Сам я это не делал, но пользовался устройством где они применялись для передачи видео из ПЛИС. С Ethernet все можно сделать совсем просто. Если воткнуть в сетевуху компа напрямую, то можно обойтись без TCP/IP и слать RAW пакеты. С TCP/IP тоже не сложнее, только требований к микроконтроллеру может быть чуть больше.
>>339878 Есть же прекрасные мемс-микрофоны с полкой 20-20000 Гц, которые выдают уже цифровой выход правда, нужна обработка фильтром. Один такой даже стоит на stm32f4discovery
>>339889 > С TCP/IP тоже не сложнее, только требований к микроконтроллеру может быть чуть больше. Я поднимал lwip стек на m4, работал прекрасно с потоком примерно 10мбит/с. Главное, с буферами не мельчить
https://www.youtube.com/watch?v=VYhAGnsnO7w Пссст, там Дейв создал хайп про китайские МК по 3 цента в розницу. На сайте производителя есть IDE и шиты на ангельском. Реально найти и купить программатор. Т.е. все есть, только разбирайся. Фанатики STM8, по 40 центов за штуку, массово режут себе вены и вешаются. STM32-господа тоже в легком недоумении от китайского чуда. Но есть один подводный камень: все эти мк однократно программируемые.
>>339975 И это еще что, на том сайте есть китайские 16-битные ЦАПы по 30 центов и 16-битные АЦП по 50 центов... Вот это реально ШОК. Полагаю, ОП ёбнется под стол от охуения.
>>339975 Ну а смысл? Будто есть разница для единичных самоделок - 100 рублей или два рубля. Обычно в любом изделии, микроконтроллер это не самое дорогое, если это конечно не мигалка одним светодиодом. Или ты свои поделки делаешь сериями по тысяче штук? Тематике треда тоже не соответствует. Это восьмибитный микроконтроллер, а тут тред про STM32.
>>339979 Ну, вообще в видео речь шла про массовое производство. Но народ все-равно набежал. Забавно, что вскоре после выхода видео все запас тех мк резко раскупили. Тем не менее, магаз с китайскими брендами - это охуенная находка. >>339978 >16-битные АЦП по 50 центов 24-битные, фикс Есть даже дешевле.
>>339978 >Полагаю, ОП ёбнется под стол от охуения. Полагаю ему будет без разницы. Тем более ты наверное про одноканальные или двухканальные пишешь. На диджикее PCM1681PWP с восемью каналами стоит 4 доллара поштучно. А еще, внезапно, разрядность и частота дискретизации - это не единственные характеристики АЦП.
>>339981 >Тем не менее, магаз с китайскими брендами - это охуенная находка. Ты свои самоделки делаешь сериями по несколько тысяч штук?
Есть вопрос по теме. Предложили работу с программированием STM32 и обработке инфы с него на компе, построение графиков и прочее. Контора вроде занимается машиностроением. Глубокими знаниями по теме я не обладаю. До этого только занимался PIC-контроллерами на поверхностном уровне. И тут вопросы? 1)Тяжело ли новичку адаптироваться к сфере? 2)Актуально ли вообще в 2018 году вкатываться в встраивыемые системы? 3)Стоит ли заниматься этим, если вообще нет знаний по электронике дальше закона ОМА? Прогать под железо нравиться на отладочниках, но не нравиться разводка плат, расчёты электротехнические и прочее... 4)Насколько это творческая деятельность и насколько оплачиваемая? Куда может расти разработчик дальше?
>>340287 У меня создалось впечатление, что он тоже особо плотно не занимается. Фотки одни и те же, готовых девайсов не показывал. Наверняка ошибаюсь, но впечатление создалось именно такое.
>>339877 Ок ладно, согласен, LL не заменяет CMSIS, но нет особой разницы использовать чистый CMSIS или LL, который используется для инициализации периферии, а потом код пишется снова на CMSIS. Я например вообще HAL'о адепт, не понимаю почему его постоянно поливают грязью в ру комьюнити, при том что за рубежом все пользуются и довольны кроме небольшого количества заядлых байтодрочеров.
>>340299 Та нечего показывать, разработал 2,5 девайса, собираю и продаю их (в течении пары дней паяю платы и подготавливаю корпуса, которые продаю за 1-2 недели, остальное время кинчики смотрю или играю - на жизнь и обновление пеки/смартфона каждые пару лет хватает), последний год ничего нового на STM32 не писал, кроме ковыряния всяких новых датчиков и дисплеев с али. Пару раз в месяц достаю с ящика ESP32 в ожидании того, что наконец-то запилили нормальные библиотеки для асинхронного веб сервера под ESP-IDF...
>>340304 Что за девайсы? Может дашь каких советов, как найти свою нишу? Я хиккан-программист-фрилансер, имею средненькие знания электроники, паю махарайки для себя. Крутится идея создать стартап какой-то или типа того, в общем делать реальные вещи.
>>340303 >Я например вообще HAL'о адепт, не понимаю почему его постоянно поливают грязью в ру комьюнити, при том что за рубежом все пользуются и довольны кроме небольшого количества заядлых байтодрочеров.
Потому что кроилово на себестоимости и вытекающая из него байтооптимизация головного мозга.
>>340486 >>340693 Не хочу палить то что я делаю, потму что довольно востребованная херовина среди обычных людей и продается изи.
Двигайся в направлении бытовых систем автоматизации, которые будут дешевые по себестоимости и при этом не будет особо аналогов, кроме китайского говна с али. Например простой контроль температуры и влажности при помощи тэна/лампы и увлажнителя/осушителя - он лежит в основе инкубаторов, сушилок, хранилищ продуктов, климат контроля в доме. Добавляешь к этому свои фишки которые нужны пользователям или которых еще никто не делал и у тебя уже несколько устройств для разной целевой аудитории но с одинаковым принципом работы и элементной базой.
17-30: инициализирую периферию 32: подключаю USART6_TX к PC6 34-42: светодиодик для индикации 44-50: настройка PC6 (AF) 52-56: инициализация USART6 58-64: шлю байтик
Так вот, светодиод моргает, но PC6 как сидит в +3В, так и сидит, никаких данных не передает. В чем косяк может быть? Собираю arm-gcc-none-eabi в linux x64, шью через openocd.
>>341412 >никаких данных не передает Осциллографом или логическим анализатором смотрел? Может у тебя скорость неправильная?
Возможно у тебя проблема из-за неправильного определения тактовой частоты. Я давно ничего не делал с STM32, могу ошибаться. Если я правильно помню, то в дефолтном startup файле вызывается функция SystemInit (это не только у STM32, кажется это требование CMSIS), которая включает тактирование от кварца. Функция USART_Init, для того чтобы правильно посчитать делители, определяет тактовую частоту с помощью еще одной функции, которая использует дефайны с частотами генераторов, которые определяются (если не были определены) в stm32f4xx.h.
Наверное тебе следует глобально определить HSE_VALUE. Ну и еще ты зря используешь SPL.
>>341418 Осциллографом, пик 2. Данные должны иди через канал 1 (желтый) сразу после включения светодиода (канал 2, синий). Тактовая частота вроде верно настроена, пик 1.
Все, решилась проблема. В USART_Init вызывалась RCC_GetClocksFreq, которая лезла в глобально объявленный массив APBAHBPrescTable. А там был мусор. Убрал модификаторы volatile и все заработало. Теперь вопрос к знатокам - какого хуя?
>>341437 >>341438 Это скорее вопросы по стандарту Си или к компилятору. Разве оно там не static volatile const в результате получается? Попробуй через objdump -t посмотреть в каком сегменте оказывался этот массив.
>>341440 я немного ошибся, массивов два, один объявлен статически в XXX_rcc.c (APBAHBPrescTable), второй - глобально в system_XXX.c (AHBPrescTable). если вернуть все как было, то AHBPrescTable попадает в секцию .data в бинарнике.
>>341442 >>341441 Возможно ты это и так знаешь, но на всякий случай скажу. Очевидно, что секция .data должна инициализироваться в самом начале из флешки. Код этой инициализации находится в startup файле. И в скрипте линкера это тоже должно быть отражено. Если все переменные из секции .data не инициализируются, то это может быть из-за неправильного startup или скрипта линкера.
Хватит ли ресурсов контроллера, чтобы захватывать и слегка обрабатывать (смотреть среднюю яркость и превалирующий цвет) цветное аналоговое видео PAL или NTSC?
>>345085 Цвет и яркость по всему кадру? Или по краям экрана? Мне кажется что микроконтроллер тут лишний, хватит какой-нибудь телевизионной микросхемы TDA для выделения цветоразностных сигналов. Для получения средней яркости так вообще достаточно лишь пропустить привязанный по уровню видеосигнал через RC-цепочку. На микроконтроллере выделить цветоразностные сигналы должно быть затруднительно, как минимум потребуется довольно высокая частота дискретизации.
>>345172 Спасибо. Немного не так выразился. Нужно разбить кадр на участки квадратно-гнездовым способом (т.е. что-то типа таблицы) и определить средние цвет и яркость каждого участка (ячейки таблицы).
>>345238 Ерунду выдумываешь. Достаточно лишь получить цветоразностные сигналы на какой-нибудь телевизионной микросхеме, пропустить их через ФНЧ (в соответствии с ячейками таблицы) и в нужные моменты времени запустить АЦП. Длительность строки 64 мкс, даже на ардуине можно сделать запуск АЦП в нужный момент, если конечно ячейки не слишком мелкие. Это скорее задача для компьютера (может одноплатника) с easycap для видеозахвата.
Так, я тут заказал простейшую stm32f103c8-базед плату и ст-линк в2 прошивальщик и надеюсь на то, что первое время поучусь без обвязки контроллера. Нормально жи? Я просто хочу с ним пообщаться с пекарни типа "посчитай мне корень из пи". Мне кажется, что после традиционного погромирования так проще будет. Я вообще адекватно задачи ставлю по вкату? Потом, если чё, докуплю макет за 200 рублёв с диодами разноцветными.
>>345384 Думаю, что это гораздо адекватнее чем покупать пачку модулей или всякие демоплаты типа дискавырей. Лично мне идеальным видится вариант покупки под конкретную задумку, когда сначала придумываешь охуительный велосипед, а затем подбираешь под него железо, которое и осваиваешь в процессе. мимо
>>345547 >Дискавери-боярин занимается написанием кода Велосипед потом поедет по назначению, а дискавери отправится в небытие. Это примерно как делать детей или дрочить.
>>345566 >Велосипед потом поедет в помойку, а Дискавери-боярин будет отлаживать код вывода на дисплей и работу с памятью. Данную связку велосипедо-нищенка не сможет спаять своими кривыми ручонками и забросит затею. А почтенный Дискавери-господин закончит написание кода, отрисует схему своего йоба-устройства, спокойно сочинит печатку и закажет ее изготовление китайским мастерам. Затем спаяет свое устройство и зальет в него отлаженный и рабочий код.
>>345570 >дисплей и работу с памятью То есть во всех твоих самоделках, кроме микроконтроллера, дисплея, памяти и может быть батарейки, ничего более существенного нет?
>>345578 Ну а смысл делать такое на STM32? Не проще ли и дешевле взять одноплатный компьютер? Толку от дискавери не так много. Допустим захочется отмакетировать синтезатор частоты для радиоприемника или часы на неонках, сильно поможет дискавери по сравнению с простейшей платой? Или взять к примеру задачу ОП-а, ему будет какой-то толк от дискавери только если он решит использовать ethernet.
>>345563 > usb-uart Пичаль, а что тогда вообще st-link v2 делает? Я читал, он и шьёт, и дебажит. Т.е. доступ к памяти МК у него есть. Так почему бы через него не возвращать результаты?
>>345696 >Я читал, он и шьёт, и дебажит. >Т.е. доступ к памяти МК у него есть. Это все верно. Но printf-ами удобнее срать в UART. В отладчик тоже можно, например через SWO или semihosting, но по моему это не так удобно. Так что USB-UART дополняет отладчик.
>>345699 Можешь нищепример кинуть? Просто плата 120, отладчик столько же, а эти уарты нахожу по 800. Проще тогда борду докупить за 200 и моргать диодами, так там ещё фоторезюки в комплекте.
>>347146 >SPI >serial pereprherial interface >SERIAL Ну почему в вопросе опять ответ, а задавший его этого не видит? Конечно можно! Главное не мешай ему работать и всё. Тебе надо слушать MOSI, MISO по тактам через SCK.
>>347161 >Тебе надо слушать MOSI, MISO по тактам через SCK. Я только вчера с ардуины слез. Всё в теории выглядит довольно очевидно. Но где посмотреть пример кода для стм?
>>347164 А что ещё может STM32 передавать nRF24I01+ , кроме команд и данных? Или тебе лень проверять ВЕСЬ ЭФИР, НА ВСЕХ АДРЕСАХ И КАНАЛАХ? А ведь там 5 байт на адрес, лол.
>>347268 Не игрался с 40x серией, но ради интереса попробую помочь. 1) Вроде бы светодиоды на той плате сидят начиная с 12. Т.е. ты должен написать: GPIOD->MODER |= GPIO_MODER_MODE12_0; 2) Для светодиода можешь не трогать GPIOD->OSPEEDR 3) GPIOD->PUPDR тоже, ибо там 0 должны быть 4) Ну и далее уже GPIOD->ODR = GPIO_ODR_ODR12; (вроде, так, но ты понял в общем). 5) Если светодиод не зажёгся, возможно, следует писать 0 для зажигания(Это зависит от того где он сидит - на минусе или плюсе).
>>347268 Для начала выкинул бы строчку GPIOD->OTYPER &= ~(GPIO_OTYPER_OT0); Заглянул в документацию (ни камня, ни название доски) что висит на выводе PD0 и чем зажигать светодиод (есть вариант что его надо нулем зажигать). Без схемы ловить нечего.
>>347274 >>347275 Доска на пике. Использую свой внешний LED, хочу его через пин зыжечь, так что должно с любого пина работать, или я ошибаюсь? Собираю из под линукса с помощью arm-none-eabi-gcc, флешу через st-link v2. Флешится всё без проблем (по крайней мере так говорит мне программер). Говорит ли это о том, что я правильно компилирую? Может я там флагов каких-нибудь левых понапихал или еще чего...
>>347293 Та плата, что на прошлом моём пике, оказалась чуть другой. Нашел схему своей. Можешь для PF9 хекс запилить, пожалуйста? Прошил своим - опять ноль эмоций.
>>347297 На 429 камне стартанул код. Здесь PG14 зажигается единицей. Пикрил горит красным и сеанс отладки за заднем фоне. Мне кажется как-то не так прошиваешь хекс или страницы памяти не чистишь. В самом дубовом варианте попробуй через uart прошить - кажется бут0=1 , бут1=0 и через какую-то утилиту от st можно по компорту заливать прошивку. Нужен преобразователь уровней, напрямую к компорту подключать нельзя. Нужен как минимум usb-uart ttl преобразователь.
>>347297 Есть один вариант на проверку.. "install: main.bin st-flash write main.bin 0x8000000" Обращаем внимание - тут бин файл указываем, а тебе кидался хекс. Использовал внешнюю программу чтобы из HEX получить BIN? Кажется в этом косяк. Так и гуглить hex2bin.exe - старая консольная программка и обратная ей bin2hex.
>>347303 > st-flash хексы тоже кушает "Flash binary files to arbitrary sections of memory, or read arbitrary addresses of memory out to a binary file." - четко же написано что двоичные файлы кушает, а шестнадцатеричные - не файлы, а размеры и смещения.
Из лога компиляции linking... Program Size: Code=496 RO-data=408 RW-data=0 ZI-data=1632 FromELF: creating hex file... На диске test.hex занимает 2600 байт, а не полкилобайта. Преобразуй HEX в BIN и еще раз попробуй.
>>347303 Еще мелочь - (как минимум в Keil) - после заливки прошивки (flash->download) ничего не происходит до тех пор, пока руками камень не перезагрузишь. Те или ресет на нем нажать или по питанию передернуть. Ребут после заливки делал?
Кста, раз уж тут про хэллоуворды спрашивают, я тоже спрошу. Есть ли разница в форме импульсов ШИМ при использовании таймера и простого ногодрыга? Реально ли на stm32f103c8t6 разогнаться на частоту, хотя бы 2-х мегагерц? В регистрах то максимальная скорость 50мгц проскакивает, но вот что она значит и не будут ли фронты завалены?
>>347318 > Есть ли разница в форме импульсов ШИМ при использовании таймера и простого ногодрыга? Что GPIO, что Timer используют одинаковый тип выхода - Push-Pull. Разницы нет. > не будут ли фронты завалены? Зависит от емкости того, что подключено к выводу. Чем больше емкость, тем больше будут завалены и искажены. Как вариант можно взять только один вывод - MCO, на который выводить системную тактовую частоту. Настроек нет, доступен только меандр и с жестко заданной частотой.
Лень гуглить@Спрошу анона STM32F407. На какие пины можно выставлять прерывания? Если на все, то как сконфигурировать прерывания? У меня все кроме PA0 не дают повесить на себя прерывания в кьюбе.
>>347367 По даташиту на (почти) любую ногу можно повесить. Единственное что есть аццкая подстава - нельзя получить более 16 внешних прерываний, тк прерывание от PA6 PB6 PC6.. Px6 - это условно одно и то же прерывание и слушается только один порт. Что бы получить все 16 прерываний - нужны разные выводы портов от 0 до 15, сам порт (A-H) не важен (те например PA9 PB4 PC0 PG5.. - уже 4 прерывания).
>>347370 Забей на кукареканья шизиков-HALовцев, CMSIS и подобных - тебе нужны регистры: SYSCFG_EXTICRх - задается какой порт слушается и какой вывод (всего 4 регистра, в каждом 4 линии - нужно указывать с какого порта слушать) EXTI_IMR - разрешить прерывания с линии (0-15) EXTI_RTSR - какие линии (0-15) должны вызывать прерывание по ВОСХОДЯЩЕМУ фронту (0->1) EXTI_FTSR - какие линии (0-15) должны вызывать прерывание по НИСХОДЯЩЕМУ фронту (1->0) EXTI_PR - записью 1 сбрасывать флаг сработки прерывания (из обработчика или из основного цикла, если просто смотришь - произошло прерывание или нет).
Регистрация/разрешения прерывания в NVIC NVIC_EnableIRQ(EXTI1_IRQHandler); - На первые 5 прерываний (0-4) индивидуальные обработки, далее сгруппированы по 5 штук EXTI9_5_IRQHandler и EXTI15_10_IRQHandler. Глобальное разрешение прерываний __enable_irq(); Настойки GPIO не трогать, они должны оставаться входами (подтяжка по желанию).
Нашёл в кубе как выставить прерывания на пины, тупанул изначально. Мне нужно записывать сигнал, в тот момент когда он изменяется на пинах. Попробовал пока послать на него I2C, но почему-то либо вешается ардуино, с которой посылаю, либо просто прерывания не срабатывают. >>347376 Вроде бы я и понял, что ты мне описал, а вроде бы и нет. Как понять какая линия к какому входу подведет и чем это отличается от 16 линий, про которые сказал >>347370-анон? Могу ли я назначить прерывания более чем на 16 пинов, и если могу, то при пересечении двух пинов с противоположными подтяжками/уровнями сигнала (лог. единица и ноль) на одной линии, что произойдёт?
>>347384 > записывать сигнал, в тот момент когда он изменяется на пинах Обоссанное крылатое школололо с пердуино треда? Настаивай сработку прерывания по обоим фронтам. Хоть и большая частота у STM, можно соснуть ( https://habr.com/post/161617/ ). Вопрос интересный, может поищу можно ли как-то через DMA ловить.
> Назначить прерывания более чем на 16 пинов Нет, тк регистры SYSCFG_EXTICRх не дадут - там только выбор порта (A-..H) для конкретной линии (0-15) прерывания. Невозможно назначить прерывание на одноциферные(? незнаю как сказать) выводы разных портов - те одновременно ловить прерывания по линиям например PD6 и PH6 или PA6 или PC6 - невозможно, будет слушаться только что-то одно. > при пересечении двух пинов с противоположными подтяжками/уровнями сигнала Читай выше - это невозможно. Прерывание будет приходить только с того порта, который указан в SYSCFG_EXTICRх, другой порт никак не будет влиять.
Задавай лучше односложные вопросы - на них проще отвечать. Если брать пердуину (в частности AVR микроконтроллеры) - на древних версиях было всего 2(3) прерывания по уровню (INT0 INT1 INT2(асинхронное)) - 2 жестко выделенных вывода с настраиваемыми фронтами и 2 обработчика прерывания. На версиях посвежее появилась фича - pin change interrupt - оно НЕ настраиваемое по фронтам, только задается на изменение (любое 1->0 0->1) и какие биты порта, на все 8 бит порта один обработчик. В STM есть 5 "выделенных" обработчиков прерываний (0-4) и 2 групповых по 5 выводов, оказавшись в которых нужно смотреть по какой линии произошло прерывание (в отличие от 0-4, которые однозначно говорят по какой линии было прерывание). Если прям хочется всю шину снифать - мне кажется нужно CPLD ставить на входе. Завести на нее шину, поставить конвейер из 2 D триггеров с компаратором, которым ловить изменения на входе и достаточно будет всего одного прерывания, которое будет оповещать об изменении любого бита на шине, а не 16 обработчиков прерываний на каждую линию. Если почти сразу 2 прерывания сработает - можешь соснуть, тк пока просрешся на первое есть шанс потерять данные из второго прерывания (см ссылку выше). это один и тот же анон
>>347306 Анонче, спасибо тебе за твоё вчерашнее время. Прошивал без стартап файла. Даже не знал, что он нужен был. Вот уж не думал, что буду когда-нибудь еще буду так радоваться загоревшемуся леду. Пошёл читать даташиты.
>>347389 >Обоссанное школололо с пердуино треда? Да. Ну ты заебал, я ж не школоло >Невозможно назначить прерывание на одноциферные выводы разных портов Ок >Если почти сразу 2 прерывания сработает - можешь соснуть, тк пока просрешся на первое есть шанс потерять данные из второго прерывания (см ссылку выше). Если на разных пинах сработает прерывание, оно же просто встанет в очередь, не? На частоте 165mHz, или сколько там пиковая, прочитать с нескольких пинов значение и записать время - должен вписаться во временные рамки. Если только не все 16 пинов изменят состояние единоразово, но такие состояния я не встречу
>Задавай лучше односложные вопросы - на них проще отвечать. Ок, логично.
Тогда простым вопросом уйду немножко в другую степь: Как настроить USB? Есть готовые примеры с BULK передачей? Те готовые примеры что есть, пока завести не смог.
> на разных пинах сработает прерывание, оно же просто встанет в очередь Да. На групповых прерываниях если не все скопом флаги сбросил - то по выходу из прерывания еще раз в него же попадешь и не надо в конце прерывания проверять не пришло ли еще одно прерывание. Если будет более 2 подряд прерывания на одной линии - очень велик шанс их просрать при медленной реакции, тк нет счетчика числа прерываний, увидишь что было только одно.
> Как настроить USB? Есть готовые примеры с BULK передачей? С USB говном не работал и ебись оно конем разбираться в этих помоях и реализаций под каждую ось. Сам то хоть нашел СДК или либы через которые собрался принимать помои с USB шины? Пикрил - немного погуглил и используя православный Ethernet сразу на 3 разных машинки лилось дерьмище броадкастом по UDP - Windows, FreeBSD, Linux - все приняли это. Дальше на том же питоне или сях import socket и вперед. По временнЫм меткам видно что срет примерно каждую миллисекунду (os.Delay(1)) как и задумывалось. Скорость сам прикинешь.
>>347493 >ебись оно конем разбираться в этих помоях и реализаций под каждую ось Libusb же, просто не разобрался как она работает и почему не могу с ней достучаться к STM. Пока читаю этот https://damogranlabs.com/2018/02/stm32-usb-cdc/ гайд
Либа LibUsb-1.0. На команду библиотеки libusb_open_device_with_vid_pid(ctx, USB_VENDOR_ID, USB_PRODUCT_ID);, STM с сгенерированным в кубе HID-кодом, отзывается как должна. STM с кодом же CDC-устройства сгенеренном там же, в кубе, с этим запросом не работает (возвращается Null). Так же, при этом, устройство определяется в системе как COM-6, но ни один терминал не с ним работает как говорится в примере из интернета, мы должны получать ответ в терминале, от сгенерированного кубом кода.
>>347510 Как мне кажется - всем по хуй. Троллинга ради попробовал создать проектик CDC. Ну и пиздец, осталась огромная куча вопросов по режиму отладки этого говна. Запустил отладку. При самом первом прогоне кода до строчки 121 ничего не происходит(????). После первого прохода 121 строчки появляется компорт. После появления компорта при попытке подключиться putty снова сосу - даже окно терминала не появляется пока еще раз не выполнится 121 строка (или криво тестил или в этот проход спам не шлется). После третьего и последующего выполнения 121 строки уже шлется спам в терминал. Определенно этот быдлокод поломал манямирок - U$B шина активна всегда, даже если ничего не передается летают какие-то пакеты опроса есть че? и при останове(?) выполнения кода соединение не рвется и компорт не пропадает. При выходе из отладки/перезагрузке компорт пропадает, но putty не говорит что компорт недоступен (как при выдергивании FTDI или PL2303 и подобных) и при повторном прогоне кода в терминале тишина, ничего не шлется, а если закрыть терминал и заново открыть - говорит иди на хуй, не могу открыть, хотя он виден в диспетчере устройств. Перезайдя в отладку - пропадет компорт и см начало поста. WTF?
>>347764 >Перезайдя в отладку - пропадет компорт и см начало поста. WTF? Потому что микроконтроллер перестает отвечать компу, а спецификация USB устанавливает определенное время на ответ.
>>339005 (OP) Гуры, расскажите как вы организуете расположение папок в проекте? Я уже заебался копировать примеры стм и корректировать их. Получается какая-то безумная ебала с папками библиотек и исходников. Как захуярить отдельно неизменяемое местоположение либ и прочих халов и облако/гит своего говнокода, чтобы его можно было быстро найти?
>>347916 Забыл дописать. Если нужна периферия, а готовой репы нет, то ты обязан сделать отдельный готовый репозиторий из ошметков интернета и запушить на гитхаб, таким образом ты сделаешь жизнь другим легче. Ну и кидаешь эту репу в сабмодули. Реюзабельность +, карма +++
>>348495 Насколько хватило моих знаний ангельского и мощности гуглопереводчика, понял, что для работы RTC от Vbat необходимо тактирование часов от LSE. В демонстрационной программульке от ST, дохуя завязано на тактирование от LSI и желания разбираться в дебрях их кода у меня нет. Сейчас засяду писать сам свои часы и попробую еще раз.
А вот эти вот примеры, типа TouchGFX_Demo, студии пишут или йоба-программисты одиночки? Этож охуеть можно сколько кода надо написать. Он только канпилируется 7 минут.
>>348566 Дохуя всего параллельно, и мне немножко лень. Пока пилю I2C повторитель. К стати, анонче, подскажите нормальный пример I2C-Slave на LL, а то я ничего найти не могу даже те примеры которые я нашёл на хале, какие-то укуренные и не прозрачные.
Но если совсем не лень, то не откажусь от след. инфы: 1. От чего (от каких действий на I2C шине) срабатывает I2C1_EV_IRQHandler? 1.1 Возможно ли где-то прочесть, какой адрес всплыл на шине? Просто флаг ADDR в I2C_SR1 настораживает. 2. Как определить/обнаружить STOP и START на линии? ACK/NACK? 3. Как отправить NACK/ACK на мастера/слейва в передаче/приеме? 3. Как прижать SCL к нулю? Я понимаю, что ручной доступ есть не ко всем перечисленным вещам если мы говорим об аппаратном I2C, но мне пока не найти даже нормальный пример слейва на LL, так что сам не раскопаю даже то, к чему доступ получить явно можно. P.S: про STOPF в I2C_SR2 знаю, но без понимания всего процесса и того, как что срабатывает (особенно эвенты), я делать выводов не берусь
Даже нет, не так, подправлю: В принципе то понятно, когда срабатывает эвент сейчас с позиции слейва: как настроишь - на приходе адреса, при заполнении буффера, при срабатывании BTF, при получении стопа. Только не ясно, как понять, что на линии был старт. Или оно тогда и не надо, даже если это повторный старт? Просто в таком случае получим задержку в ~2 пакета. Хотелось бы конечно минимизировать, но если что - не смертельно. А NACK/ACK я хочу ставить сам, тогда когда мне удобно.
>>349270 Да вы батенька походу Reference Manual не открывали, или увидев овер 1К страниц открестился, закрыл и забыл как страшный сон. Что у тебя за побрякушка как платка называется и что за камень (полное название)? Мыльница говно. Открываю древний мануал Да, он бумажный, 4 страницы на листе. Как минимум его можно читать в сортире, делать пометки и пиздить им тех, до кого с первого раза не доходит. > 1. От чего (от каких действий на I2C шине) срабатывает I2C1_EV_IRQHandler? На странице 843 есть замечательная табличка, где видно как двумя битами включить и прерывания и события от блока I2C. Только вот незадача - два бита действуют глобально, те нельзя выбрать например автобус сломался и ошибка подтверждения. Очень внимательно почитай раздел Inter-Integrated circuit interface - он короткий. На первый взгляд только 2 адреса слейва себе можешь назначить. Остальное - через особо жесткие костыли. Возможно SPI+EXTI поможет ловить произвольные адреса. Что меня напрягает в IIC - нет таймаутов и можно основательно повесить шину, которая отвисает только после ребута по питанию или руками давать STOP, но это не всегда корректно, так как некоторые слейвы очень привередливы и STOP например после 5 тактовых импульсов игнорируют.
>>349288 У меня реф мануал немного отличается (RM0090 Rev 17), но суть та же. На эти страницы (IIC Functional Description) не обратил внимания, сейчас почитаю. Железка STM32f407. >Что меня напрягает в IIC - нет таймаутов и можно основательно повесить шину, которая отвисает только после ребута Так то в том же референсе есть намёки на то что можно и без этого перезапустить шину. Как минимум я видел что настраиваются какие-то тайм-ауты, есть определение подвешенной линии и контроль недопустимых состояний на шине. А сбросить шину ты можешь и программно, но это не точно
>>349270 Масштаб троллинга неуклонно растет и достиг опасных показателей. Собрал из подручного хлама - F429 под эмулятор, мега328 - для первоначальной отладки шины, онанокомп с линуксой под тестилку ебать она медленная, особенно i2cdump - на каждый байт оно дает команду записи адреса и потом команду чтения, но похуй - нашел говнокод на си - он чуть быстрее работает , логический анализатор, пара микросхем памяти и... CPLD на 64 макроячейки - может получится из нее сделать костыль I2C->SPI. На STM32F4 SPI умеет или 8 или 16 бит. Интересно, это все говно взлетит?
>>349363 Через жопу читал и мануал и пост повыше. В классической IIC нет таймаутов вообще. Таймауты в SMBUS (в компе можно найти). Повисший контроллер IIC можно попытаться "перезагрузить" через отключение и включение, но выше писалось про СЛЕЙВА, который считает такты и только спустя 9 тактов поймет команду СТОП и отпустит шину и игнорирует сигнал СТОП в другие моменты времени. Где-то видел описание подобных случаев.
>>349470 Посмотри проект если не сложо. Сгенерировал в кьюбе инициализацию, при установке адреса слейва1 зависает SCL на земле (пикрил). Если вернуть адрес в ноль, то всё нормально. Сравниваю с примером из интернета , вроде последовательность инициализации похожа, в функцию тоже всё приходит норм. Это на f103. https://yadi.sk/d/CDEei4OVxVj1DQ
>>349475 Кое как подогнал смехоту. 5 макроячеек из 64. Здесь за одно хорошо видно как тупит железка на линуксе и мне похуй. Это же proof of concept. Как у меня ебануло.. Черную магию что ли еще раз почитать? CPLD настолько нежная, быстрая и суровая, что ловит отраженку с конца никуда не подключенного примерно 40 см шланга и считает ее за реальные импульсы/фронты. Временно отключил - уже нет аномалий. Если правильно понял вывод - оно легко прожует и не подавится от IIC с тактовой 50 МГц. Смотреть на 7 и 5 анал, их "сумма"- 6 анал. Если включить мозги - догадаешься что это за костыль сбоку.
>>349485 Точного камня не знаю, но серия F1 оставила тяжелые воспоминания.. Сам поищешь подобное, тем более что или здесь или в пердуино треде говорилось что F103 и IIC - крайне хреновая затея из-за аппаратных глюков. Поэтому ебитесь как хотите со своей F103.
>>349475 Пока что переехал на циклон для обкатки. С учетом реального риалтайма есть бага, которую не пофиксить - возможна ошибка кадрирования не проверял еще. Поломали rarjpeg или нет?. Анал 5+6 - входные данные, анал 0+1 - "подогнанные" под формат SPI, которым в теории могу перехватывать с линии все, полностью игнорируя - мой не мой адрес. Это аццки тупая штука, которая дает ответы на вопросы > Как определить/обнаружить STOP и START на линии? Смотри фронты 2 и 3 анала. > ACK/NACK? В 8 бит не впишешь и по идее на хуй не надо, но выводится в отдельную линию - 4 анал.
Это не к месту в данной железке-коверкалке I2C в SPI >Как отправить NACK/ACK на мастера/слейва в передаче/приеме? I2C_CR1 Bit 10ACK: Acknowledge enable This bit is set and cleared by software and cleared by hardware when PE=0. 0: No acknowledge returned 1: Acknowledge returned after a byte is received (matched address or data)
> 3. Как прижать SCL к нулю? Руками, сделав перенастойку порта с периферии AFxx на режим GPIO и выдать 1, прижав линию к земле. Или снова заглянуть в I2C_CR1 Bit 7 NOSTRETCH: Clock stretching disable (Slave mode) This bit is used to disable clock stretching in slave mode when ADDR or BTF flag is set, until it is reset by software. 0: Clock stretching enabled 1: Clock stretching disabled
Пагни, кто-нибудь заводил этот(1.8 TFT ST7735S SPI 160x128) дисплейчик на stm32? Сначала заработал, подключил на следующий день, а у него только подсветка загорается и всё. Как понять что не так. Провода прозванивал тестером, все в порядке.
>>349475 Как оно меня заебало.. Какая-то странная фигня в виде глитчей, пропусков и прочей радости было когда подцеплен анализатором к одной из линий (scl или sda). Сделав из CPLD буфер-повторитель - как-то получше стало, минимум полдня просрал на шараду - одна и та же схема на FPGA работает, на CPLD - нет, зависимость от фазы луны не обнаружена, осциллографом с ходу ничего не нашел - поймать иголку(?) среди потока говна. Жуткая асинхронщина в CPLD, выдает глитчи (под конец виден). Пока нет идей где или из чего синхру взять. Анал 0+1 - исходные данные, анал 2+3 - закос под SPI, служебные сигналы (местами дублирующиеся) - аналы 4-6. Можно начинать дрючить STM32F429.
Анончики, поясните за I2C в STM32F10x. Что там за глюки страшные на практике? Смогу я к нему подключить часики? Там же вроде можно программно i2c, так?
>>349701 Ты отключал его перед тем, как он перестал работать? Пины точно не перепутал потом? Я как-то ебался с JLX жк экраном 20 минут, выясняя, почему он сегодня ничего не показывает, а потом наконец заметил перепутанные SDA и SCK. Прототипы на ардуинах - они такие.
>>349756 Мне удалось его запустить и потом не разбирая отложил всё в сторону. На следующий день он уже не запустился. С этих дисплейчиков можно считать какие-нибудь данные, чтобы понять что там с ним внутри происходит?
Где школота? Уроки учит? Или референс мануал раскуривает? Как у него успехи? Такой вот тупой быдлокод, пропитанный насквозь индусами и их стилем программирования подает признаки жизни. Здесь нет никакого буфера захваченного спама, как захвачен байт через SPI- сразу шлем через VCP. То что что-то теряется - поебать. Оно уже подает признаки жизни, дальше тюнинг всего этого. 0x15 (0x2A) - это и есть сам слейв на STM42F429, который косит под память 24_02 (256 байт). Походу ACK некорректно захватывается - идет задержка на цикл обмена. Делать сдвиг на 1 такт? Может и получится, надо только мозги для укрощения CPLD.
>>349864 http://we.easyelectronics.ru/khomin/i2c-programmnyy-stm32.html Если кратко - сам в соответствии с протоколом выключаешь-выключаешь выходной транзистор (включая - получаешь 0 на линии, отключая - получаешь 1 на линии). Например для условия СТАРТ SCL должен быть отключен (те 1 на линии) и включить выходной транзистор на линии SDA - притянется к 0. Если же отпустишь SDA - будет СТОП. Потом включаешь выходной транзистор на линии SCL - она притягивается к 0. Все, сигнал СТАРТ выдан и шина условно захвачена. Выход типа Push-Pull нельзя использовать, только OpenDrain.
>>349850 Реальные кулстори только в гугле и тематических форумах типа electronix.ru . Школота - это ты, тк в еррате написано - может ёбнуть в любой момент. Может сразу, может через час, может через пару калобайт, может вообще не проявиться. Баг описан, известен и подтвержден производителем, пробуй. Никто не запрещает, но предупреждают что возможен BSDM. Сам запилишь кулстори как перекопипастил программный IIC. Впервые с ним столкнулся на F103ZC и DS2482-100
>>349667 Братишка, ты отвечаешь на вопросы, но не на те, что я задаю. Я спрашивал как это всё делать на встроенном I2C. Ответ на определение стоп старта прост - запрограммировать логику. А на ACK/NAK так же в ручную не ответить. Ты мне ответил как это делать с твоими девайсами. Я спрашивал как прижимать SCL к нулю, в контексте действующего ресива/трансмита, ты мне ответил как вообще в принципе прижать. Ну ты понял. Про флаги в CR я в курсе, но там не очевидно как этим пользоваться. Нужен пример из кьюба например, но охуительные ребята из STM не могут добавить примеры, которые конвертировались бы в их собственную IDE
>>350047 Сейчас особо некогда пилить железку или быдлокодить - хотя на первый взгляд там мелочь осталась - кольцевой буфер вклеить. Fail. Пришла платка и могу 407 попробовать запустить и на работе иногда работать надо. Задам вопрос проще - нарисуй сигналы на шине и явно отметь моменты когда хочешь делать гадости. Рисовать максимально подробно, что бы были видны каждый такт шины и фронты + свои камменты - какую гадость хочешь сделать в данный отмеченный момент. Если собрался делать гадости прямо посреди передачи байта - без адовых костылей ничего не выйден.
>>350050 Я хотел решать, когда мне отвечать на ак/нак мастеру, беря это знание у слейва. Полагаю, это считается прямо посреди передачи байта. Жеппа. Самое тупое, что не могу до сих пор завести аппаратный I2C в Slave-режиме вообще. Ни на готовых Cube-примерах только что сообразил как их запустить в трустудио, ни просто написав код. Всё равно получается какая-то срака.
>>350056 Илья, залогинься. > Я спрашивал как это всё делать на встроенном I2C. > Ответ на определение стоп старта прост - запрограммировать логику. Нет. Нет. Нет. Просто START и STOP на линии блоком IIC не поймаешь. Бит START устанавливается только если твой блок IIC, настроенный в режиме слейва (увидел старт) И (увидел свой адрес на шине), после чего битом ACK или говоришь что я тут или шлешь NACK мастера. Аналогично со СТОПом - только если твой слейв понял что с ним общение УЖЕ ведется, тогда он распознает сигнал СТОП на шине и установит бит STOPF и ТЕБЕ надо будет подтвердить стоп. Аналогично с растяжкой/остановкой обмена на тупняк - он и так есть "stretches SCL low" если сильно не менял настойки - пока тупишь, твой аппаратный блок IIC держит SCL в нуле, говоря - помедленней, я записываю, думаю и туплю. Очень внимательно посмотри на картинки на 846-847 странице.
> А на ACK/NAK так же в ручную не ответить. Жопой читаешь.. или не понимаю вопроса. Бит ACK.
> Ты мне ответил как это делать с твоими девайсами. Снова жопой читал - они только ДЛЯ ЗАХВАТА. На обмен они не влияют, а то что в посте >>349831 виден в самом верху ответ 0x15 (0x2A) - это отвечает слейв на встроенном в STM32F429 IIC из блока I2C3 - видна независимая и одновременная работа захвата и слейва на одной железке. По поводу внешних костылей - покажи как захватывать данные с IIC шины, ИГНОРИРУЯ адрес назначения? Можешь обоссать и сказать заведу в SPI - допустим. Только вот у тебя 9-ти битовые посылки, а SPI умеет 8 или 16 бит. Ну принял 8 бит, а дальше? Ушел в прерывание чтобы сбросить настойки модуля SPI и перезагрузить его для стирания огрызка из 1-го бита ? Ну изъебнулся, сделал. Как условия Старт-Стоп на шине ловить ? Прерывание на SDA вешать и при передаче 0x55 или 0xAA каждые 2(1) такта шины уходить в прерывания?
> Я спрашивал как прижимать SCL к нулю, в контексте действующего ресива/трансмита, ты мне ответил как вообще в принципе прижать. Еще раз - бит ACK.
> Я хотел решать, когда мне отвечать на ак/нак мастеру, беря это знание у слейва. Еще раз - бит ACK.
> Полагаю, это считается прямо посреди передачи байта. Жеппа. Да, тк никто среди передачи байта такую хуйню не делает. Пробовал думать - можно таймером считать такты и после нужного такта через DMA записать в BSSR (не проверял) 1 чтобы прижать SCL к нулю, остановив обмен. Еще раз - ты ебанулся посреди (именно посреди, а не после) передачи байта обмен останавливать ? Прямая дорога повесить шину, введя в ступор настоящих аппаратных слейвов.
> Самое тупое, что не могу до сих пор завести аппаратный I2C в Slave-режиме вообще. Тоже немного думал гадал что не так, ни ответа, ни привета. Перебор шин, настоек - мимо. Потом понял что туплю и... Ответ прост и повыше.
Такое ощущение что от возможностей отладчика шараешься как от огня и понятия не имеешь как его запускать и пошагово выполнять программу. Можешь обдристать, с openocd не работал, только шкодинг и дебаггинг через Keil.
Прости меня грешного Может это попробуешь попилить https://habr.com/post/357918/ ? Как всегда все упрется в скорость, ты же не говоришь чем управляешь. Может ядерным реактором/андронный коллайдером где критичны задержки или время с часов читаешь. Может у тебя там бегущая строка и по хуй что буквы с интервалом в пару раз дольше будут обновляться. Но и тут проблемка - будешь видеть трафик только до себя, пролетающий мимо спам не виден, а это условие есть в ТЗ...
Посоны, вкатился недавновчера, СИ не знаю, инглиш не знаючитай долбоеб. Есть плата Nucleo на STM32F303RET6, пытаюсь пердануть символом в UART без использования кубов и библиотек периферии. Нахуячил простыню говнокода, само-собой, через отладчик работает, отдельно железка нет. Если выполнять программу пошагово, то данные в регистр TDR записываются, вроде как положено, но когда включаю плату и смотрю на выводах RX/TX saleae logic'ом, там нихуя нет. Сам говнокод, гляньте где обосралсяпо жизни: https://pastebin.com/fZS79ui5
>>350210 >NVIC_EnableIRQ(USART2_IRQn); // Пока прерывания не использую, но пусть будет А в дефолтном обработчике прерывания бесконечный цикл. Придет на вход байт - все повиснет. >SystemInit(); Эта функция вообще-то вызывается из startup-а, перед main-ом. >void delay (uint32_t time){ >uint32_t i; И эта задержка без volatile может сломаться в любой момент, особенно при включении оптимизации.
Ничего конкретно подсказать не могу, т.к. STM-ами не занимаюсь. Но ты попробуй вместо "зажечь светодиод просто так" не зажигать, а инвертировать, чтобы мигал, тогда будет видно зависло оно или нет.
>>350212 Поправил цикл. while(1) { GPIOA->ODR = GPIO_ODR_5; delay(300000); if ((GPIOC->IDR & GPIO_IDR_13) == 0) { delay(1000);//задержка в 1000 чего-то там USART2_Send ('1');//отправить символ } } Светодиод мигает. Ради эксперимента отправил на плату единицу через терминал, не зависла, продолжала мигать. Говорит ли это о том, что уарт вообще не запустился? Может я проебался где с настройкой. Но, NVIC_EnableIRQ все же закомментировал, на всякий случай. Почему же тогда в отладке, регистр TDR все же принимал значение?
>>350210 Этот антон >>350212 прав > >NVIC_EnableIRQ(USART2_IRQn); // Пока прерывания не использую, но пусть будет > А в дефолтном обработчике прерывания бесконечный цикл. Придет на вход байт - все повиснет. Дописал бы для вида затычку void USART2_IRQHandler(void) {unsigned short tmp; tmp = USART2->RDR;}; Это первый косяк - закомменти прерывание пока не раскуришь референс -> USART2->CR1 |= USART_CR1_RXNEIE; Второй косяк - при BRR 0xEA6 скорость 2135 бод, при 0x3A8 - 8556 бод (по анализатору). Третий косяк - "Подтяжка 13 ножки PС к Vcc" и "if ((GPIOC->IDR & GPIO_IDR_13) == 0)" - без подачи 0 или земли на PC13 не войдешь в цикл. Проверял на STM32F3-Discovery (STM32F303VC)
>>350214 Поздравляю, у тебя походу хуита творится. Или быдлокод, или плата не але или еще что(сторожевого пса завел?).. Светодиод мигать НЕ БУДЕТ.. ты постоянно пишешь одно и то же значение в порт. Как он зажегся, так и будет гореть. Возможно вакаба съела символ исключающего ИЛИ - "^" - если он есть в этой строке "GPIOA->ODR = GPIO_ODR_5;" перед знаком присвоения, тогда да, будет мигать. у меня с частотой 3.33 Гц по анализатору.
>>350215 >закомменти прерывание пока не раскуришь референс Закомментил, хотя мк не зависал, когда я отправлял ему что-либо, складывается впечатление, что уарт не поднялся, не отправляет, не принимает. Все глухо.>>350215 >при BRR 0xEA6 скорость 2135 бод Я считал по: USART_BRR = (fck + baudrate /2 ) / baudrate, где fck - частота шины APB1. В эту формулу я подставил 36мгц - максимальную частоту шины. Какая частота там в реальности, я не знаю, поскольку мк работает от внутренней цепочки, с дефолтными делителями. Думал заняться настройками, когда распаяю внешний кварц. Может тут и проеб.>>350215 >без подачи 0 или земли на PC13 не войдешь в цикл На Nucleo пользовательская кнопка включена по схеме. >>350216 >(сторожевого пса завел?).. Он нужен мне на данном этапе? Если да, то объясни, интересно. >Возможно вакаба съела символ исключающего ИЛИ Yep.
Анончики, какие подводные в разводке ЮСБ на плате для stm32f103? Нужно ли располагать контроллер как можно ближе к разъему, могут ли соседние компоненты давать наводки на подводящие дорожки д+ и д- и т.п.? Где можно почитать об этом? Гуглятся только статьи о работе с уже готовыми платами.
>>350221 > хотя мк не зависал, когда я отправлял ему что-либо, складывается впечатление, что уарт не поднялся, не отправляет, не принимает. Давай с начала. Через что подключил UART к компу? К выводам 2,3,5 компорта? Через USB-UART преобразователь? Как соединял выводы ? RX-RX TX-TX или RX-TX TX-RX? Землю не забыл? У ЮАРТа нет подтверждения доставки или получения. > Я считал по: Если 9600 поделить на 2135, то получишь 4.5, и поделив 36 на 4.5 получаем.. получаем.. 8МГц.. Прямо частота HSI. Вот это поворот. Намек понял? Попробуй BRR около 0x341 - должно быть около 9600 бод.
>>350244 >Через что подключил UART к компу? FT232RL, TX-RX RX-TX, земли объединялхотя и мк и USB-UART подключены к одному источнику. Смотрел через Saleae, мк на уарт ничего не выдает. BRR пересчитывал на 8мгц, да, там 0х341. Сейчас на pastebin код с крайними правками. Не работает.
>>350247 Может в инструкцию(схему) заглянешь ? Через какую задницу подключился к PA2 и PA3? На пердуиновские выводы они НЕ подключены, а идут на отладчик. Тебе повезло если выводы не попалил, что очень реально. Сам переведешь текст на скинах из документации? Код то у тебя рабочий, а вот в схеме куча ошибок.
>>350261 Блять, кто бы мог подумать?! Действительно, на ст-линк вывели, а я к ST morpho подключал. Забавно, в бумажном буклетике, что с платой шел, об этом ничего не сказано. Работает. Спасибо за помощь всем кто отвечал. Как опять проблемы появятся, я сюда вернусь. Короче, всем спасибо, всем по пирожку!
>>350304 На первый взгляд - просто забить хуй. Даже в серийных железках народ не боится пускать "SerDes interface includes a 1.25 Gbaud data signal with a 625 MHz clock." через обычные штыри на 2.54мм и 2.0мм. Если не сильно забивать - посмотреть хотя бы начало правой книги - волновое сопротивление и как оно зависит от ширины проводника, высоты подъема, расстояния между ними. Подобрать соотношения для импеданса 90 ом и спокойно спать.
>>350317 Спасибо, анон. Я и вижу, что все вроде не заморачиваются с разводкой юсб, но несколько раз сталкивался, что некоторые устройства не работают с кабелями, с которыми больше ни у чего нет проблем.
>>350056 Школотрон, ты где? Запилил слейва? Впилил кольцевой буфер. CDC давится потоком говна, пропуская 2 или 3 байта. Впилил адовый костыль-задержку, что не очень то хорошо, но выдает все говно без зажевывания байтов. По идее все. Концептуальная модель на 100 КГц завелась и подает признаки жизни. Нет, не все - можно прикола ради запилить правку памяти слейва через компорт. Пикрил 1 (dump0) - слева виртуальный компорт, справа склейка из 3 окон терминала. Как видишь - захват работает и ему поебать к кому обращение идет. Пишет всех, все и вся, проебывая бит ACK (не занимался этим, поэтому "+" от фонаря стоит). Реальные слейвы IIC - 0x50, 0x57,0x41. Слейв на STM32F4 - 0x15, который косит под память 24__02 (256 байт), которая после старта забита нулями и командами i2cset заполняется вполне осмысленным текстом и читается обратно. Пикрил 2 (dump1) - как выглядит внутри собранный дамп с шины (с багом и с отключенной отправкой в компорт здесь и на dump2) - 0100 - старт, С0хх - Адрес, 0300 - стоп. Пикрил 3 (dump2) - первые 4 шорта - это команда записи в EEPROM по адресу 0х50 байта 0х50, оставшиеся - захваченный обмен с шины при чтении содержимого настоящего слейва (памяти) с адресом 0x50 блоками по 32 байта (особенность i2cdump c режимом "i" - i2c block data). Тут дольше всего идет преобразование байтов + отправка по виртуальному порту. Захваченный поток говна можно и на самом STM пофильтровать между 0100 и 0300 (старт и стоп на шине) и слать только нужное для большего риалтайма или готовить больший буфер отправки и не по одному байту слать, а по несколько или вообще все что было между состояниями 0100 и 0200 (старт-повторный старт) и 0200(0100) - 0300 (повторный старт(старт)-стоп).
>>347463 Прошло 9 дней тишины. Школьник или познал дзен шкодинга или клал большой болт на затею-реализацию или его душа таки улетела на небеса... R.I.P. школота. Скучно без траллинга. USB CDC как оказалось не совсем отборное, костыльное и вонючее дерьмецо или говнокод из кубика все хорошо скрывает.
Нужно разработать USB устройство класса CDC на STM32 с помощью библиотеки SPL в среде Keil. Не могу найти примеры в инете, может у кого есть инфа по этой теме?
>>351786 Возьми готовый пример с сайта ST. Если примера нет, то возьми код от какой-нибудь радиолюбительской поделки. Все, тут делать нечего. >с помощью библиотеки SPL Такая формулировка не запрещает дополнительно пользоваться еще какими-нибудь библиотеками. Можно взять весь код на LL или HAL и сбоку приделать что-нибудь на SPL.
>в среде Keil Надеюсь ты понимаешь, что все компиляторы следуют стандарту и практически нет разницы каким компилятором пользоваться?
>>351786 Вот погуглил немного за тебя. https://www.st.com/en/embedded-software/stsw-stm32046.htmlКогда-то сам на этом в институте делал, еще никаких кубов тогда не было. Достаточно было в гугле задать период с 2000 по 2010 год, сайт st.com и тогда по "usb library" оно находится в первой строке. Там же готовый кейловский проект, тебе вообще ничего делать не нужно было.
>>351786 Ленивый пидорас ты, а не студень. Мне преподы ни разу не отказали, если я приходил и говорил, что технология списана, давайте я возьму более новое решение.
>>351804 Будто есть разница на чем учиться. Все равно, если он пойдет работать по специальности (что сомнительно), то не факт что будет касаться микроконтроллеров вообще. А даже если и будет, то не факт что STM32. И если я правильно помню, то библиотека >>351793 не использует SPL, там только CMSIS. SPL там в примерах только для настройки портов, тактирования и прочего. В SPL, если я правильно помню, нет ничего связанного с USB.
>>349488 Я вот, кстати, уже не в первый раз встречаю нарекания на серию f1 и рассказы о том, что её особо не поддерживают. Какую серию тогда взять взамен, чтобы близко по фичам и производительности?
>>352114 Кто бы его знал. При взгляде со стороны F2=F4, особняком F373 - для любителей анальных утех с 16 битными сигма-дельта АЦП. Когда-то работал в связи реально днище - знать надо дохуя, получаешь нихуя и были попытки воссоздать клон Netagent CP504B (верхняя левая). У "конкурентов" (нижняя центральная) SNR ERD 3.2 - atmega644+enc28j60, более новая версия на stm32f407 https://nag.ru/user/notes/25598/kak-rojdayutsya-erd-pro-mini-fotki-.html . У нас же (только для внутренних нужд) - железки на stm32f107 (центральная вверху) и на Wiznet W7500P (это и cortex-m0 и phy в одной микросхемке). Умерло после первых тестов и ухода из той помойки. Тупо шарясь по алиэкспрессу в происках плат с 2хCAN и 2xRS485 - нашлись только на stm32f407. Так вот и делался выбор - на чем can (до)изучать + в даташитах есть пара страничек про совместимость между сериями (как минимум F1-F2-F4) - где и что предусмотреть на плате для установки конкретной серии. Если надоели баги одной серии, можно заменить на другую. Если не работаешь с аналогом и точными измерениями - бери любой, хоть F2, хоть F4.
Я правильно понимаю, что отладка в TrueStudio должна работать через этот свисток? У меня почему-то студия его видет, даже предложила обновить прошивку, заливает мой говнокод в микроконтроллер, но не работает пошаговая отладка. Так и должно быть с этим китайским клоном или я что-то не так делаю.
>>352268 > Дело скорее всего в прокладке между клавиатурой и монитором. И какое может быть дело? Установил куб, TrueStudio, stm32 utility. Дровишки встали при установке студии. При первом подключении студия обновила прошивку свистка. stm32 utility также видит свисток.
stm32ldiscovery в которую встроен стлинк работает корректно.
>>352271 Если обновился, значит китайским остался только bootloader. Сомневаюсь что bootloader может оказывать такой эффект, хотя все возможно. Схема тем более не будет так влиять, она по идее везде практически одинаковая, за исключением разъемов и согласования уровней.
Суп радиач, решил тут вкатиться в STM, будучи гуманитарием (да-да я вообще охуел). Собственно взял Nucleo 303, пошел курить погромирование этого чуда. И тут я прихуел, везде всё равное, кто-то под HAL, кто под SPL, кто с регистрами напрямую работает. В ру-сегменте адекватных уроков/учебников нет. Наткнулся тут на MBED, довольно интересно в плане, что не надо читать мануалы на 2к страниц чтобы помигать светодиодом (привет ардуине). Суть вопроса - есть какие-то ресурсы русскоязычные по MBED? По STM вообще ресурсов негусто, видимо специфика что МК скорее проф. уровня накладывает свое говно на вентилятор и никто не хочет делиться опытом разработок (которые скорее всего продают, в отличие от ардуиновских).
>>352782 Задрачивай HAL и не обращай внимания на кукаретиков требующих вникания в букву даташита и кодинга регистров. Потом, когда отдуплишь, что к чему, переходи уже на LL
>>352794 Вся фигня в том, что надо же сгенерить еще, а чтобы генерить надо все эти регистры, тактирование и прочее знать еще лучше чем в случае с ручным написанием.
>>352791 Да, буду кукарекать - Reference Manual наше все. Те же сраные параметры функций настойки где брать будешь? Взять тот же кусок инициализации RCC RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 4; RCC_OscInitStruct.PLL.PLLN = 120; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 5; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) или I2C hi2c3.Instance = I2C3; hi2c3.Init.ClockSpeed = 100000; hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c3.Init.OwnAddress1 = 132; hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c3.Init.OwnAddress2 = 0; hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; Что за поеботина написана справа после знака равно? Где список всех значений смотреть? Список сочетаемых и непротиворечивых значений? Или то же ссаное GPIO GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); Здесь только с ходу видно что только 13 и 14 вывод настраивается. Остальное- неведомая хуита, которая смотрится с расшифровкой в том же RM. Думаешь совсем ньюфаг поймет что тут написано? С простой периферией - ничего не знаю, CMSIS наше все, для USB и Ethernet - не выебывался, использовал то говно, которое дают в кубике. Reference Manual однозначно надо читать. Просто тупо несколько раз прочитать раздел не особо вникая, хоть что-то да запомнишь что видел что-то похожее в описании регистров, а не гадать что это за поебень тут написана. Школотрон - можешь подглядеть настойки IIC.
>>352796 Частично согласен. Знать периферию надо ВСЕГДА, а это чтение RM чуть чаще, чем постоянно. Когда знаешь как все работаешь - тебе без разницы на чем писать - что HAL, что SPL, что CMSIS. На CMSIS может даже проще будет делать прямые обращения, чем искать тормозные библиотечные функции с кучей проверок, а всякая логика типа for; while; if живет сама по себе. GPIOC->BSRR = GPIO_BRR_BR3; вывести в линию PC3 лог1 GPIOC->BSRR = GPIO_BSRR_BR8; вывести в линию PC8 лог0 Неужели это какие-то страшные заклинания?
>>352796 > Вся фигня в том, что надо же завести двигатель еще, а чтобы автозапуском пользоваться надо все эти степени сжатия, цикл Карно, механику движения поршней и прочее знать еще лучше чем в случае с ручным поворотом ключа.
>>352800 За меня это говно пишет куб, и меняет он же. Прежде чем пиздеть, покажи свой код чтения-записи файлов с длинными именами в FAT на цмсис, папаша. Поговорим за хал после этого.
>>352803 Лол, порвался. CMSIS - это управление периферией, а не логикой, которой является твой высер про FAT. Максимум что увидишь - это чтение/запись блоков на flash/sd карту, сама же логика работы FAT - независима и можно хоть на 8051 запустить.
>>352801 Неуместное сравнение. Это ты скорее для ардуинки описал. Тут ближе будет завести двигатель на самолете типа боинга 737 То есть проверить состояние аккумов, включить питание, подключить шину переменного тока, запустить топливные насосы (не один а дохуя, каждый отдельный тумблер), ВСУ, генератор ВСУ, воздухоподачу, etc...
>>352808 Так-то никто не говорил, что использование хал освобождает от чтения рефмана, и особенно от доки о самом хале. Кубик просто генератор, но этот генератор сильно облегчает процесс создания инициализации. Я когда начинал, буквально за пару часов разобрался с кубом по ютубам, и впоследствии стал им пользоваться.
Все эти типы которые топят за цмсис в массе своей дальше мигания диодом не ушли, зато цмсисом помигали, ага. Без USB, Ethernet и SD-карты домашние проекты, за редким исключением - мертворождённое говно, и то с чем цмсис-пердолик будет ебаться неделями, на хале пишется за несколько дней. Однако строитель сарая будет смеяться над башенным краном, типа смотрите какие лохи, молотка не держали, ровно до тех пор, пока он строит сараи, потом же
>>352791 >для USB и Ethernet - не выебывался, использовал то говно, которое дают в кубике.
Вот и весь его боевой задор. Любители цмсис - лицемерные пидоры.
>>352817 >Ethernet Делал без всяких халов, только не на STM32. Ничего такого сложного в этом нет. >SD-карты Когда-то делал на ассемблере чтение и запись секторов. Не для практических целей конечно, а для тренировки и изучения. Тот анон все правильно пишет >>352804 Там по части взаимодействия с периферией микроконтроллера достаточно сделать только инициализацию, чтение и запись секторов карты, все остальное есть в FatFs и прочих. Это всего лишь несколько команд, ничего сложного.
Способ настройки периферии вообще не столь существенен, это ведь обычно совсем небольшая часть программы получается.
>>352839 Именно. Претензии к хал начинаются когда открывается файл сгенерированный кубом, хотя хал и куб никак не связаны. В библиотечных файлах функции названы корректно, что называется самодокументируемо, сопровождены описанием и принимаемыми/возвращаемыми значениями, что куда лучше записей цмсис. Никто не запрещает для повышения быстродействия использовать в критических секциях цмсис или ассемблер, это необходимо для серийных устройств, но видимо цмсис юзеру кажется что это элитный клуб.
Tl;dr новичку и доморощенному эмбеду куб, хал и лл подойдут больше чем цмсис, профессионал в советах не нуждается.
>>352848 >лл Ты точно видел LL? LL это набор функций, в основном только распихивающих поля из структур по регистрам в нужном порядке. Для использования LL или SPL нужно знать назначения битов в регистрах, точно так же, как для использования CMSIS. Преимущество LL только в том, что снижается вероятность ошибки. Поэтому противопоставлять LL и CMSIS это как-то очень странно. Просто невозможно научиться использовать LL и при этом не научиться использовать CMSIS.
Более того, если использовать LL без HAL, то для управления SysTick, NVIC и MPU, по любому придется использовать функции из CMSIS.
>>352864 Видел, даже i2c -> uart на 103 поднимал, в связке LL + RTOS, генерация полностью кубом, иде - трустудио. Цмсис проект был такой же, только без ртос и в вижуалгдб. Хал однозначно понравился больше, но для оптимизации программ и направления развития, лл после хал выглядит прекрасно.
Пагни, я пытался прикрутить bluetooth HC-06. С USB uart он работает нормально в оба направления. А с СТМа bluetooth принимает, только если подключить логический анализатор к RX блютуса. Что за бред?
>>353256 Конечно, используем. 1. Сохраняется прогресс. 2. Можно откатиться если понял что за день хуйню наделал. 3. Если не стыдно то можно подрочить лайки на гитгабе
>>353264 >>353290 Ок. Спасибки за ответы. Буду изучать Git. А насчет организации папок проекта, свою используете или STM-овскую Templates из архива с демонстрациями и примерами?
Есть готовые решения для работы с картами памяти micro SDHC по SPI? Файловая система не нужна. Требуется чтение и запись блоков.
Что-то я туповат для реализации этого с нуля. Инициализацию сделать получилось. Но при записи блока размером 512 байт, все значения 0хАА и последующем чтении этого блока, получаю какую-то херню. Идут 7 байт как положено 0хАА, а восьмой мусор, дальше все повторяется до конца считанного блока.
Заебенил пучок хуевин для изучения погроммирования своей дискавери. Пятый год валяется, а я только сподобился залить в нее демо от TouchGFX и поморгать светодиодом. В этом году думаю таки немного подучить клятый Си и одолеть 1-Wire, энкодер, шим, датчик влажности и emWIN
>>353363 А они там разве есть? Там есть возможность подключить библиотеку для фат, но без реализации доступа к карте по spi или sdio ничего не будет работать
>>354554 Да, с недавних пор тут модератор совершенно ебанутый и похоже в радиотехнике совершенно не разбирается. Напиши вопрос еще раз, может не удалит (можешь еще в /d/ продублировать). Для ЦОС кортексы не особо подходят, весьма вероятно что ты собрался делать ерунду.
>>354555 Если не подходит, то что именно гуглить? Раньше тут писали что STM32 самое то для вката в DSP. Нужна простейшая железяка, в которую я бы смог грузить короткие импульсы в WAV, чтобы сделать кроссовер со своими настройками для АС.
>>354559 Ну так-то ЦОС можно делать на абсолютно любом микроконтроллере, вопрос только в требуемом быстродействии. Но я не понимаю твой вопрос. >грузить короткие импульсы в WAV Что это значит? Ты хочешь сделать КИХ фильтр, импульсную характеристику которого называешь "короткими импульсами"? Если так, то все зависит от частоты дискретизации и порядка фильтра. >сделать кроссовер Но зачем для этого ЦОС?
>>354564 Чтобы вместе с кросовером можно было вхардкодить эквализацию, и всё это вбить в один короткий импульс. а точнее по импульсу на каждый из динамиков, в типичной стереосистеме этих динамиков 4 штуки. Частота дискретизации? Ну не знаю, по идее 96кгц хватило бы, лично мне по крайней мере точно. Мне надо понять что именно гуглить для этого, я не очень въезжаю.
>>354564 В любом случае кажись я понял куда копать, в сторону эмуляции гитарных кабинетов, там эта тема будет нормально раскрыта, т.к там в обязательном порядке в результате процесса звукозаписи формируется импульс для конволюции.
>>352794 Не слушай этого дебила. Ставь system workbench for stm32 и stm32cubemx. Последний генерирует код для первого, периферия тупо кнопками настраивается. В настройках генерации выбирай SW4STM32 IDE, генерируй, дальше уже код меняй, и дрочи HAL.
>>354567 Можешь написать то же но на русском или на английском, а то ничего не понятно. >один короткий импульс. >импульс для конволюции О чем ты вообще? Открой любой учебник по ЦОС - там не будет таких терминов.
>что именно гуглить для этого, я не очень въезжаю. Естественно, для начала терминологию изучи. >в сторону эмуляции гитарных кабинетов Можешь сколько угодно копать, но от этого STM32 не станут лучше подходить для ЦОС.
>>354732 Открываешь две вкладки в браузере, в одной набираешь в гугле Atollic TrueStudio, в другой STM32CubeMX. Обучалка есть в ютубе на канале NordicEnergy.
>>354951 Наверное к кейлу по нормальному действительно сложно приделать сторонний программатор/отладчик. С программированием проблем не должно быть, достаточно лишь использовать "Use External Tool for Flash Programming". http://www.keil.com/support/man/docs/uv4/uv4_fl_usingflashmenu.htm А с отладкой наверное никак, кейл вроде как не умеет работать с gdb. Большинство IDE нормально работают с gdb, но тебя угораздило выбрать кейл. >понадобился встроенный UART Наверное ты и так знаешь, но на всякий случай напишу. Отладочную информацию можно выводить с простым ST-Link через SWO.
>>354961 >Отладочную информацию можно выводить с простым ST-Link через SWO. Там только в одном направлении, а я хочу как в ардуине, чтобы и туда послать можно было. Приходится подключать дополнительный UART-USB. >Большинство IDE нормально работают с gdb На какой-нибудь atollic truestudio это натягивается?
>>354996 Гитом создаёшь локальный репозиторий, или клонируешь его в папку. Потом в эту папку генерируешь кубом проект трустудио, и открываешь. Если репо подцепился, то в трустудио рядом с названием в project explorer (список проектов слева) рядом с названием появится [твойгитрепо] и становятся доступны действия из пкм->Team. Хотя GitKraken по-прежнему удобнее, чем из трустудио.
>>354999 >>354976 Только правильнее будет написать, что для эклипса есть плагин EGit, который по умолчанию установлен в этой студии. Этот плагин можно установить в любом поделии на эклипсе. Причем установка плагинов через marketplace аналогична установке дополнений в браузере - открыл каталог, ткнул в нужное и готово.
>>354998 >Как использовать этот отладчик с эклипсом вполне находится гуглом Ну если бы я нашел в гугле, я бы не полез сюда. Можно ссылочку. С меня большое спасибо.
>>355158 >ничего не понял. Я тоже все это не идеально знаю, но попробую объяснить ничего не напутав. Хотя ты может и так это все знаешь. GDB - это консольная программа со своими командами, которые можно выучить и отлаживать без IDE. Для отладки, IDE запускает GDB и передает туда команды, аналогично тому, как если бы это делал человек вручную. При использовании GDB-сервера вроде OpenOCD (ST-LINK GDB-server, J-Link GDB Server и прочие) сначала запускается GDB сервер, потом запускается сам GDB, в который передается адрес, порт сервера и elf-файл. При использовании Black Magic Probe вместо адреса сервера задается порт, естественно другой командой.
Соответственно IDE нужно настроить таким образом, чтобы оно не пыталось подключиться к серверу (через TCP) или не пыталось запустить как нативную программу. А все необходимые для подключения команды (порт, elf-файл) передавать либо через опцию командной строки "-ex" либо сохранить в отдельный файл как скрипт и передавать уже его. Для начала, если ты этого еще не делал, я бы попробовал все эти команды ввести вручную, без IDE. Но лучше возьми J-Link и не пользуйся кривыми поделками.
>>355168 GDB сервер там работает и даже програмируемый микроконтроллер видно. Осталось понять как заставить Трустудио подключаться к отладчику не по TCP, а через COM порт. В обычном эклипсе это есть, в Трустудио это куда-то упрятано.
>не пользуйся кривыми поделками если не осилю просто перешью Блюпилл, который отдадчик, обратно в ST-link. Но хочется COM порт в отладчике, чтобы не подключать кучу лишних кабелей.
>>355170 В чем тогда проблема использовать обычный эклипс? Либо, если иначе никак, можно попробовать соорудить костыль - скрипт, который подменяет или переопределяет команды для GDB. Вроде как такое проще сделать на питоне посредством gdb-py. Как-то так https://github.com/in4lio/mdr1986x-JFlash
А VisualGDB на рто как раздавали, так и раздают. GDB да в вижуал студио 2017, ух бля. Куб генерит искаропки под него почти все. Не генерил у меня только связку LL+FreeRTOS, остальное норм.
Сап радач, дело в том, что есть одна отладочная платка STM32F407Discovery, и вот такие видеоуроки https://www.youtube.com/watch?v=VD8OaPyAEtI&index=11&list=PL8OgDYWys_b6XtOjCejd37aVv0ic24jqV Если я освою все это, то мне этого хватит, чтобы найти работу инженером микропроцессорных систем, или нужно еще что-то? из МК знаю только MCS-51, и вот сейчас стм32 начал ковырять
>>355245 > ух бля black magic probe заработал в визуал студии с VisualGDB. Регистры видно, можно рулить светодиодом прямо из отладки. Аж обои от стен отклеиваются. Пойду удалять Эклипс.
>>355275 Для начала хватит чтобы ваять программы, а остальное зависит от работодателя. Хотя в будущем придется изучать самостоятельно дальше и больше всякие фичи из даташита. Ну и сами уарты-хуярты с прочими интерфейсами читай. Он вроде не объясняет. А в работе нужно знать. И учти что у него в первом видосе не полностью указывается как создать проект (он это объясняет где-то в 4ом видео или около того) и откуда качать библиотеки ищи в комментариях под нужным видео. Сайт обновился и инструкция в ролике немного не актуальная. Добра тебе Ps сам изучал по этим роликам и год с лишним пользуюсь кейлом +stdperiph
>>355275 >найти работу инженером микропроцессорных систем ЗАБУДЬ.Будешь сосать последнюю залупу по этому направлению. Учи лучше Java, будешь получать чуть больше, чем дворник или сантехник из ЖЭК-а. https://www.rbc.ru/newspaper/2016/07/05/577a08e19a794717070ba97b "R&D в России — это дешево. Например, китайский software-инженер стоит $150 тыс. в год, это приближается к зарплатам в Калифорнии. Те, кто занимается computer science, — $200–250 тыс. в год. Наши инженеры стоят в разы дешевле."
Здравствуйте. Такая проблема у меня. Есть один микроконтроллер. И есть SD-флешка. Подключаю её по SPI. Пока флешка была новая и чистая всё работало, флешка инициализировалась, файловая система монтировалась, файлы записанные на неё читались. После того как я очередной раз записал на неё парочку файлов, флешка внезапно перестала инициализироваться. Купил новую флешку, закинул на компьютере на неё файлы, вставил - всё опять прекрасно работает. До того момента когда я ещё раз не попытался записать на неё ещё на компьютере. После этого она аналогично перестала инициализироваться. Причём на компьютере обе карты без проблем читаются и пишутся. На пиках мой код. Красным подчеркнул там где обнаруживается косяк - в этом месте возвращаемый переменной ans ответ функции transfer =-1, то есть нет ответа по линии MISO. Смотрел осциллографом - SCK, MOSI - всё ок, то есть команда отсылается, CS тоже вроде всё на месте. Дальше идут тактовые сигналы по SCK - а ответа нет, на MISO остаётся единица. Пробовал на разной скорости - и на 32МГц, и на 250кГц - ничего не меняется, причём новая флешка работала на любой. На MISO у меня включена подтяжка. Что я делаю не так?
>>356116 Всё, уже разобрался. Вот, выделил то, что пофиксил. После этого всё заработало. Пробовал вообще выпиливать этот кусок - тоже работает, видимо это для каких-то совсем древних флешек предусматривают. Кстати, пробовал ещё втыкать простую флешку (не НС) на 2 Гб. Думал что будет определяться как тип 1, но нет. Определяется как тот же тип 2, только без блочной адресации (номер сектора при доступе нужно умножать на 512). Ещё у меня теперь инициализируется на частоте 250кГц, потом если ок, то переключается на 32МГц. Так, на всякий случай, хотя оно и на 32МГц инициализируется.
>>356221 Для тех, кто подключал sd флешку вполне должно быть понятно, так как непосредственную работу с интерфейсом тут всегда нужно прописывать ручками. Так что не понимаю твоего подрыва, мог бы просто пройти мимо.
Дороу, хочу вктатиться в ARM и смотрю на две платы: NUCLEO-F767ZI и NUCLEO-H743ZI. Разница -- 300 рубасов. Какую взять? На бумаге H7 интереснее, а на практике?
>>356263 H-серия не поддерживается многими сторонними штуками вроде micropython , mbed, embedded rust etc, или поддерживается на уровне "быстрый F7". Но это пока что.
>>356222 И да, аноны. Ещё одно наблюдение. Библиотека FatFs глючит, если в настройках ИАРа включён уровень оптимизации выше среднего. Уж не знаю чего он там накрутил, разработчик сей библиотеки. Мне пока лень разбираться. Возможно как-нибудь прослежу в отладке, возможно проставить нужно где-то volatile. Пока что допилил их для быстрой загрузки картинок через DMA - как минимум раза в два быстрей стало выводиться на экран.
>>339005 (OP) Решил перекатиться с авр на стм, короче вопрос такой - есть у меня самописная либа для управления дисплеями типо 1602 по 4 wire интерфейсу, но она под авр, я хочу ее переделать под стм, но уже в самом начале возникла проблема: у меня либа состоит из файла с самой прогой и файла с расширением h, в h прописывается к каким портам что подключать вот таким образом: // порт к которому подключаем шину данных #define DPORT PORTD #define DDDR DDRD #define DPIN PIND
// порт к которому подключаем RS, RW, E #define CDDR DDRD #define CPORT PORTD
Похоже в стм порты называются несколько по другому чем в авр, потому что на PORTD, DDRD, PIND и т.д. компилятор ругается (Error: Identifier "DDRD" is undefined in "lcd.cpp", Line: 8, Col: 6). Вопрос - где можно глянуть названия портов для стм? И нужно ли для того подтягивать какие либо либы типо io.h как в авр?
>>356552 >А ссылочку можешь кинуть? А? Ты трудный какой-то. Какой у тебя камень? В каком IDE пишешь? https://st.com все мануалы, даташиты, сопутствующее ПО, драйвера и прочая чухонь.
>>356535 Гугл в помощь. Порты там перебить и всё будет работаь. Для вывода значения в порт есть регистр PORTx->ODR - аналог PORTx у атмеги, для атомарного вывода на пин PORTx->BSSR - аналог операций PORT{x}_Bit{y}={1 или 0} (или ассемблерных команд sbi/cbi) у атмеги. Библиотечные функции HAL_WritePin использовать можно, но дисплей будет работать раза в полтора-два медленнее, чем при работе напрямую с портами через BSSR.
>>356535 И да, для работы по SPI для начала лучше используй библиотечные функции из библиотеки HAL - самая главная для тебя это HAL_SPI_Transmit(), для вывода пикселей лучше использовать HAL_SPI_Transmit_DMA() - быстрей будет работать. Но для этого придётся устанавливать STM32CubeMX, либо изучать всё это дело и инициализировать вручную, либо самому накатывать библиотеку HAL.
>>356554 IDE - mbed, камень stm35l053r8. Ок я понял, просто на стм не работал вообще поэтому могу тупить. >>356557 Вот теперь уже несколько понятнее стало.
>>356573 >IDE - mbed Проиграл с мани. Установи нормальное ПО уже наконец и не еби моск. Используй СТМ-кубик - он упрощает вхождение в СТМ. Ты бы ещё в Atollic программу писал. >stm35l053r8 Хотя куда тебе программировать, если ты даже название своего процессора без ошибок не можешь написать. опытный иараст
>>356594 Ну не ругайся, я же писал что совсем нуб в стм. После авр с которым 3 года проработал все очень необычно. Даже названия микроконтроллеров. Борду купил, мозги и руки не купил. Кстати mbed мне тоже много чем не нравится. Мне бы какую-нибудь IDE с автоматическим поиском методов по всей структуре программы как ко всяких Visual Studio, Sharp Develop и т.д. >>356652 Короче как я понял вместо DDRD в стм нужно писать GPIOD, вместо RS 5 писать RS GPIO_Pin_5, а вместо CDDR |= (1 << RS) нужно писать GPIO_SetBits(CDDR, RS); ну и GPIO_ResetBits(CDDR, RS); соответственно. Правда не совсем понятно как сконфигурировать несколько портов одинаковым образом, например мне нужно сконфигурировать 4 порта определенным образом. Для конфигурации 1 порта на выход с подтяжкой к земле нужно написать вот такую телегу: GPIO_InitTypeDef data;
data.GPIO_Mode = GPIO_Mode_OUT; // Выход data.GPIO_OType = GPIO_OType_PP; // Хз зачем надо data.GPIO_PuPd = GPIO_PuPd_DOWN; // Подтяжка на землю data.GPIO_Speed = GPIO_Speed_2MHz; // Скорость низкая data.GPIO_Pin = GPIO_Pin_2; // 2 вывод
GPIO_Init(GPIOD, &data); И так для каждого вывода чтоли? Это же ебнутся можно. Есть способ это сократить?
>>356656 Если надо сконфигурировать одинаково несколько пинов одного порта, в структуре параметр pin можно писать несколько ножек через ИЛИ GPIO_Pin_1|GPIO_Pin_3
>>356662 О! Вот то что надо. Знал же что должен быть способ. >в структуре параметр pin можно писать несколько ножек Вот так чтоли? data.GPIO_Pin = pin1; data.GPIO_Pin = pin2; data.GPIO_Pin = pin3; data.GPIO_Pin = pin4; >>356663 А зачем тактирование врубать в данной ситуации вообще? Тип возможно и неверный. Не отрицаю.
>>356667 Тактировние надо включить, потому что у тебя работать иначе не будет. В стм по умолчанию почти вся переферия отключена. Перед использованием надо поднять соответствующий бит в регистрах rcc, чтобы подключить нужную фигню к тактировние шине.
>>356656 > CDDR |= (1 << RS) нужно писать GPIO_SetBits(CDDR, RS); ну и GPIO_ResetBits(CDDR, RS); Да. Но лучше всё-таки с регистрами портов атомарно обращаться, также как в атмеге. Здесь всего-то выучить как правило: GPIOA->BSSR = 1<<(pin1|pin2) - установить ноги GPIOA->BSSR = 1<<((pin1|pin2)+16) - сбросить ноги value=GPIOA->IDR - считать состояние ногю >Ну не ругайся >ебнутся Как на тебя не ругаться, если ты даже русский язык не осилил. В таком случае тебе лучше использовать библиотечные функции, как в ардуино иде, а инициализацию генерировать в кубике, тамм уж совсем для дебилов всё сделано чтоб освоили.
может для кого-то банальный вопрос (тому респект и уважуха за ответ), но прошу пояснить. Начал изучать FreeRTOS и там написано что мол все круто, псевдопараллельность выдается за счет того что каждый равный промежуток времени обработчик задач (sheduler) забирает выполнение от одной задачи, сохраняя все данные в стек, и дает поработать следующий квант другой задаче.
Появилось два не связанных вопроса 1) Если у меня задача скажем выполнится за время, меньшее чем системный квант, он пойдет по новому кругу выполнения или отдаст власть обработчику? (написал и думаю ответ в самом вопросе --> новая итерация бесконечного цикла в задаче. Но все равно жду ответ знающих) 2) Если системный квант равен скажем 1мс, а одновременно работающих задач у меня скажем штук 200. Значит ли это, что если одна из задач выполняет обработку клавиатуры, то со стороны человека она будет как-бы тормозить? Реакция на нажатие же 200мс = 200 задач, слишком частое нажатие тупо не сможет обработаться
Привет анон. У меня возникла проблема с Дискавери (stm32f407g disc1). Настраиваю порт B как показано на первом пике. Но при работе, вижу охуительную картину - висящая в воздухе дискавери, не подключенная ни к чему, детектит единицу на входе PB6 (второй пик). Я что-то делаю не так? Тут есть какой-то нюанс, который надо учитывать? На порте E такой хуйни не нашёл.
Нужно собрать проект, в котором stm32F103 работает с EEPROM. Думаю использовать для этой цели BluePill, а вот как память подключить хз. И в инетах никаких гайдов нет
>>357344 Любишь BDSM? Бери что-то типа 24LC64 и подключаешь по IIC, который может зависнуть в любое время, или писать программную реализацию IIC. Не любишь BDSM? Берешь что-то типа 95512 https://www.st.com/resource/en/datasheet/m95512-df.pdf - EEPROM с SPI интерфейсом. Где-то посередине - 93С66 и подобные 93 серии. Если верить производителю - хуй вам, а не EEPROM - используйте одну/../ из страниц FLASH памяти(с).
>>357404 F100 серия была первопроходцем, самая горбатая из всех. Описания вообще всех проблем есть в Errata shit на любое семейство. Пользуйте F0/F2/F3/F4/L серии, 100 слишком горбата, много отличий. На любую серию МК есть листок "миграция с 100й серии" что как-бы намекает, что даже производитель считает их мусором
>>357488 >цена: до 2$ Сильно растяжимое требование. Цена при покупке в каком месте? При каких партиях? >аппаратный TRNG Чем не подходит младший разряд с АЦП? Можешь еще диод с обратным смещением приделать, чтобы сильнее шумело.
>>357488 >аппаратный TRNG Вещь сомнительной полезности. F405 с ней, в китае они по 3,5$. По остальным требованиям ближе всего пойдет старшие F0 семейство (16кб озу)
>>357562 >Да и сдается ты пиздишь безпруфно в тред https://item.taobao.com/item.htm?id=544907210814 Конкретно у этого продавца беру и F4 и F0 серии, ADUMы различные, АЦП, Токовые ЦАПы. Разницы с деталями с маузера/фарнела/тме не заметил ни визуально ни в работе. Можете брать смело. Если детали не оригинал или Б/У это пишут в описании. Например SP485 Оригинал https://item.taobao.com/item.htm?id=549197050879 Китайская копия https://item.taobao.com/item.htm?id=524754218256 Как видите разница в 10 раз. Копии кстати хорошо работают. Единственно что, подтяжки внутри у них более высокоомные. Ну и на "живую" длинную линию я не рискнул бы ставить без испытаний переходных процессов. Выбор есть, ультрадешевые китайские копии, или дешевые оригиналы. То же самое и дисплеев касается, 16х2 классический стоит меньше доллара. Большой ассортимент, в десятки раз больше чем могут предложить где угодно. Особенно COG графические. С местных цен хуею давно. Но знаю точно одну вещь, если цена с доставкой и всеми расходами ниже в 2-2,5 раза чем в космодроме - смело берите, это оригинальные детали.
>>357577 Разве что сальваж. Не может новая стоить 60р.
Вам барыги это втюхали в головы. Все детали в китае дешевле раза в 3 как минммум из-за отсутсивия импорт/экспорт пошлин, НДС, барыжинга, зарплат монагеров и машин директора. По своему опыту - видишь цену, дели в уме на 2-3 раза, это то, что ты заплатишь за поставку напрямую с китая, где стоят эти заводы где клепают эти микросхемы.
>>357599 >космодроме Как он меня заебал, блядь. Гандоны, блядь, в 2к19м году не иметь https? Сайт из 90х. Вы если цены заломали, то сделайте хоть сайт удобный.
>>356316 Выбросил бы ты fatfs, и взял бы littlefs. Меньше памяти, wear leveling, также можно монтировать в комп через блочное устпоймтво. Fatfs оперативно тебе флешку ушатает.
>>357614 >2к19м Не продолжай, все с тобой понятно. Что с ценами не так, примерно +- как у других. Космодром, VDMAIS и РКС в принципе полностью перекрывают потребности для прототипов. Для серии даже 10шт - китай.
>>357649 Окей, каким должен быть сайт радиокомпонентов? Свистелки и перделки? Или как у РКС конченое глючащее жабаскрипт говно? Зато новое. По личному опыту формирования закупок на 200+ позиций, удобнее космодрома пока не видел сайтов
>>357650 По приоритету 1. АШ ТИ ТИ ПИ ЭС блядь. Не заказать все эти 200 позиций, не слив провайдеру/СБУ/твоей мамке их содержимое вместе с твоим номером телефона именем и адресом 2. Поисковой движок говно, только точное совпадение или соси хуй. Фильтров нет, иди нахуй. Категоризация только если повезет и найдешь страницу линейки чипов. 3. Даташитов часто нет, пиздуй гуглить. Ой, не гуглится? Мы же заказали это у ноунейм китайцев, на плате ни обозначений нихуя, ну сорян придумаешь что-нибудь. 4. Вырвиглазный дизайн, каждая страница самая блять разнообразная по стилю. 5. В корзине блядь не узнать что ты там назаказывал, только наименование товара (50% их собственное) и пиздуй обрать искать в их "движке" этот товар чтоб понять что это.
>>357650 В догонку, пидарасы разбросали все по двум магазинам, шоб и дальше быть ФОПами и наебывать налоговую. Из-за этого самому заехать и забрать не получится, обязательно придется ездить и туда и туда. Ну или заказывать по НП в тот же город, но доставка минимум 4 дня получается. Обычно в среду заказываешь, в понедельник забираешь.
>>357599 >Конкретно у этого продавца беру >Согласно соответствующим местным законам и правилам и политике Taobao, этот товар не может быть отправлен в вашу страну или регион. Кто-то запизделся.
Подскажите, пожалуйста, что будут спрашивать на собеседовании на программиста микропроцессорных систем. Наконец-то судьба дает мне шанс, а я не готов, и времени до пятницы.
Привет анон. Странная ситуация - никак не могу настроить I2C Slave при помощи Cube/Hal. (пробовал на f103 и f407). Вроде составляю всё правильно, но при попытке обратиться на выбранный мною адрес - не получаю никакого прерывания (в кубе они конечно выбраны). ЧЯДНТ? Есть годный пример? А то гугл направляет только на встроенные кьюбо-примеры, которые мне нихуя не понятны.
>>357688 >Кто-то запизделся Я где-то говорил, что продавец напрямую отправляет мне детали? Нет, я пользуюсь услугами доп склада, заказываешь хуйни, детали, кастомные изделия, материалы, химию, жидкости, печатки с jlcpcb, небо и даже аллаха. Все локальной доставкой складывается в гуанджоу, а потом я решаю сам, сколько это стоит (декларация) как это упаковать и чем отправить, самолетом, поездом.
Вы блять как типикал рагули, если вы не знаете как это делается, значит все пиздят атата.
>>357737 >Аноним Но зачем ты пиздишь, что камень тебе обходитмя в дорар? Добавь услуги посредников, доставку, растаможку и вкаля, цена одного контроллера нихуя не отличается от цены электронщика. Только заместо Путина, тв кормишь китайского кормчего и кучу барыг присосавшихся к доставке
>>357750 >Но зачем ты пиздишь, что камень тебе обходитмя в дорар? Добавь услуги Как вы заебали... Окей, хотите полную цену контроллера - доставка по китаю примерно как новая почта. 1$. Накладные расходы с учетом банковских процентов переводов, складу - 15%. Доставка 10$/кг Стоит ли напоминать вес контроллера. Короче этот сратый 401RCT6 обойдется в 1.2$
>>357750 Притом за доставку ты платишь в любом случае, не важно кто доставляет, телепорты не изобрели. Все поставщики покупают ровно также. Только к этой цене (1,2$ при учете что ты покупаешь не один МК а сразу все детали на все необходимые устройства), ты добавляешь 100% жадности и 20% налогов и получаешь ровно ту же цену того же космодрома. Заебали, как нищеброды считаете каждую копейку в ссылках. Я говорю как есть в сухом остатке - 2-3 раза дешевле обходится ящик деталей например на 10 устройств. Дисплеи, кнопки, корпуса, платы (кстати ПП довольно тяжелые), короче все что нужно затариваешь и особо не колупаясь в ценах ты гарантированно экономишь в 2 раза
>>357762 Насчет ерунды я уже говорил, ты сам выбираешь что покупать. >если можно на диджикее Поехавший? Барыжинг значительно похлеще хохломагазинов, цены оттуда выйдут еще дороже нем просто сходить в магазин. Есть конечно позиции которые производят не в китае, тогда цена что в европе, что в китае одинаковая или даже дешевле из европы. Недавно светодиоды японского производства покупал с TME, вышли более чем в 2 раза дешевле чем с китая. Конечно, такие позиции нужно смотреть отдельно. Но речь изначально шла о цене деталей в целом, вам барыги вбили в головы, что если вы можете купить что-то в 2-3 раза дешевле, то это подделка. Конечно нет, подделка стоит в 10-20 раз дешевле, просто барыгам выгодно чтоб вы так думали.
>>357772 Господи, как обычно, абы ляпнуть что. Речь о позиции оригинал и копия, что китайцы предоставляют выбор, а не про какой-то конкретный радиоэлемент, это было бы достаточно глупо.
За бсоды не знаю, я не пользовался особо этими конвертерами, просто привел пример на том, что первое пришло в голову, но опять же CP2102N в китае ровно в 2 раза дешевле диджикея.
Личный выбор на то и личный, у меня к китаю достаточно положительное отношение, особенно если что-то заказывать напрямую с завода под заказ, не единично конечно же. Например заказать пьезоэлементы по своим чертежам в европе/США обходится 7-8$ за штуку на сотне, то же самое сделать в китае - 0,6-0,8$ за штуку при той же партии. Хотя это и так очевидно.
Рассуждать где лучше покупать нужно после сборки изделия, передачи заказчику, засунуть руку в карман и поглядеть сколько у тебя в итоге осталось, тогда и делать объективный выбор.
>>357764 >вам барыги вбили в головы, что если вы можете купить что-то в 2-3 раза дешевле, то это подделка Но ведь т ы можешь посмотреть цены на сайте ST и убедиться, что 401rc стоит 2.43 от 10к штук. Как же добрая китайца продает по дорару? Сальваж? Подъебка? Или злой СТ вбивает нам в головы, что 2.43 это нормальная цена?
>>357788 Цены на сайте производителя указаны с учетом интересов дистрибьюторов, просто чтоб не срать им. Опять же, цены для покупателя. Это легко проверить, у того же VDMAIS цены на продукцию Analog Devices ниже чем цены на сайте AD, поставки у них прямые от AD без дополнительных посредников. В некоторых случаях (если они брали большую партию чего-либо) у них цены даже ниже чем в китае, но это не особо часто такое. Texas например указывает что цена может сильно варьироваться от условий. Так что эти цены хороши для быстрой оценки в большую сторону, например заказчик спрашивает, сколько это будет стоить? Берешь цены с сайтов производителей и будь уверен что не проебешься, т.е. она будет "с запасом"
Вот вопрос тогда, сколько стоит законченное рабочее изделие с внутренним ПО, конфигурация примерно такая msp430fg4618 XC2C32A-6VQG44 msp430fg2112 max9202 dg403 mc1350 tc4427 2 4х слойная ПП 8080мм штук 10 операционников типа 358х, 4 оптрона, диоды, батерая, 2576, конденсаторы, мелочевка, кварцы 2ши, несколько светодиодов, дроссели короче как обычно Вот сколько навскидку это стоит?
>>357793 Тут стоимость будет в основном определяться потраченным на разработку временем, а не стоимостью деталей, если конечно это не относительно большая серия. За единичное устройство я бы обсуждал от $1500 самый минимум.
>>357792 Нет. У всех вендоров цены на сайте включают только маржу вендора без учета дистрибьютора. Тексас, например, можно вообще поштучно купить и оплатить кредиткой, дистрибьютора в цепочке не будет. Далее, каждый вендор имеет свою стратегию - тексас имеет высокие сайтовые цены, но может сильно снижать квотные цены, особенно на коммодити, 300мм пластины помогают. Девицы наоборот. Им нет смысла продавать крутой аналог задешево, особенно после покупки Linear - конкурентов почти не осталось. Есть простой лайфхак: конечная цена в РФ примерно равна сайтовой. Ну то есть дистик получит скидку от вендора, накрутит свою маржу и НДС - то на то и выйдет. До 50к штук приблизительно работает.
>>357800 >Им нет смысла продавать крутой аналог задешево, особенно после покупки Linear - конкурентов почти не осталось. Куда смотрел швятой антимонопольный комитет? У них же там вроде как такие сделки запрещены.
>>357800 Абсолютно верно. Вот эти НДС, маржа и прочее и дает 100% цены товара. Именно об этом я и говорил, что цены на сайтах - индикативные. Покупая в китае вы фактически покупаете со склада с которых отгружают дистрибьюторам. Отсюда и разница в цене в 2 раза. Если вы сами захотите продавать эти детали, купленные в китае, вы добавите налог, свою прибыль и получится ровно то, что и в магазине. Тут нет никакой магии, нет подделок продукции, просто многие люди забывают, что цена товара в стране составляет едва ли 30%, все остальное - накрутки, налоги
>>357799 Если что - 65$ цена. Я это к тому, что это законченное изделие, проверенное, настроенное. Пример привел лишь для того, чтоб показать истинную дешевизну радиокомпонентов
>>357803 Просто именно эти радиокомпоненты уже многократно окупили свою разработку и выпускаются настолько большими партиями что практически стоят копейки. Стоимость сырья, издержки производства, логистики, амортизации станочного парка просто растворились в количестве уже реализованного
>>357802 Тексас и ADi уже прекращают отгрузки в Китай, оставив по одному большому дисти. Скоро и вендоры второй-третьей руки будут делать то же самое - ты или лидер рынка, или следуешь за лидером. Никому не охота ебаться с реэкспортом. Маржа и прочее - это треть цены максимум. 100% накрутки будет если покупать со склада. Но опять же через пару лет ты со склада купишь только коммодити. Нужен тебе будет проц или что повеселее - добро пожаловать в мир квот и лид таймов. А цены в Китае.. Сегодня они есть, потому что у Фоксконна эппл не выбрал весь объем аудиокодеков, завтра нет, потому что в этот раз выбрал.
>>357793 Без учета памяти и керамических конденсаторов, я готов сделать тебе такую плату за 22-23 доллара тут в РФ. В партии от 5к штук. Керамику достаешь сам, я не буду связываться с керамическими конденсаторами в партиях менее миллиона.
Ничего не меняется, зашла речь о цене деталей и покупке, все свели к глобальной политике, каким-то фоксконн, эпл, блять, каким-то хуем какие-то аудикодеки приплели, все что "слышал звон", все высрали в тхреад и довольно урчат. Двач такой двач
>>357829 >я не буду связываться с керамическими конденсаторами в партиях менее миллиона
Вся русня в одном предложении. Нахуй вы кому нужны с такими запросами. Китаец сделает все гораздо лучше и качественнее при партии в 100шт за меньшие деньги. Ведь они не столь брезгливые господа.
>>357853 Не сделает. Сейчас на керамику ебанутая аллокация по всему миру. Или 35 недель, или трехкратная цена, или искать по стокам. Последнее очень времязатратно.