Jump to content

    

korotaev

Участник
  • Posts

    74
  • Joined

  • Last visited

Everything posted by korotaev


  1. Не могу найти отечественные микроконтроллеры со встроенным контроллером SD карты (SDIO интерфейс). Они есть в принципе? Смотрел документацию на клоны STM32xxx, там не нашёл ничего про SD карты. Оптимально нужен наш отечественный микроконтроллер или процессор способный писать на SD карту со средней скоростью 5 МБайт/c.
  2. Всем ответившим ОГРОМНОЕ спасибо.
  3. Не могу ни найти, ни приобрести контакты для разъёмов Amphenol серии 62IN.., 62GB. Клонов этих разъёмов я не нашёл. Приобрести разъёмы стало проблематично. Решено попробовать их изготовить самим. Корпуса разъёмов, в принципе, изготовить можем, а контакты вроде бы пока нет. Может быть, кто-то обладает информацией как выйти на китайского или российского изготовителя подобных контактов для разъёмов, чтобы они изготовили контакты по образцу или по РКД?
  4. 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. Подскажите, кто знает в чём засада.
  5. STM32H743 без встроенного HS, я подключаю внешний HS PHY по ULPI. Претензий к USB нет. Я получаю пропускную способность USB примерно 26 МБайт/сек. Вся загвоздка в работе с SD картой. DMA механизм использует так называемый internal DMA, который в работе с SD использует только память AIX SRAM (только её!!!), на которую надо натравить USB device.
  6. Спасибо за информацию. Я всё-таки про микроконтроллер STM32H743ii ... Никак не могу увеличить скорость чтения/записи.
  7. Mantech, скажите, пжл, в режиме USB mass stotage какие скорости записи/чтения одного большого файла Вы получаете? Andreas1, можно задать Вам несколько вопросов на личную почту?
  8. Хочу заменить поворотный переключатель ПГ2-4П3НК (К - это ручка "клювик") на меньший по размеру. Крепление переключателя на панель с помощью гайки, а не пайка в плату. В принципе, нужно 4 положения и 2 направления, но крайне желательно с ручкой "клювик" и качество не совсем уж хуже чем у ПГ2. Не нашёл ничего кроме NKK миниатюрных, но там только круглые ручки и пайка в плату. Кто знает - помогите.
  9. Нашёл в обсуждении: для типовой паяльной маски толщиной 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.
  10. Не нашёл значение теплопроводности защитной маски (зеленки) RS2000 и ей подобным. Кто знает где найти, пжл, подскажите?
  11. Подтягивающие резисторы стоят, длина линий связи SD карты с микроконтроллером примерно 5 см, выровнены на +/- 1 мм.
  12. Попробовал подать разные комбинации частот на ядро SDMMC (Kern) и на SD карту (SDMMC_CK). Частоту для SD карты контролировал осциллографом Kern/SDMMC_CK: 200/50 МГц, 50/50 МГц, 2/2 МГц (именно два/два МГц). Получил удручающий и совсем неожиданный результат. Скорость записи в режиме Polling одинаковая для всех указанных комбинаций - 350...500 кБайт/сек. ДМА режим также не улучшил скорость записи. Что-то явно делаю не так? Голова уже скоро взорвётся.
  13. По документу AN5200 в Кубе в КлокКонфиге "to SDMMC1" это клок узла, отвечающего за работу с SDMMC? A клок на карту SDMMC_CK выбирается делителем этой частоты? Я попробовал подать частоту на встроенный контроллер равную 120 МГц (вроде можно до 200 МГц), а на карту клок, равный 30 МГц. Так Инициализация карты выдала ошибку.
  14. Free Device Monitoring Studio. Пользуюсь крайне редко. Проблем с USB уже давно нет. Генерю код Кубом, потом совсем немного дорабатываю USB код для своей задачи. В устройстве (в котором не могу сделать SD быстрым в режиме флэшки) с драйвером libUSB на стороне ПК получаю скорости передачи данных до 26 МБайт/сек.
  15. Посмотрел осциллографом на шину USB. При записи файлов с ПК на масс сторедж вижу на USB по два коротких пакета через каждые 2 микросекунды. Т.е. Проводник отправляет свои запросы часто, а тормозит обмен данными (SD карта + STM32H743). Вернее сказать, криво написанный мною код.
  16. Вы не смогли повысить скорость записи?
  17. Уже и посмотрел USB сниффером: "USB HS v.2.0". Непонятна большая незаполненность трафика при обмене данными: при записи 5%, при чтении примерно 15%. Andreas1, скажите, пжл, Вы файлы на свой mass storage (на STM32h743) пишите/читаете средствами windows, например, проводником или своей программой?
  18. Спасибо за ответы. Обнадёжили. USB в HS. Устройство не композитное (USB флэшка). На всякий случай проверю настройки ещё раз.
  19. 1. Это у Вас STM32H743? 2. Как я писал ранее для масс сторадж на STM32F437 с SPL и БЕЗ транслятора уровня с клоком всего 37.5 МГц для SD карты я спокойно получаю 8 Мбайт/с для чтения. 3. Для STM32H743 использую CubeMx, т.к. SPL не поддерживает STM32H743. Для SD у него iDMA (наверное, аппаратный). Разрешил Icash и Dcash. В функциях read и write для mass storage применил CleanCash и InvalidateCash с выравненными адресами как в примерах. Скорость чтения и записи не изменились. Читаю, пишу один 300 Мбайтный файл. Cигналы смотрю на выводах SD карты.
  20. С DMA без кеш заработал. Скорости чтения, записи примерно такие же как с polling. Сейчас с ДМА без использования кеш при записи Проводником (Win10) на карточку вижу один пакет данных каждую миллисекунду. Длительность пакета примерно 50 мкс. 950 мкс свободно от обмена данными. Т.е. траффик примерно 5%.
  21. Кеш не использую. Может для ДМА требуется использовать кеш? Думаю, что необязательно.
  22. Clock смотрю осциллографом, биты меняются по всем 4м линиям шины данных. При инициал. карты частота 30 кГц, потом выходит на нужную 37.5 МГц. Т.е. всё как надо. Всё-таки хочу перейти на DMA. Пока с DMA есть проблемы. Диск определяется, но сразу требует "форматировать диск", хотя с диском всё в порядке. C Polling диск определяется и можно записывать и читать файлы через проводник win10. Вопрос: никто не подскажет почему с DMA ОС требует отформатировать уже отформатированный диск?
  23. H743 в 5 раз медленнее чем F437, а не наоборот как Вы указали! H743 - 1.5 Мбайта/сек, F437 - 7 Мбайт/сек.
  24. Трансивер - это и есть дополнительная плата. В Cube она так называется. В приборах этой платы нет. Для обоих приборов используется SDIO 4 бита. Размер блоков одинаковый. В режиме флэшки прибор ничего не делает дополнительно, т.е. является только флэшкой.
  25. STM32H743 mass storage

    STM32H743. Чтение SD карты в режиме Polling. Два прибора. Один на базе STM32F437, другой- STM32H743. Для каждого прибора скорость обмена данными по USB каналу не менее 28 Мбайт/сек. В каждом стоят одинаковые SD карты UHS-I без трансивера. ПО для STM32F437 с использованием SPL, STM32H743 – CubeMX v.6.1, пакет для микроконтроллера STM32Cube FW_H7 V1.8.0. Имею для прибора на STM32H743 очень маленькую скорость чтения данных в режиме USB флэшки. Проверял так. C приборов в режиме mass storage (Polling) читается один и тот же файл размерностью 256 Мбайт. Клок для карточек в приборах одинаковый. Средняя скорость чтения для STM32F437 примерно 7 Мбайт в секунду, для STM32H743 – всего 1.5 Мбайт в секунду. Для многих это не новость. Есть подобные сообщения на эту тему. Вопрос: можно ли увеличить скорость чтения для H743, если перевести обмен данными в режим DMA (iDMA)?