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

esaulenka

Свой
  • Постов

    1 463
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент esaulenka


  1. У него синтаксис не очень удобный. Я и сам им пользовался, но разбираться через год-другой в скрипте довольно сложно... В итоге пользуюсь питоном с библиотекой intelhex - просто и наглядно.
  2. Точнее, в C99, если я ничего не путаю. И должно заработать в C++20. Жалко, что даже в gcc в порядке личной инициативы раньше не внедрили...
  3. Включить-выключить прерывания в USARTx->CRx можно прямо на ходу (сам так делаю постоянно). Поставить бит DMAT в USARTx->CR3, подозреваю, тоже можно (не проверял). Проинициализировать DMA можно один раз, дальше просто запускать в нужный момент. Но в SPL всего этого нету, разумеется. Но это руками можно и нужно сделать, получится меньше и понятнее, чем волшебные SPL-функции.
  4. Что именно Вам надо перенастроить? И слово "нельзя" - это про идеологию. Если там идеология "использовать можно только HAL", то, боюсь, никакой готовый код товарищу не поможет...
  5. Что именно мы должны увидеть на картинке? (и на какой из двух?)
  6. Ну я вот изучил. BOOT0 в нуле (так нам обещает Donker), main flash memory, как и должно быть. Настройки JLink'а тоже стандартно-обыкновенные. Мысль не раскроете? Для средних умов, таксказать. PS Donker, может, камень сдох? Не пробовали какой-нибудь другой экземпляр?
  7. Наверное, не все эти мегабайты - в ОЗУ? :-) RAM - начиная с нуля и до 64к, флеш и прочие SFR - могут быть дальше. По факту, у младших камней они также укладываются в 64 к, но ядро, в теории, умеет работать и с бОльшими объемами памяти.
  8. У меня прямо перед носом reference от STM32F4. И там слова "карусель" нет, есть раздел Arbiter. И там всё просто: у кого выше приоритет (или меньше номер стрима при равных приоритетах) - тот и первый. Другой вопрос, что я использую DMA с низкозагруженными каналами (UART на десятках-сотне кбит/с, SPI с сотней байт и т.д.), и о приоритетах даже не думаю - запас получается на порядки: пока DMA ждёт освобождения высокоприоритетной периферии, он может обслужить низкоприоритетную. Вот когда мне захочется затолкать что-то большое в периферию с собственным FIFO (что там у STM'ок есть? Только USB с ethernet'ом?) или использовать режим memory-to-memory, вот тогда придётся думать...
  9. Варнинг был? Был. Следует считать любой (ну, почти любой) варнинг как предупредительный выстрел.
  10. Таня, нарисуйте, пожалуйста, Вашу схему. Я не понимаю, как включить интегратор и как его обнулять. Ну то есть вот так: https://www.silabs.com/documents/public/user-guides/efm32gg-stk3700-ug.pdf (стр. 12). Таня не одобряет :-) А проект у Вас очень интересный, спасибо. Подробности публиковали?
  11. Тут бы с требованиями определиться, какой ток и с какой точностью хочется измерять. Потому что счётчик заряда - это либо недешёвая battery management system (и фиг его знает, как оно заработает без собственно battery), либо не совсем простая аналоговая схемотехника (Подскажите, кстати, где обсуждалось. Я сходу не нашёл). А усилитель шунта есть готовый, за три копейки. Кстати, дурацкий вопрос. Если параллельно шунту повесить конденсатор, не получим ли мы эрзац-интегратор? При шунте в сотню Ом даже какие-то сносные значения емкости получаются...
  12. Если переводить более точно, то там сказано AFR0 и AFR1 ;-) По Вашей логике, требование "не включайте несколько ремапов для одного порта" должно касаться AFR0, AFR3, AFR7. И подобное требование вроде бы отсутствует в даташитах на другие камни, хотя организация ремапа там такая же. Я, во всяком случае, не нашёл. В общем, кажется мне, это косяк с копипастой (неизвестно откуда). :-)
  13. Это косяк в обозначениях. Тут вход TDO используется как SWO (он находится на той же ноге разъема).
  14. Разговоры "вот раньше-то, молодёжь нынче не та" - это к семёнычу и его клонам, пожалуйста. То, что раньше человек с небольшими знаниями и достаточной мотивацией мог поморгать лампочкой на PIC'е, а сейчас запускает какой-то веб-сервер на распберри... Ну ок, это не хорошо, не плохо - это просто сейчас так есть. Библиотеки - это хорошо. Хорошие библиотеки - вообще замечательно! Писать LwIP, операционку с нуля - можно. Иногда даже нужно. Но далеко не каждый неначинающий сделает это хорошо. Я вот недавно начал ковыряться с блютус-стеком в Nordic (сейчас приоритеты задач поменялись, и оно опять отложилось). Написать подобное в какие-то разумные сроки в принципе невозможно. Остаётся только вариант брать и использовать, благо, в отличие от того же HAL'а, оно мелко порезано на отдельные модули с достаточно подробно описанным API, и никто не мешает подсовывать в нужные места свои модули.
  15. Одна проблема - она не очень для начинающих. Т.е. знания "как работает ядро" нужны, когда делаешь (дорабатываешь) ОС или ловишь хитрый хардфолт. Но первоначальные вопросы - как поморгать диодиком или выплюнуть в UART "hello world" - там не освещаются. Точнее, в русском переводе есть приложение - описание периферии каких-то TI Luminary (никогда не читал эту часть), но толку от него в плане освоения STM немного... О-о, дело Мартина живёт :-) Я отлично помню, как изучал 32-битники по книжке https://perswww.kuleuven.be/~u0068190/ARM7/lpc-ARM-book_srn.pdf И имхо про ST-шные библиотеки. Да, они огромные, неоптимальные и не всегда удобные (точнее - почти всегда неудобные). Но для быстрого старта - проверить работоспособность какого-нибудь USB - вполне вариант. Опять же - это стало худо-бедным стандартом, лучше обращаться за помощью на форум не с просьбой "я тут написал 10 тыщ строк, найдите ошибку", а "вот стандартный пример, я его меняю вот в этом месте, и всё ломается так и вот так". Хотя о чём это я... обычно все сообщения "я что-то сделал (не скажу что), и оно само сломалось" :-) И да, надо быть всегда готовым, что где-то там в середине библиотеки закопана пакость, и она обязательно стрельнет в самый неподходящий момент. В продакшене у меня все драйвера написаны моими руками, и крайний - не безвестный MCD team, а лично я. Но для экспериментов - покатит...
  16. Да, очевидно, что это сумма. Хорошо видно при сравнении разницы (арифметической) между двумя похожими пакетами. Следите за руками: Пакет: 02 6c 31 30 30 30 30 03 39 45 Команда: l1 Параметры: 0x00 0x00 Контрольная сумма: 0x9E Считаем: ( 0x02 + 0x6c + 0x31 + 0x30 + 0x30 + 0x30 + 0x30 + 0x03 (весь пакет без контрольной суммы) + 0x9E (контролька) ) % 256 == 0 Что такое 0x55 в конце, не знаю. Это точно не подтверждение от второго блока (линия-то одно- или двупроводная?) ?
  17. Видимо, вариант cmsis для тех, кто не хочет использовать HAL. Почему эта менюшка не предупреждает "так всё сломается"... Ну, увы... В embedded есть очень много способов выстрелить в ногу...
  18. Запись во FLASH.

    Справедливости ради, на большинстве STM (из того, что лично трогал - F1, F2, F4) запись во флеш останавливает всё выполнение из неё. Т.е., если не считать "подвисания" всего камня, никаких проблем нет. Функция записи, как и многочисленные вектора прерываний - во флеше. И про размер записи. На первых сериях было строго 16 бит за раз (откуда история про выравнивание источника? пофиг же). На F4 есть настройка, сколько писать - 1, 2, или 4 байта.
  19. Мне почему-то казалось, что у Вас есть опыт общения с автоэлектриками. Большинство - люди простые, на аккумуляторе написано "плюс" и "минус" - значит, так и есть. Ноль вольт - это когда всё выключено :-) Изменить это нельзя, только смириться... А проблема, кажется мне, решается не "полярными транзисторами", а банальным резистором подтяжки между +12 и входом. Осциллограмму входного сигнала в живой машине нагуглить не удалось, но по описанию на L497 искра формируется при переходе управляющего сигнала из единички в ноль.
  20. Словоблудие - вся эта тема, к сожалению. Потому что hacker_fox только ближе к середине сказал, что у него не NAND, не FRAM и не SD, а NOR. Возможность записывать что угодно и куда угодно (только 1->0, разумеется), довольно мелкий размер стираемого сектора, гарантия от производителя, что данные не побьются - с одной стороны (в сравнении с NAND). Необходимость делать-таки FTL (или заметно урезать функционал) - с другой стороны (в сравнении с SD). Какие тут цифры могут быть, я не очень понимаю. Сначала определяемся с хотелками, потом начинаем сравнивать (с цифрами, да) хоть сколько-то похожие предметы. Единого списка "что должна делать ФС" тоже не существует. Читать должна. Возможно, писать. Возможно, форматировать под себя диск. Возможно, обеспечивать какие-то средства отказоустойчивости. Непосредственно процедурами обмена с носителем должен заниматься драйвер. Управлять динамической памятью должна ОС (если ФС нужна такая память). Кофе должна варить кофеварка. Но что-то я сомневаюсь, что выше написано хоть что-то новое. Опять словоблудие...
  21. Тёплое с мягким сравнивать - не очень большой смысл. Это разные FS, и применяться должны в разных условиях. Сколько памяти будет потреблять FAT + FTL ? И про фразу "littlefs не имеет исправления ошибок" хотелось бы подробности услышать. Не обрабатывает ecc ? А что, это ФС должна делать, не драйвер?
  22. Файлик из комплекта кейла: * $Id$ LPC407x_8x_177x_8x.h 2012-04-25 * @file LPC407x_8x_177x_8x.h * @brief CMSIS Cortex-M4 Cortex-M3 Peripheral Access Layer Header File for * NXP LPC407x_8x_177x_8x. * @version V0.7 * @date 20. June 2012 * @author NXP MCU SW Application Team * Copyright(C) 2012, NXP Semiconductor * All rights reserved. typedef enum IRQn { .... EEPROM_IRQn = 40, /*!< 40 EEPROM */ CMP0_IRQn = 41, /*!< 41 CMP0 */ CMP1_IRQn = 42 /*!< 42 CMP1 */ } IRQn_Type;
  23. Спасибо. После допиливания (я не очень понял, как оно работает изначально, без создания объекта, хотя бы временного) получилось следующее: struct CASTtoU16 { template <typename T> CASTtoU16(T *data) : bytes((uint8_t *)data) { } uint8_t * const bytes; operator uint16_t() const { return bytes[0] | (bytes[1] << 8); } CASTtoU16 & operator =(uint32_t val) { bytes[0] = val; bytes[1] = val >> 8; return *this; } }; // example uint8_t arr[32]; CASTtoU16 {&arr[3]} = u16; uint16_t u16 = CASTtoU16 {&arr[5]};
  24. Не я это первый начал :-) Изделия, которые активно потребляют от бытовых или около-бытовых батареек/аккумуляторов, на рынке есть. Начиная от фотовспышек и заканчивая шуруповёртами. Я и сам когда-то делал термопринтер, который запитывался от 6 последовательных NiMH. Сколько тока там потреблялось, я уже забыл, но напряжение просаживалось процентов на 30 (пришлось городить даже динамическое задание скорости печати в зависимости от просадки в данный конкретный момент, чтоб оно хоть как-то работало). И вообще, батарейка - расходник. Мы ж о пользователе заботимся, чтоб ему и в эфир помощнее передавало, и лампочками поярче мигало, а то, что батарейка разрядится чуть быстрее - ну и чёрт с ним. Тем более, с точки зрения расхода батарейки куда интереснее оптимизировать ждущий режим, в котором устройство будет проводить бОльшую часть времени. Стыдно сознаться, но я неграмотный. В букваре ВАХ диода начинается от нуля. В характеристиках в даташите нулевой точки нет, а при токах в миллиампер падение уже порядка 0.6 вольта и есть. Что там в реальной жизни творится в районе нуля, толком не задумывался. Хотя... вот на BAT54 есть график в более-менее нужном масштабе. Ну да, при единицах-десятках мА падение не очень большое. В случае паразитного диода MOSFET'а лучше, видимо, смотреть на графики BAS16, там будет несколько хуже... В общем, спасибо за советы, завтра надо будет поэкспериментировать, благо основа есть, надо только транзистор добавить. Спасибо за советы. Если уж ставить литий, то плоский. Дизайнер и начальники, которые утверждают этот дизайн, будут в восторге. Останавливает только вопрос, что делать пользователю года через 2-3-4. Аккумулятор этот с ненулевой вероятностью банально снимут с производства... В остальном, для нашего применения - сплошные плюсы.
  25. Да у меня больше вопросов, как оно будет стартовать. Step-up'у нужно 0.7 вольта, на диоде 0.6 - и вот уже никакого запаса для щелочной батарейки, не говоря уж о NiMH... Внешний шоттки даёт небольшой шанс, что оно будет стартовать с аккумулятором...
×
×
  • Создать...