|
USB + mass storage on stm32f107vc |
|
|
|
Jun 26 2012, 11:33
|
Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997

|
Помогите разобраться с usb. Имеется отладочная плата sk-mstm32f107. На ней есть 2 разъема USB. B для питания платы. А хочу использовтаь для связи контроллера с обычной флэшкой, например для загрузки бута. Вобщем, задача такая, подключить флэшку к плате и прочитать с нее файл. Но возникло куча вопросов: 1. Я так понимаю, что флэшка может быть только слэйвом? Значит необходимо конфигурировать юсб на плате как мастер (хост)? 2. Как настроить юсб? 3. Как настроить ноги МК?? 4. Как настроить прерывания? 5. В каком виде приход кадр и где его можно прочитать? Как узнать, пришел ли кадр? 6. Как мой хост узнает, что к нему подключена флэшка?
Ну и далее, вопросы, касающиеся того, как можно прочитать файл с флэшки, как можно найти нужный файл и т.д.
Если кто-то может, разложить по полочкам, пжлст, обьясните новичку. Читаю от википедии до даташита, туговато идет. Буду благодарна за примеры.
Сообщение отредактировал batisto4ka - Jun 26 2012, 11:37
|
|
|
|
|
Jun 26 2012, 11:58
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(batisto4ka @ Jun 26 2012, 14:33)  1. Да. 2 ... 6 и все прочее. Ищите примеры проектов для USB (и не только) на ваш МК (на сайте ST и на диске, который шел с отладочной платой), читайте спецификацию USB, а также книжку Гука "Шины PCI, USB и FireWire" и книгу Jan Axelson про Mass-Storage, после чего пробуйте разобраться в примерах. Если ранее не работали с МК - разбирайтесь сначала в простейших вещах, потом беритесь за USB (тем более - за хост (!!!!!)). Сразу скажу, что задача очень сложная, так что на быстрый результат не надейтесь ... P.S. Альтернатива - купить отладочную плату с Linux, там все необходимое уже написано. Останется только разобраться, как это применить в своем проекте. Возможно, этот путь окажется для вас подходящим. Естественно, на вашем МК Linux не запустится, посему плату нужно покупать на другом МК. Например, на ARM9: http://www.starterkit.ru
Сообщение отредактировал IgorKossak - Jun 26 2012, 14:25
Причина редактирования: бездумное цитирование
|
|
|
|
|
Jun 26 2012, 12:07
|
Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997

|
Цитата(kovigor @ Jun 26 2012, 14:58)  1. Да. 2 ... 6 и все прочее. Ищите примеры проектов для USB (и не только) на ваш МК (на сайте ST и на диске, который шел с отладочной платой), читайте спецификацию USB, а также книжку Гука "Шины PCI, USB и FireWire" и книгу Jan Axelson про Mass-Storage, после чего пробуйте разобраться в примерах.
Если ранее не работали с МК - разбирайтесь сначала в простейших вещах, потом беритесь за USB (тем более - за хост (!!!!!)). Сразу скажу, что задача очень сложная, так что на быстрый результат не надейтесь ... С МК работаю года 3. Работала с простыми интерфейсами USART,CAN,SPI. Вот добралась до USB.
|
|
|
|
|
Jun 26 2012, 13:07
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 19-02-07
Пользователь №: 25 487

|
ST все уже сделал за нас. Достаточно скачать stm32_f105-07_f2xx_usb-host-device_lib.zip и внимательно изучить. Там есть примеры, в т.ч. и host
|
|
|
|
|
Jul 2 2012, 07:04
|
Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997

|
Цитата(brag @ Jun 27 2012, 13:54)  Мой совет - начните с usb device. хост гораздо сложнее и без опыта реализации девайса хост не сделаете. загляните в соседнюю ветку про аналогичную задачу, там я еще немного писал про усб. Прошу помочь примером. Я не прошу скидывать все описание юсб для хоста.мне просто нужно понять хотя бы настройку в данный режим стшки. 1. Настройка тактового генератора для юсб. 2. Настройка GPIO. 3. Настройка перрываний. Хотя бы чтобы можно было к плате sk-mstm32f107 подсключить флэшку и просто послать запрос и получить ответ, что за устройство подключено. Вот в примерах ничего не понятно. Наример настройка портов ввода/вывода: Код GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; 1.Что это за GPIO_OType,GPIO_PuPd. В стандартной библиотеке периферии версии 3,5 этих полей структуры инициализации портов ввода/вывода нет. 2.Далее вопрос по поводу выводов. Непонятно, как настраивать питание шины юсб. линии питания должны быть поднянуты к 5 вольтам или устанавливаться на ногах стшки? Питает хост или дэвайс? 3.Как обратиться к буфферу памяти, куда считываются данные? 4.По каким признакам можно настроить прерывания? 5. Как определить, подключено ли устройство к шине или нет? По какому-то прерыванию? Или периодически как-то опрашивать шину, посілая куакую-то команду и ожидая ответа?
Сообщение отредактировал batisto4ka - Jul 2 2012, 07:22
|
|
|
|
|
Jul 2 2012, 07:58
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(batisto4ka @ Jul 2 2012, 10:04)  1.Что это за GPIO_OType,GPIO_PuPd. В стандартной библиотеке периферии версии 3,5 этих полей структуры инициализации портов ввода/вывода нет. 2.Далее вопрос по поводу выводов. Непонятно, как настраивать питание шины юсб. линии питания должны быть поднянуты к 5 вольтам или устанавливаться на ногах стшки? Питает хост или дэвайс? 3.Как обратиться к буфферу памяти, куда считываются данные? 4.По каким признакам можно настроить прерывания? 5. Как определить, подключено ли устройство к шине или нет? По какому-то прерыванию? Или периодически как-то опрашивать шину, посілая куакую-то команду и ожидая ответа? 1. Просмотрите .h - файлы, имеющиеся в скачанном вами архиве, а также .c - исходники на предмет обнаружения этих имен. 2. Придется глубоко вникать в исходники и в документацию на ваш МК. Другого пути нет. Кстати, почему вы именно ST выбрали ? Неужели не было ничего попроще ?
|
|
|
|
|
Jul 2 2012, 08:20
|
Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997

|
Цитата(kovigor @ Jul 2 2012, 10:58)  1. Просмотрите .h - файлы, имеющиеся в скачанном вами архиве, а также .c - исходники на предмет обнаружения этих имен. 2. Придется глубоко вникать в исходники и в документацию на ваш МК. Другого пути нет. Кстати, почему вы именно ST выбрали ? Неужели не было ничего попроще ? 1.Пример компилируется с ошибками 2. Нужно разобраться с юсб только для stm32f107 и проверить на отладочной плате.
|
|
|
|
|
Jul 2 2012, 11:04
|
Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997

|
Цитата(011119xx @ Jul 2 2012, 12:36)  GPIO_OType, GPIO_PuPd - это из STM32F4xx_DSP_StdPeriph_Lib_V1.0.0 В том то и дело, что нет описания в мануалах, как настроить порты для юсб, и в примере тоже. Сообщения об ошибках ..\..\..\..\Libraries\STM32_USB_OTG_Driver\inc\usb_regs.h(85): error: #20: identifier "__IO" is undefined
Сообщение отредактировал batisto4ka - Jul 2 2012, 11:09
|
|
|
|
|
Jul 2 2012, 11:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата 1. Настройка тактового генератора для юсб. 2. Настройка GPIO. 3. Настройка перрываний. Это самое простое, что может быть, и без примера чтения даташита должно хватить Цитата Хотя бы чтобы можно было к плате sk-mstm32f107 подсключить флэшку и просто послать запрос и получить ответ, что за устройство подключено. а вот это 80% работы  если это(device-дескриптор от флешки) получите, то все вопросы отпадут сами  Вообще пример использования otg в режиме device есть в соседней ветке кидал свой где-то, no без бибкиотек, чисто работа с регистрами.
|
|
|
|
|
Jul 2 2012, 11:51
|
Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997

|
Цитата(brag @ Jul 2 2012, 14:32)  Это самое простое, что может быть, и без примера чтения даташита должно хватить а вот это 80% работы  если это(device-дескриптор от флешки) получите, то все вопросы отпадут сами  Вообще пример использования otg в режиме device есть в соседней ветке кидал свой где-то, no без бибкиотек, чисто работа с регистрами. Кто-то может обьяснить или ткнуть носом. где в документации описаны назначения выводов ID,DP,DM, и как настраивать линии порта ввода-вывода?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|