Jump to content

    

korotaev

Участник
  • Content Count

    71
  • Joined

  • Last visited

Community Reputation

0 Обычный

About korotaev

  • Rank
    Участник

Recent Profile Visitors

955 profile views
  1. STM32H743, mass storage USB device, Windows. В режиме Polling работает, но скорости маленькие (запись 300 – 600 кБайт/сек, чтение в среднем 1.5 МБайт/сек). Проблем с USB железом нет. Скорость передачи данных до 28 МБайт/сек. В режиме DMA не работает. Код внизу. Проводник открывает Окно диска и дополнительно выскакивает окно с предложением "Форматировать диск". В файле “usbd_storage_if.c” int8_t STORAGE_Read_HS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len) { int8_t ret = USBD_FAIL; RxStatus0 = 0; //глобальная переменная if (BSP_SD_ReadBlocks_DMA(0, (uint32_t*)buf, (uint32_t)blk_addr, blk_len) == HAL_OK) { //while (RxStatus0 == 0) {}; //Ожидаю Callback if (Wait_SDCARD_1_Ready() == HAL_OK) ret = USBD_OK; } return ret; } void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd) { if (hsd->Instance == SDMMC1) { RxStatus0 = 1; } } Очень странный момент: - Если раскомментировать while (RxStatus0 == 0) {}; //Ожидаю Callback , то программа виснет на этой строке, т.е. прерывания SDMMC1 и вызов HAL_SD_RxCpltCallback не происходят. - Если закомментировать эту строку, то прерывания SDMMC1 и вызов HAL_SD_RxCpltCallback не происходят также. - Однако, если поставить точку останова на где-нибудь после этой строки, программа остановиться на этой точке и потом продолжить программу, то прерывания и вызов callback происходят. Прерывание и callback вызываются только после выхода из функции STORAGE_Read_HS. Видел примеры, где внутри STORAGE_Read_HS опрашивается состояние RxStatus0, которое изменяется в callback. И нет никакого зависания. Более того, у меня DMA версия работала, но также с маленькими скоростями. Теперь не могу вернуться хотя бы к работающему примеру с DMA. Подскажите, кто знает в чём засада.
  2. STM32H743 без встроенного HS, я подключаю внешний HS PHY по ULPI. Претензий к USB нет. Я получаю пропускную способность USB примерно 26 МБайт/сек. Вся загвоздка в работе с SD картой. DMA механизм использует так называемый internal DMA, который в работе с SD использует только память AIX SRAM (только её!!!), на которую надо натравить USB device.
  3. Спасибо за информацию. Я всё-таки про микроконтроллер STM32H743ii ... Никак не могу увеличить скорость чтения/записи.
  4. Mantech, скажите, пжл, в режиме USB mass stotage какие скорости записи/чтения одного большого файла Вы получаете? Andreas1, можно задать Вам несколько вопросов на личную почту?
  5. Хочу заменить поворотный переключатель ПГ2-4П3НК (К - это ручка "клювик") на меньший по размеру. Крепление переключателя на панель с помощью гайки, а не пайка в плату. В принципе, нужно 4 положения и 2 направления, но крайне желательно с ручкой "клювик" и качество не совсем уж хуже чем у ПГ2. Не нашёл ничего кроме NKK миниатюрных, но там только круглые ручки и пайка в плату. Кто знает - помогите.
  6. Нашёл в обсуждении: для типовой паяльной маски толщиной 20-25 мкм - теплопроводность примерно равна 0.2 Вт/(метр*Кельвин). https://electronics.stackexchange.com/questions/449224/heatsink-on-underside-of-pcb Также есть информация в документе https://www.ti.com.cn/cn/lit/an/snoa967a/snoa967a.pdf?ts=1615973010681&ref_url=https%3A%2F%2Fwww.google.com%2F Теплопроводность маски такая же как у текстолита FR-4.
  7. Не нашёл значение теплопроводности защитной маски (зеленки) RS2000 и ей подобным. Кто знает где найти, пжл, подскажите?
  8. Подтягивающие резисторы стоят, длина линий связи SD карты с микроконтроллером примерно 5 см, выровнены на +/- 1 мм.
  9. Попробовал подать разные комбинации частот на ядро SDMMC (Kern) и на SD карту (SDMMC_CK). Частоту для SD карты контролировал осциллографом Kern/SDMMC_CK: 200/50 МГц, 50/50 МГц, 2/2 МГц (именно два/два МГц). Получил удручающий и совсем неожиданный результат. Скорость записи в режиме Polling одинаковая для всех указанных комбинаций - 350...500 кБайт/сек. ДМА режим также не улучшил скорость записи. Что-то явно делаю не так? Голова уже скоро взорвётся.
  10. По документу AN5200 в Кубе в КлокКонфиге "to SDMMC1" это клок узла, отвечающего за работу с SDMMC? A клок на карту SDMMC_CK выбирается делителем этой частоты? Я попробовал подать частоту на встроенный контроллер равную 120 МГц (вроде можно до 200 МГц), а на карту клок, равный 30 МГц. Так Инициализация карты выдала ошибку.
  11. Free Device Monitoring Studio. Пользуюсь крайне редко. Проблем с USB уже давно нет. Генерю код Кубом, потом совсем немного дорабатываю USB код для своей задачи. В устройстве (в котором не могу сделать SD быстрым в режиме флэшки) с драйвером libUSB на стороне ПК получаю скорости передачи данных до 26 МБайт/сек.
  12. Посмотрел осциллографом на шину USB. При записи файлов с ПК на масс сторедж вижу на USB по два коротких пакета через каждые 2 микросекунды. Т.е. Проводник отправляет свои запросы часто, а тормозит обмен данными (SD карта + STM32H743). Вернее сказать, криво написанный мною код.
  13. Вы не смогли повысить скорость записи?
  14. Уже и посмотрел USB сниффером: "USB HS v.2.0". Непонятна большая незаполненность трафика при обмене данными: при записи 5%, при чтении примерно 15%. Andreas1, скажите, пжл, Вы файлы на свой mass storage (на STM32h743) пишите/читаете средствами windows, например, проводником или своей программой?
  15. Спасибо за ответы. Обнадёжили. USB в HS. Устройство не композитное (USB флэшка). На всякий случай проверю настройки ещё раз.