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

adnega

Свой
  • Постов

    3 594
  • Зарегистрирован

  • Посещение

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

    3

Сообщения, опубликованные adnega


  1. Спасибо. Всё заработало под XP SP3. А не порекомендуете, где по ini файлам почитать?

     

    Извинте, inf файлам - от радости буквы спутап.

    Вроде, есть толстая книжка по Windows.

    Но не думаю, что ради этого стоит глубоко вникать))

    Я подобную проблему нашел на одном из зарубежных форумов - мол, в inf от TI есть ошибка.

    Поправил ради эксперимента inf как посчитал нужным (интуитивно), и все заработало.

  2. да какая разница, если конфиг тот же?

    там и в схемотехнике могут быть проблемы, я выше указывал на это

    Несмотря на то, что я тоже обвешиваю SWD и JTAG резисторами, не определяться устройство может и при софтовом отключении функции SWD и JTAG. Выводы должны быть настроены соответствующим образом, правильное значение должно быть записано в AFIO->MAPR. Причем мы помним, что писать так "AFIO->MAPR |= (что-то)" туда нельзя!

  3. Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.

    К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...

    Я не настаиваю на своей правоте. Наработки я не то чтобы скрываю, просто не афиширую. Было пару случаев, когда ими воспользовались сторонние люди, но ничего кроме реакции "круто, оно работает" ничего не получил. Чтобы довести код до совершенства нужна как минимум соответствующая квалификация: от "молодых" толку мало, а у "старичков" нет времени и желания ковыряться в чужом коде, когда уже есть или свои наработки, или стандартные библиотеки. Имя мне делает не то как я пишу код, а то что готовое изделие работает, обладает соответствующим функционалом, при определенной стоимости и времени разработки. Это с одной стороны. С другой стороны: все люди разные,у каждого свое мировоззрение. Не редко приходилось сталкиваться с разработчиками, более авторитетными чем я, и склонять к своему мнению - хм, не тут-то было. Тряся кодом ничего не докажешь, нужно время чтобы заметить разницу в подходах к программированию в целом. Начинать нужно со студентов. Года два назад помогал с одной разработкой родному ВУЗу - провел несколько семинаров для аспирантов. Приглашали вести курс на постоянной основе, но времени к сожалению нет.

    По поводу раскрытия: мои реализации USB CDC и HID приведены несколькими постами выше. Ничего оригинального в них нет. Хотя замахнулся на USB HID "свисток" с управлением входами-выходами, показанием температуры, возможностью подключения монето- и купюроприемников, приема ИК-кодов, проигрывания музыки через бузер (по нотам и длительностям), пробрасыванием RS-232, функциями сторожевого таймера, расчета MD5 для выполнения функций взаимной авторизации как ПК, так и USB-устройства (типа аппаратный ключ). Это для платежных систем, музыкальных автоматов. Работает без драйверов, можно втыкать-вытыкать устройство на горячую - демо-ПО все отслеживает и не падает. Вот наработки - вопросов от сообщества пока нет))

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

    Даже, насколько помнится, хекс с измененной CRC тоже хранит у себя внутри

    Ну, это если через GUI.

    Я привел пример прошивки через командную строку, что гораздо удобнее для серийной заливки.

     

    Если J-Link использовать не принципиально, то могу посоветовать:

    st-link v2 - используем на производстве для прошивки;

    versaloon - использую для прошивки-отладки при разработке.

     

    Оба инструмента "дружат" с командной строкой.

  5. Toweroff. J-flash не прошивает - на знаю почему.

    ему нужен файл с конфигурацией проекта (см. вложение, без расширения txt).

    Это кроме лицензии или лекарства от жадности.

     

    flash: $(MAIN_OUT_BIN)

    "C:\Program Files\SEGGER\JLinkARM_V415f\JFlashARM.exe" -openprjdefault.jflash -open$(MAIN_OUT_BIN),0x08000000 -auto -startapp -exit

    Default.jflash.txt

  6. Если вы произвели удобный и уже отлаженный продукт - почему его не популяризируете?

    Тут все просто: я коммерческая организация, это не увеличит мои доходы, скорее наоборот...

    Опытом делюсь с удовольствием, а наработками... увы))

    Да, и продуктом это назвать сложно. Опять же нет хорошей документации (кроме описаний doxygen).

    Скорее, конструктор, позволяющий за 1-3 дня поднимать средней тяжести проект, с дальнейшей недельной отладкой.

    При наличии 100+ реализованных более-менее схожих проектов любой разработчик может придти к такому решению (а не продукту).

    Главное решится "изобретать свой велосипед".

  7. Если не секрет, чем пользуетесь Вы? Очень хотелось бы помахать ручкой STLib-е, если появится рациональная альтернатива (в плане переносимости и поддержки её сообществами).

    Я пользуюсь продукцией STM32F практически с самого ее рождения. Было время, когда STLib распространялась в виде либы и заголовочных файлов к ней (т.е. исходников не было или я их не нашел). Так вот в этой либе была ошибка, которая не позволяла использовать внешний кварц на 12МГц, а было фиксированное значение 8МГц (или я не нашел как это побороть). В это время мне не осталось ничего другого как начать писать свою собственную библиотеку. Несколько раз менял ее идеологию, в итоге пришел к заголовочному файлу со всеми регистрами и битами в периферии + комплект из .c и .h фалов для выполнения той или иной задачи (терминал на основе UART, ИК-приемник кодов, EMAC-уровень для Ethernet и т.п.)

    Переносимость и поддержка только в своем окружении разработчиков, в сообществах поддержка нулевая))

    Ибо задачу ставил сделать надежно-работающее изделие в условиях минимизации ресурсов МК. Т.е. в одни и те же ресурсы "впихнуть" как можно больше функционала.

  8. Ещё час назад думал, что психушка обеспечена. Два дня поднимал CDC VCP.

    Порт заработал, но осадочек остался... Такого отвратительного кода я не видел давно.

    При чём раньше плевался, помнится, на StdPeriph Library, на её стиль, нотацию, код.

    Ну никак не укладываются программные решения ST в какие-то удобные, локоничные формы...

     

    Теперь волнует вопрос. Есть ли альтернативы StdPeriph Library и STM32_USB_Device_Library для stm32f4???

    Хочется понять USB-стек, и не хочется видеть STM32_USB_Device_Library. Плюс хочется комфорта.

    Первое впечатление обманчиво. Если поставить себе цель использовать STLib, то со временем черт получается не таким страшным как его принято малевать. С учетом нынешних объемов памяти и мегагерцев использование такого универсального средства как STLib в некоторых случаях можно оправдать. В своих проектах я ее не использую. Один раз на работе для достаточно нетривиального контроллера ради эксперимента решил попробовать - вроде работает и все довольны, и сопровождаемость возросла, и с камня на камень легко прыгнули (с F103 на F107), и FreeRTOS с uIP легко запустились. Просто не надо думать, что использование этой библиотеки освобождает Вас от чтения документации)) Скорее наоборот: библиотека, примеры от ST и документация дополняют друг друга. Повторюсь, сам эту библиотеку не использую, но без нее и примеров при запуске некоторых блоков (например, Ethernet с кучей магических констант) сидел бы над документацией и плевался ооочень долго. Мой диагноз: библиотеке быть! И хорошо, что она такая "плохая" - тем меньше соблазн ее использовать))

  9. Если у меня основная программа иницирует программный сброс (для того, чтобы передать управление загрузчику), будет ли содержимое оперативки в STM32 обнуляться? Нигде не могу найти это в документации.

    Чему равно значение битов в оперативке по умолчанию после подачи питания?

    ОЗУ процессор не трогает. Периферийные регистры будут в значении "после сброса" (описаны в документации).

    Странный вопрос, поскольку до вызова main() состояние ОЗУ должно измениться для инициализированных данных и обнулиться для неинициализированных. Все остальное мусор. Может затереться стеком в любой момент.

  10. Добрый день! Приобрели для пробы набор разработчика TI eZ430 Chronos. (Микроконьолллер с приёмопередатчиком в часах). Не могу установить драйвер точки доступа. В коробочке с часами не было CD. Скачал с сайта TI slac341 - программное обеспечение для набора. Установил. Программатор, входящий в набор видит при подключении, а точку доступа - нет, не находит драйвера. Пробовал ставить на разных коипьютерах под управленим разных ОС. Тот же эффект. Кто-нибудь сталкивался? Часы то хорошие - по видеоролику TI метров на пятьдесят поддерхивают радиоконтакт.

    Есть такое))

    Нужно поправить inf-файл. Менял VID и PID оборудования и путь к usbser.sys

    Попробуйте файл из вложения (поменять расширение на inf). У меня WIN7-64.

    usb_cdc_driver_cc1111.txt

  11. Если есть возможность, можно поделиться для старта?

    Для старта.

    Может поможет. В исходниках много отладочной информации касательно работы USB.

    Правда, все для STM32F103. Но с минимальными "допиливаниями" (инициализация GPIO, NVIC) должно работать и на STM32F4.

    usb_cdc_complex.zip

    usb_hid_template.zip

    stm32f103t4.txt

  12. Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST.

    Предлагается изучение библиотеки оставить для самостоятельной работы, а на форуме начать озвучивать конкретные вопросы. Что именно не получается?

    Дело в том, что изучение библиотеки это не такой уж легкий путь с учетом сопровождающей ее документации. Описаны параметры функции, возвращаемый результат, но это и так в большинстве случаев понятно. Как строится логика работы с библиотекой нигде (по крайне мере я) не встречал. Можно подглядеть в примерах, но это лишь частный случай...

    Возможно, Вам будет легче плюнуть на эту библиотеку, разобраться с регистрами и написать что-то свое. Я пока так не поступил, тратил очень много времени. Отказавшись от ST-библиотеки, поднял свой USB-стек за несколько дней.

     

    Итого: библиотеки рабочие, документация на любителя, реф.мануал читать по-любому придется, конкретные вопросы приветствуются)

  13. Для использования USB в своих проектах документации хватает (Reference Manual).

    Для изучения USB конечно же не хватит. Нужны спецификации USB классов (я использовал только HID и CDC) + книжка по самому USB (часть вопросов снял труд Агурова).

    Модуль USB в STM32 мягко говоря "нетривиальный")) Например, чтобы установить какое-нить значение бита в регистре нужно его считать и если значение устраивает, то записать в эту позицию "0", а если нужно изменить на противоположенное - то "1". Где-то так...

  14. Примеры для STM32F4DISCOVERY запускались без каких-либо проблем.

    Например, обновление прошивки с USB-флешки.

    Или проигрывание wav-файла с USB-флеш.

    Пробовал модифицировать, добавил управление громкостью с акселерометра.

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

    У Вас собственное железо или используете указанную выше отладочную плату?

    PS. Дальше запуска примеров не разбирался с комплектом поставки (либы), поскольку не сторонник "чужих велосипедов", а изобретаю потихоньку свои)

  15. ds18b20 (ds18b20+ ?)

    никаких паразитов, никаких стометровых лапшей по промзонам, всеми тремя ногами воткнуто напрямую в клеммы на плате, столе и в обычной жилой комнате

    ...

    0b01111111 ... 12 бит, т.е. разрешение 0.0625 градуса

    ...

    раз в секунду:

     

    Преобразование при такой разрядности занимает время порядка секунды (750мс).

    Вполне можно нарваться на пограничное значение, что преобразование еще не закончилось, а результат уже считывается.

    Попробуйте увеличить задержку до 10 секунд - опрашивать этот датчик все равно часто не нужно, поскольку будет саморазогрев.

     

    Ну, и тайминги слотов проверить - может не правильно различаются "0" и "1".

     

    Кстати, CRC совпадает?

  16. В некоторых случаях инициализировать периферию можно не сразу же после установки битов разрешения тактирования, а спустя несколько актов шины. "Шустрая" выборка может сказаться на этом процессе. Хотя, если Вы пользуетесь стандартной библиотекой... в ней этот момент должен быть учтен.

  17. А меня несколько месяцев назад больно "ударила" следующая конструкция:

    if((a + CONST) > a) a += CONST;

    Хотел сделать универсальный счетчик с насыщением, но при знаковом a и беззнаковом CONST не работает((

    Молчу уже про разрядность a (решение должно быть универсальным) и многопоточный доступ...

    Хотя на первый взгляд все логично...

  18. Понятно.

    Я как раз понял, что поскольку там 4 гига адрессного пространства, то они хорошо подумали и раскидали регистры так, чтобы потом не пришлось их двигать. И поэтому я понял что совместим именно код, причем скомпилированный... Видимо, мой недостаточный американский сказался.

     

    У меня в планах джентельменский набор начинающего эмбедера:

    - GPIO

    - ADC

    - PWM

    - USB as file system

    - USB as COM

     

    Все это я планирую использовать на 103-м. Судя по вашим ответам - лучше дождаться моих бордов и уже на них упражняться?

     

    Еще вопрос. Стыдно, но я не нашел на сайте st.com, где скачать последнюю версию StdPeriph_Lib. Вроде бы должна быть версия 3.5.

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

  19. Я взялся за изучение STM32.

    Почитав теорию, развел небольшую пробную плату под stm32f103, отослал в производство и заказал детали. Плата прибудет через две-три недели.

     

    Пока упражняюсь с кодом. И вот тут засада. Я читал, что вся линейка кортексов совместима. То есть все, что написано для меньшего варианта, заработает и на большей версии.

     

    У меня есть stm32f3discovery. Если я пишу код для f303 - все работает. Если пишу для 103 и прожигаю в discovery - не бежит :(

    Вопрос - так должно быть, или я туплю? Достаточно ли инициализации, которую я делаю для 103-го, для того, чтобы использовать в 303-м функциональность 103-го.

    У этих контроллеров разные ядра: M3 и M4, но если писать под M3, то должно исполняться и на M4.

    У контроллеров разная память, соответственно линкеру нужно указать разницу. В 303 заявляется 48кБ ОЗУ, но 8кБ из них "особенные" и лежат в "особенном" месте. Соответственно можно поиметь проблемы с неправильным указанием начала стека. По периферии тоже могут отличаться: вроде, RCC у них отличаются.

  20. харашо

    но как тогда определить скорость?

    я уже все перебрал

    чуть ли не в цикле перебираю все параметры.

     

    включил режим приема всех сообщений - на скорости 500к идетт инфа. длинна буфера не превышает 8 байт (на остальных скоростях бывает больше 8)

    ид и буфера повторяюцца

     

    а вот в нормальном режиме ничего нету

    вааще

     

    памажите

    В CAN еще момент считывание для бита выбирается. И есть интервал в бите для подстройки частоты.

  21. То есть Вы утверждаете, что потратите час на написание или сопровожддение некого кода на С, а тот же код на асме (применительно к 8 бит Атмелу, а не GUI или СУБД больших машинах) будет отработан за 10е6 часов то есть 114 лет? Что-то неверится. Применительно к "мелким" 8 бит МК может и не нескольких раз не набраться.

    Скорее так: нужно по-быстрому поменять несколько мест в нескольких программах (объемом 10К строк). Может алгоритм поменять, может тип данных, структурку и т.п. На C такие действия тривиальны, на ASM врагу не пожелаешь))

    Да, и к Ctrl-C, Ctrl-V вариант C дружественнее...

  22. С прерывания более-менее разобрался. Я включал и опрашивал не то прерывание. Для прерывания по приему данных необходимо включать вот этот вектор в NVIC:

    USB_LP_CAN1_RX0_IRQn

    Разрешать вот это событие в Can:

    CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);

    И вызывать вот этот обработчик:

    void USB_LP_CAN1_RX0_IRQHandler(void).

     

    Теперь другая печаль :wacko: В обработчике прерывания я в глобальную переменную записываю 1. А в основной программе зажигаю светодиод по этой единичке. Так вот, если программу выполнять пошагово через дебаггер, то в прерывание я попадаю и светодиод благополучно загорается. А если загрузить эту программу на выполнение в реальном времени, то светодиод не загорается. Может, посоветуете чего по этому поводу? :help:

    Приписать volatile к переменной.

×
×
  • Создать...