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

    
Да хоть 32кГц, без разницы: это всего лишь частота запуска лютой скорости фронта в линию.

И что с того? Ну создали жуткие помехи в радиоэфире. Не вижу причин не работать - когда придет время снимать данные на такой низкой скорости все уже устаканится.

Единственное, что приходит на ум - выброс напряжения в момент переходного процесса, превышающий допустимый.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
...когда придет время снимать данные

...карта уже выставит их 3 раза из-за "звона" на CLK, например (те самые "пропуски" данных, отмеченные ТС).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Зачем VERY_HIGH-то? Чтобы гарантированно не работало?

 

Пробовал все линии и по-очереди делать в LOW. Без бусины тоже не работало, даже при CLK < 1 МГц. И это Куб изначально выставил, а не я :)

 

...карта уже выставит их 3 раза из-за "звона" на CLK, например (те самые "пропуски" данных, отмеченные ТС).

 

Был бы у меня глаз осциллограф, можно было посмотреть форму сигнала...... Соглашусь с ув. aaarrr, ферритовая бусина как раз душит СВЧ-всплески, от которых карта может несанкционированно передёргиваться.

 

Это макет. Сделать короче уже трудновато, много другой периферии висит.

На релизе будет печатная плата с земляными полигонами и всё как надо. Но футпринт заложить на резистор/бусину не помешает.

 

Мне удалось повысить SD CLK до 48 МГц - карта работает, прикрутил FatFs (не та, то с Куб-ом идёт, а свою отлаженную версию). MP3-файл декодируется нормально.

На 96 МГц уже не работает.

Никакими командами перевода в High Speed Mode не пользовался, просто увеличил CLK до 48 МГц.

Все три карты работают.

 

Спрашивается, зачем нужна команда для перевода в High Speed Mode, когда она при 3,3V нормально работает на быстром клоке 48..50МГц ?

 

В файле stm32h7xx_hal_sd.c сделать изменения в функции HAL_SD_ConfigWideBusOperation():

//..............
#if 0    
   /* Check if user Clock div < Normal speed 25Mhz, no change in Clockdiv */
   if(hsd->Init.ClockDiv >= SDMMC_NSpeed_CLK_DIV)
   {
     Init.ClockDiv = hsd->Init.ClockDiv;
   }
   else
   {
     if(hsd->SdCard.CardSpeed == CARD_ULTRA_HIGH_SPEED)
     {
       Init.ClockDiv = hsd->Init.ClockDiv;
     }
     else
     {
       /* No High speed SD card */
       Init.ClockDiv = SDMMC_NSpeed_CLK_DIV;
     }
   }
#endif

   Init.ClockDiv = hsd->Init.ClockDiv; //!!! снимаем ограничение на SD CLK

   SDMMC_Init(hsd->Instance, Init);
//.......

Изменено пользователем __inline__

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заимплементировал SDIO в работе декодера видео + FLAC.

 

Переписал Хало-Куб для работы с картами в HIGH_SPEED Mode. У Куба 2 крайности: либо карта в Standard Mode, либо в Ultra High Speed Mode (с понижением питания до 1.8V).

Мне же Ultra HS Mode не подошёл, так как питание карты 3.3V.

Поэтому сделал поддержку High Speed Mode (3.3V).

 

Частотомер выдал на SDIO CLK 48,6 МГц (вместо теоретических 50 МГц).

 

Подробнее тут: http://vrtp.ru/index.php?showtopic=29688&st=150

Там же исходники (High Speed Mode отключен, включить его - раскомментарить последнюю строку в main.c).

 

Видео в действии: http://www.youtube.com/watch?v=s2a_DqrIFaw

Изменено пользователем __inline__

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ферритовую бусину на SDIO CLK убрал на печатной плате (4-слойка, 2 внутренних полигона Vcc и GND), все карты работают. Даже на 48 МГц (HSM)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация