Easyelectronics.ru

Электроника для всех
Текущее время: 16 ноя 2018, 12:52

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 02 июл 2018, 20:20 
Заглядывает иногда

Зарегистрирован: 25 сен 2017, 10:57
Сообщения: 83
Откуда: Украина
Kvanto
Для успешного прохождения теста на флешке должен быть файл file.bin любого содержания (у меня размером 2Мбайта) . Вывод информации идет в SWO, сначала выводится полный список всех файлов, затем тест скорости записи и чтения, затем тест копир. файла file.bin.
Проект для Keil - https://dropmefiles.com/oPmKo


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 03 июл 2018, 11:52 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
AlexTA писал(а):
Kvanto
Для успешного прохождения теста на флешке должен быть файл file.bin любого содержания (у меня размером 2Мбайта) . Вывод информации идет в SWO, сначала выводится полный список всех файлов, затем тест скорости записи и чтения, затем тест копир. файла file.bin.
Проект для Keil - https://dropmefiles.com/oPmKo

AlexTA, у Вас к сожалению проект на HAL написан, я просто SPL использую, думаю пока не буду перекраивать, а то закопаться можно в этом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 03 июл 2018, 12:35 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
Все-таки подозрительно, что параметры структуры:
Код:
typedef struct _BOTXfer
{
uint8_t MSCState;
uint8_t MSCStateBkp;
uint8_t MSCStateCurrent;
uint8_t CmdStateMachine;
uint8_t BOTState;
uint8_t BOTStateBkp;
uint8_t* pRxTxBuff;
uint16_t DataLength;
uint8_t BOTXferErrorCount;
uint8_t BOTXferStatus;
} USBH_BOTXfer_TypeDef;

не инициализированы. По сути во время выполнения функции USB_disk_read элементы данной структуры и определяют ключевые переходы статуса
Код:
typedef enum {
  USBH_MSC_OK = 0,
  USBH_MSC_FAIL = 1,
  USBH_MSC_PHASE_ERROR = 2,
  USBH_MSC_BUSY = 3
}USBH_MSC_Status_TypeDef;

из одного состояния в другое. А сейчас в USBH_BOTXfer все по нулям, поэтому статус не изменяется и равен USBH_MSC_BUSY = 3.


