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

MementoMori

Свой
  • Постов

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

  • Посещение

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


  1. Ну у меня так и получилось. Для питания и VRef ЦАПа думаю хватит.
  2. STM32H743 и USB_HS

    Я изменил FS_LOCK c 2 на 0. Файлы создаются, открываются и пишутся. Но мне все равно не по себе. Я ведь отключило защиту от одновременного доступа к файлам. Это не есть хорошо. ТАк почему же я открываю один файл, а система думает, что я открыл их несколько?
  3. STM32H743 и USB_HS

    Решил попробовать почитать файлы. Список читается без проблем, в сами файлы пока не лез. И тогда я понял, что проблема не в железе, а самой Fatfs. Покопал в этом направлении и обнаружил, что система генерирует код ошибки FR_TOO_MANY_OPEN_FILES. Это при попытке открыть один файл. Что это означает? Я не нашёл внятно информации.
  4. Хех.... и смех и грех))) Ткнул щуп осциллографа с пружинкой, а не крокодилом - пульсации 31 мВ. То есть менее 1%, лучше чем в даташите. 2 недели, как осциллограф купил, не привык я еще к серьезной технике....
  5. Вот что в map файле .text 0x08000e7c Section 0 sys_io.o(.text) .text 0x08000ee2 Section 74 sys_stackheap_outer.o(.text) Адрес остановки, напомню 0x08000E8C. стало быть это sys_io. Поиск строки "sys_io" дает всего 1 результат - и он в map файле. Что за фокусы?
  6. Хм... кусание крокодилом за щуп дает 0.00 В. И на экране ровная изолиния. А для приаттаченного как? LP2992AIM5X-3.3.pdf
  7. Друзья, с свой проект я заложил внешний ЦАП, а для него отдельное питание с помощь ldo, позиционируемого как прецизионный, с пульсациями не более 1%. Да и сам LDO питается от другого LDO, дающего 5 вольт. Почему так сделано? На линию 3.3 вольт не посадить, так как мне необходимы 3.3 вольта, да и много чего висит на 3.3 вольт, Шумов достаточно. На 12 вольт, то есть ко входному питанию - боюсь что греться будет. А так, есть у меня 12->5 вольт преобразователь, на 5 вольтовом линии относительно спокойно, вот я туда это LDO и поселил. Напряжение и пульсаций меняю осциллографом Hantek. В итоге, на 3.3 вольтах 150-180 мВ пульсаций. А ожидалось 33 мВ. Что я сделал - посмотрел что творится на обычной батарейке. На батарейке пуьэльсации 35 мВ. Возникают вопросы. Какой величины должны быть собственные шшумы АЦП осциллографа? Какие шумы у батарейки и есть ли они вообще? 35 мВ - это шумы батарейки или собственные шумы осциллографа? Ну и 150 мВ на ldo - это нормально? Конденсаторы выбраны согласно даташиту, расположены максимально близко к микросхеме
  8. Вот кстати, обратил внимание на странный факт - после того, как я выключаю отладку, кейл фокусирует рабочее окно на файле .S и в тексте имеющегося там кода напротив некоторых строк стоят брейкпоинт, хотя я их туда не ставил. Я убираю, но спустя какое то время они появляются вновь.
  9. Иными словами, если описанный казус у меня происходит, то это однозначно дело рук асмемблерного кода? А компилятор не может глюкануть и при переваривания С кода родить такую команду?
  10. То есть, искать функцию, адрес которой ближе всего к 08000Е8С и при этом меньше его? Пардон, а какая такая команда на С приводит к остановке? Ассемблерных вставок, где могла бы быть такая команда, я вроде бы не видел...
  11. Спасибо, помогло. Следующая проблемка. /*---------- -----------*/ #define USBH_DEBUG_LEVEL 0U #if (USBH_DEBUG_LEVEL > 0U) #define USBH_UsrLog(...) do { \ printf(__VA_ARGS__); \ printf("\n"); \ } while (0) #else #define USBH_UsrLog(...) do {} while (0) #endif Так выводятся отладочные сообщения. Для этого нужно включить DEBUG_LEVEL, присвоить ему значение больше нуля. Как только я это делаю, после старта проц несколько раз останавливается при старте. Еще до обращения к библиотеке USB То есть, можно поставить брейкпоинт здесь и до его срабатывания не доходит. Только после трех нажатий "Run". А дальше все как обычно, работа без проблем. Во время остановки в ассемблерном окне вот что Причем, если где-нибудь до инициализации USB поставить while(1) и компилятор поймет, что до USB дело не дойдет, проблема исчезает. То есть строки #define USBH_UsrLog(...) do { \ printf(__VA_ARGS__); \ printf("\n"); \ } while (0) создают проблему не своим действием, но своим присутствием. Проблема эта отсутствует на F746 камне на плате Discovery, в проекте сгенерированном кубом. Проблема эта присутствует на H743 камне на самопальной плате, в проекте сгенерированном кубом. Исходя из этого, полагаю, куб ни при чем, плата, думаю тоже, значит какая-то особенность 743 камня, не учтенная в библиотеке USB Что делать и кто виноват?
  12. STM32H743 и USB_HS

    Надо было всего-навсего отключить оптимизацию. И все пошло. С USB хостом все хорошо. Дошел до записи в файл - не удается открыть файл, FATFs возвращает соответствующую ошибку.
  13. Друзья, вчера меня ввёл в ступор процесс отладки. Очень странная проблема. Есть некая функция ( USBH_class_request, не ручаюсь за точность, это функция из библиотеки USB host для Stm32, камень - н743). Размещаю в ней брейкпоинт, он не срабатывает. Долго думал, что по какой-то причине функция не вызывается, но нет - поставил брейкпоинт раньше, и пошагово шёл от команды к команде и в итоге отладчик в функцию зашёл. Как найти причину? Среда разработки Keil. Отладчик - stlink 2.0
  14. STM32H743 и USB_HS

    У меня другая теперь проблема request class не проходит... Причём какие-то странности с отладкой. Ставлю в функцию брейкпоинт - не срабатывает. Ставлю брейкпоинт чуть раньше и трассирую пошаговое - отладчик заходит в функцию. Но это наверное отдельный вопрос... Нашел
  15. STM32H743 и USB_HS

    Дошел вот до чего phost->pActiveClass->pData = (MSC_HandleTypeDef *)USBH_malloc(sizeof(MSC_HandleTypeDef)); Не выделяется память по USBH_malloc. Поступил радикально - заменил на статическую память - драйвер регистрируется. Но есть ощущение некоего костыля...Почему в этой библиотеке проблемы с выделением памяти?
  16. STM32H743 и USB_HS

    Друзья, помогите вот с чем. Вот вывод отладочных сообщений #if (USBH_DEBUG_LEVEL > 1U) #define USBH_ErrLog(...) do { \ printf("ERROR: ") ; \ printf(__VA_ARGS__); \ printf("\n"); \ } while (0) Пытаюсь перенаправлять это в UART int fputc(int ch, FILE *f) { while((UART7->ISR & UART_IT_TXE)==0) UART7->TDR=ch; return ch; } В результате в порт вываливается куча символов "U" и Терминал отрубается. Что не так?
  17. STM32H743 и USB_HS

    А вы отлаживали? Функция USBH_Process какие сообщения успевает выдать?
  18. STM32H743 и USB_HS

    Схему usb_hs выложите. Трассировку покажите.
  19. STM32H743 и USB_HS

    Да. FS я не пробовал, он у меня не разведен, подаваться куда-то к плате, пытаясь соблюсти равенство длин - я не стал заморачиваться
  20. STM32H743 и USB_HS

    Что значит оно? Сама микросхема наверное работает, раз у меня доходит до device_attached и немного дальше. А вот "оно", если называть этим словом целостный проект, не работает. Так FS или HS? Что именно заработало?
  21. STM32H743 и USB_HS

    Оказывается, не было подключено прерывание... Подключил, процесс пошел дальше, но не завершается. Получаю сообщение "Invalid Class Driver". Или "Device not supporting %s class". Класс же при инициализации подключается без ошибок if (USBH_RegisterClass(&hUsbHostHS, USBH_MSC_CLASS) != USBH_OK) { Error_Handler(); } Это как победить?
  22. STM32H743 и USB_HS

    Добрый вечер, друзья. Загрузил я в плату F746 Discovery пример USB Host Mass Storage Class, в режиме HS (на плате есть USB PHY) подключил флешку - все нормально, читается, пишется. То есть на заведомо исправной плате проверил заведомо исправный код. Руководствуясь этим же примером склепал такой же проект для самопальной платы на H734. Сразу не заработало. Камень другой и библиотека USB, которую калокуб копирует в папку, немного другая. Анализирую работу функции USBH_Process В процессе жизнедеятельности она выплевывает в "эфир" следующие сообщения USBH_UsrLog("USB Device Connected"); USBH_UsrLog("USB Device Reset Completed"); Далее, pHost->gState становится равным HOST_DEV_ATTACHED, а дальше тишина. Я что хочу спросить - меня пока не интересуют причины и методы решения этой проблемы. Я загрузил этот код чтобы убедиться в правильности проектирования и трассировки узла USB_PHY. И вопрос мой такой - могу ли я, учитывая получение вышеуказанных сообщений от системы, считать, что аппаратная часть этого узла работоспособна и проблема скорее в коде? Дело в том, что переработал первую версию платы и хочу ее перезаказать, а USB_PHY - это единственный узел, в правильности проектирования и трассировки которого я не убедился на практике. Работа с флешкой у меня сейчас не на первом мести и я хочу понять, могу ли я эту проблему отложить на потом и заказывать плату, или же возможны проблемы в плате, которые нужно решать сейчас. Что скажете?
×
×
  • Создать...