Easyelectronics.ru

Электроника для всех
Текущее время: 22 сен 2018, 14:33

Часовой пояс: 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
Сообщения: 55
Откуда: Украина
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 Кб | Просмотров: 406 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 382
Чего, чего? Скорость передачи 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 Кб | Просмотров: 342 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 13:14 
Заглядывает иногда

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


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

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 382
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
Сообщения: 382
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 Кб | Просмотров: 312 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июл 2018, 18:11 
Старожил
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 2263
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
Сообщения: 382
У вас на скриншоте всё верно, но не соответствует тому что в коде. 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
Сообщения: 382
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
Сообщения: 382
Частоту кварца проверили?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 382
Ну осталось только частоту процессора проверить. Поделить в 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
Сообщения: 382
Остановите программу под отладчиком и сделайте дамп регистров RCC


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

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2263
Цитата:
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 часов


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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