Вложения:
Снимок.JPG
Снимок.JPG [ 57.08 Кб | Просмотров: 419 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июл 2018, 17:00 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
Еще хотел уточнить, если на линии D+ и D- пачки импульсов проходят с периодом ~500 нс, а частота 48 МГц для тактирования USB OTG FS - это период ~21 нс, то видимо можно сделать вывод что тактирование настроено неверно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июл 2018, 17:58 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Чего, чего? Скорость передачи USB 2.0
- HighSpeed - 480 Мбит/c.
- FullSpeed - 12 Мбит/c.
- LowSpeed - 1.5 Мбит/c.

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 12:00 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
В моем случае получается скорость в районе 3,7 Мбит/с. То есть это уже ненормальная работа при режиме Full-speed?


Вложения:
Снимок1.JPG
Снимок1.JPG [ 83.8 Кб | Просмотров: 355 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 13:14 
Заглядывает иногда

Зарегистрирован: 25 сен 2017, 10:57
Сообщения: 83
Откуда: Украина
Kvanto
Сгенерируйте проект в CubeMx с поддержкой USB и перенесите настройки тактирования в свой проект, это будет самое простое решение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 15:42 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Kvanto писал(а):
То есть это уже ненормальная работа при режиме Full-speed?

Постом выше нормальная работа в FullSpeed, сами то как думаете, у вас похоже?

Что за чип у вас? Какой кварц?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 16:59 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
VladislavS писал(а):
Kvanto писал(а):
То есть это уже ненормальная работа при режиме Full-speed?

Постом выше нормальная работа в FullSpeed, сами то как думаете, у вас похоже?

Что за чип у вас? Какой кварц?

Амплитуда и форма очень похожи, а вот по длительности они различны. Этот сигнал появляется сразу после включения прерываний USB_OTG_BSP_EnableInterrupt. Сигнал идет все время без остановки вне зависимости от работы дебаггера, даже на брекпоинтах. Чип - STM32F105, кварц - 8 МГц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 17:14 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Kvanto писал(а):
Чип - STM32F105, кварц - 8 МГц.

Код:
  // ------------------ Тактирование -------------------------
  RCC->CR |= RCC_CR_HSEON; //Включаем HSE = 8 MHz
  while(!(RCC->CR & RCC_CR_HSERDY)); 
  //Задаём источники тактирования и прескалеры
  // SYSCLK = 72 МГц, USB = 48 МГц, PCLK1 = 36 МГц, PCLK2 = 72 МГц,  ADC = 12 МГц
  RCC->CFGR = RCC_CFGR_MCO_HSE | RCC_CFGR_USBPRE_1d5 | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_ADCPRE_DIV6 |
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV1 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSI;       
  RCC->CR |= RCC_CR_PLLON; //Включаем PLL
  while(!(RCC->CR & RCC_CR_PLLRDY));
  //Переключаемся на PLL с установленнными ранее прескалерами
  RCC->CFGR = RCC_CFGR_MCO_HSE | RCC_CFGR_USBPRE_1d5 | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_ADCPRE_DIV8 |
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV1 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;   
  RCC->CR &= ~RCC_CR_HSION; //Выключаем HSI
  RCC->CIR = 0;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:04 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
немного скорректировал значения по своему Clock Configuration в куб. Получилось следующее. Запустил, сигнал USB тот же самый, код зациклен там же. Без изменений вообщем.

Код:
void RCC_Init(void){
// ------------------ Тактирование -------------------------
  RCC->CR |= RCC_CR_HSEON; //Включаем HSE = 8 MHz
  while(!(RCC->CR & RCC_CR_HSERDY));
  //Задаём источники тактирования и прескалеры
  // SYSCLK = 72 МГц, USB = 48 МГц, PCLK1 = 36 МГц, PCLK2 = 72 МГц,  ADC = 36 МГц
  RCC->CFGR = RCC_CFGR_MCO_HSE | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_ADCPRE_DIV2 |
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSI;
  RCC->CR |= RCC_CR_PLLON; //Включаем PLL
  while(!(RCC->CR & RCC_CR_PLLRDY));
  //Переключаемся на PLL с установленнными ранее прескалерами
  RCC->CFGR = RCC_CFGR_MCO_HSE | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_ADCPRE_DIV2 |
              RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
  RCC->CR &= ~RCC_CR_HSION; //Выключаем HSI
  RCC->CIR = 0;
}


Вложения:
Снимок2.JPG
Снимок2.JPG [ 111.25 Кб | Просмотров: 325 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:11 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Мляха-муха, я вам готовый код дал, чего вы грязной лапой то его испортили?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:17 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
VladislavS писал(а):
Мляха-муха, я вам готовый код дал, чего вы грязной лапой то его испортили?

F105 - это ведь Connectivity Line, а в ней нет например RCC_CFGR_USBPRE_1d5 , вместо него RCC_CFGR_OTGFSPRE и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:21 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2450
Kvanto писал(а):
Еще хотел уточнить, если на линии D+ и D- пачки импульсов проходят с периодом ~500 нс, а частота 48 МГц для тактирования USB OTG FS - это период ~21 нс, то видимо можно сделать вывод что тактирование настроено неверно?
...
В моем случае получается скорость в районе 3,7 Мбит/с. То есть это уже ненормальная работа при режиме Full-speed?

Там на выходе - NRZI кодирование, длина одного бита = 1/12'000'000 с (для full speed). Точность интервалов должна быть не хуже ±0,25% .
В соседней теме я выкладывал картинку с пакетом USB. Кстати, вот она, ее тут честно прихватизировали (сплагиатили), гыгыгы. Одна клетка на нижнем окне = 200 нс, длительность бита прикиньте визуально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:27 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
У вас на скриншоте всё верно, но не соответствует тому что в коде. RCC_CFGR_PPRE1_DIV2 откуда вылезло? А 1d5 это x2 /3 как на скриншоте. Мне куб, кстати, АЦП запрещает на такую частоту включать.

BusMaster писал(а):
Кстати, вот она, ее тут честно прихватизировали (сплагиатили), гыгыгы.

Да, прошу прощения, она на форум уже загружена, не хотел лишнюю инфу на сервер грузить, место экономлю :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:35 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
BusMaster писал(а):
Там на выходе - NRZI кодирование, длина одного бита = 1/12'000'000 с (для full speed). Точность интервалов должна быть не хуже ±0,25% .
В соседней теме я выкладывал картинку с пакетом USB. Кстати, вот она, ее тут честно прихватизировали (сплагиатили), гыгыгы. Одна клетка на нижнем окне = 200 нс, длительность бита прикиньте визуально.

А есть ли вариант, что это еще не выход на режим full-speed, а предварительная установка частоты, или же в любой момент работы OTG_FS должно быть четко 12 Мбит/с +/- 0,25 %?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:44 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
VladislavS писал(а):
У вас на скриншоте всё верно, но не соответствует тому что в коде. RCC_CFGR_PPRE1_DIV2 откуда вылезло? А 1d5 это x2 /3 как на скриншоте.

RCC_CFGR_PPRE1_DIV2 - это делитель APB1 prescaler со значением HCLK divided by 2 - как на рисунке.
А RCC_CFGR_USBPRE_1d5 не видит компилятор вообще. У Вас видимо другой МК стоит , поэтому проходит код. Для F105 - это не пойдет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:47 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Kvanto, виноват, код от другого проца кинул. От 105 вот.
Код:
  // ------------------ Тактирование -------------------------
  RCC->CR |= RCC_CR_HSEON; //Включаем HSE
  while(!(RCC->CR & RCC_CR_HSERDY)); 
  //Задаём источники тактирования и прескалеры
  // SYSCLK = 72 МГц, USB = 48 МГц, PCLK1 = 36 МГц, PCLK2 = 72 МГц,  ADC = 12 МГц
  RCC->CFGR = RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_OTGFSPRE_2d3 | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 |
              RCC_CFGR_ADCPRE_DIV8 | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSI;
  RCC->CR |= RCC_CR_PLLON; //Включаем PLL
  while(!(RCC->CR & RCC_CR_PLLRDY));
  //Переключаемся на PLL с установленнными ранее прескалерами
  RCC->CFGR = RCC_CFGR_MCO_NOCLOCK | RCC_CFGR_OTGFSPRE_2d3 | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 |
              RCC_CFGR_ADCPRE_DIV8 | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
  RCC->CR &= ~RCC_CR_HSION; //Выключаем HSI
  RCC->CIR = 0; 


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:53 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
VladislavS писал(а):
Kvanto, виноват, код от другого проца кинул. От 105 вот.

Благодарю, запустил, все по-прежнему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 19:01 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Частоту кварца проверили?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 19:13 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
VladislavS писал(а):
Частоту кварца проверили?

да, кварц четко 8 МГц выдает на осциллографе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 19:48 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Ну осталось только частоту процессора проверить. Поделить в SysTick и подрыгать ногой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 09 июл 2018, 18:16 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 72
VladislavS писал(а):
Ну осталось только частоту процессора проверить. Поделить в SysTick и подрыгать ногой.

Если брать данную функцию за отсчет мкс-ных задержек:
SysTick_Config(SystemCoreClock / 1000000);
то получается, что пока таймер считает неверно - вместо 1 сек переключается раз в 3 сек.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 09 июл 2018, 22:04 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 535
Остановите программу под отладчиком и сделайте дамп регистров RCC


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 09 июл 2018, 22:27 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2450
Цитата:
SysTick_Config(SystemCoreClock / 1000000);

ога, систик у вас будет тикать на частоте 1 МГц! Если у вас системная 72 МГц, то через каждые 72 такта будет возникать прерывание от систика и ваш МК будет тормозить нипадеццки, потому что ему практически нечем дышать от дикого фона прерываний.
Во вторых, SystemCoreClock - значение по умолчанию, сколько было выставлено там, столько и будет. По умолчанию текстом прописано значение 8000000. Вам надо перед установкой систика вызвать ф-цию SystemCoreClockUpdate(), она запишет действующее значение SystemCoreClock. И еще перед этим надо визуально убедиться, что дефайновая константа HSE_VALUE (находится в файле stm32f10x.h) равна частоте вашего кварца, то есть 8000000.
Затем, если вы пытаетесь установть для систика частоту 1 Гц, то помните, что таймер систика - 24-битный, макс.значение 16'777'215. То есть, получить 1 сек. интервал можно не более чем от 16 МГц системной. Есть возможность использовать делитель 1:8, но в функции SysTick_Config нужно убрать бит SysTick_CTRL_CLKSOURCE_Msk.


Последний раз редактировалось BusMaster 09 июл 2018, 22:52, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Atomic-dm


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB