реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> помогите c USB в проекте на at91sam7, SPI, TWI, PLL, TC, USART реализовано
SavageForest
сообщение Sep 7 2010, 08:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



никак не могу прикрутить нормально УСБ к проекту. по УСАРТу все работает, но из-за его медленности возникают глюки.
вкратце о проекте:
1. 24-битный SPI интерфейс связан с ПЛИСкой, которая гоняет данные по разным девайсам
2. из TWI памяти при старте считываются параметры работы контроллера
3. PLL задает рабочую частоту для ПЛИСки (на интерфейс ниже)
4. TC генерирует прерывание на закачку/скачку данных (МК<->ПЛИС)
5. USART управляет всем этим безобразием (команды там всякие на запись, чтение, запрос состояния) это еще доработать нужно будет

так вот. я никак не могу прикрутить АТМЕЛовский стартовый СДС-конвертер к проекту. точнее он был взят за основу(стартап и функции УСБ), затем он был переделан на работу с SPI через PDP.
в дальнейшем планирую использовать как режим работы USB<->SPI конвертера через драйвер виртуального СОМ-порта (должно получиться что-то типа USB-SPI моста).
я уже недели 2 бъюсь над проблемой запуска USB в данном проекте.
прилагаю сам проект и схему обвеса USB. в реале на обвязке отсутствует светоИдиод и резюк обведенные желтым.
помогите люди добрые. может где в железе проблема? или в коде накосячил?
ЗЫ: сильно не пинайте за корявости в коде =)

при запкске проекта в дебаге следующее:
CODE
String: -- USB Device RET-CROSS Project 1.5 --
String: -- RET-CROSS v1.3 beta
String: -- Compiled: Sep 7 2010 10:36:16 --
String:
String:
String: ------PLL---------------
String: PLL PA 23
String: PLL configured on 0 Channel with 1000000 Hz
String: ------PLL---------------
String:
String: ------PLL---------------
String: PLL PA 2
String: PLL configured on 2 Channel with 1000000 Hz
String: ------PLL---------------
String:
String: ------TWI---------------
String: TWI Configuration
String: Using CKDIV = 0 and CLDIV/CHDIV = 55
String: Configuration succesful
String: ------TWI---------------
String:
String: reading configuration --->
String: --Readed from Addr 0
String: mode = 12
String: StartBit= 2
String: EndBit= 5
String: DataP1S = 1
String: DataP1E = 0
String: DataP2S = 0
String: DataP2E = 0
String:
String: Readed
String: ------SPI---------------
String: SPI interface configured with parameters:
String: CLK: 10000000 Hz
String: ChipSelectBefore: 0 msec
String: DelayBetween: 0 msec
String: ------SPI---------------
String:
String: ------USART-------------
String: USART Configuration
String: USART Interrupt 'RXRDY' Enabled
String: USART Configuration succesful
String: ------USART-------------
String:
String: ConfigureT2Recheck succesful
String: -I- CDCDSerialDriver_Initialize
String: USBD_Init
String: VBus configuration
String: VBUS conn
String: VBUS+
String: VBUS dconn
String: VBUS-
String: VBUS-
String: VBus configured
String: USBD_Connect
String: WAITING CONFIG!

после подключения VBUS:
Код
String:    VBUS conn
String:    VBUS+

при контакте PPUP:
Код
String:    Res S

после откоючения USB:
Код
String:    VBUS dconn
String:    VBUS-
String:    EoBRes CfgEpt0
String:    Susp
String:    Res S
String:    P
String:    
String:    Susp

далее все повторяется с "Resume callback" при втыкании USB.
самое страшное - винда девайс не видит!!! (юзаю USB View)
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  USB_at91sam7s_SPI.rar ( 281.9 килобайт ) Кол-во скачиваний: 23
 
Go to the top of the page
 
+Quote Post
SavageForest
сообщение Sep 8 2010, 04:11
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



неужели некому нечего написать?
приму любую критику и приму во внимание любое высказывание, ибо не знаю в какую сторону копать в данной ситуации.
помогите кто чем может.............
ПС: схему доработал и подцепил несчастный диод. теперь при соединении с УСБ он горит, а другой почему-то гаснет. вроде-бы должно быть наоборот =(

Сообщение отредактировал SavageForest - Sep 8 2010, 04:14
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Sep 8 2010, 06:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(SavageForest @ Sep 8 2010, 08:11) *
неужели некому нечего написать?
приму любую критику и приму во внимание любое высказывание, ибо не знаю в какую сторону копать в данной ситуации.
помогите кто чем может.............
ПС: схему доработал и подцепил несчастный диод. теперь при соединении с УСБ он горит, а другой почему-то гаснет. вроде-бы должно быть наоборот =(


Не понял чего вы хотели добиться такой кучей транзисторов/резисторов, но насколько я вижу VT1 и VT4 всегда находятся в одинаковых состояниях и одновременно открываются/закрываются при управлении сигналом PPUP.
Соответственно когда светодиод А погашен - оба транзистора закрыты, и 1.5кОм не подключено к 3.3В - винда не знает о подключенном устройстве.
Диод В (который вы добавили) естественно загорается, при подаче на него 5В от компьютера; кроме того при этом на VBUS появляется логическая единица.

Думаю вы не тем логическим уровнем подключаете 1.5кОм - смените полярность PPUP.
Go to the top of the page
 
+Quote Post
SavageForest
сообщение Sep 9 2010, 10:58
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



Цитата(_4afc_ @ Sep 8 2010, 10:54) *
Думаю вы не тем логическим уровнем подключаете 1.5кОм - смените полярность PPUP.

теперь проблема с определением VID PID и вообще самого девайса.
стандартный CDC проект атмела не определяется... т.е. винда видит что-то подключенное на fullspeed, но что не поймет. =(

CODE
Device Descriptor:
bcdUSB: 0x0000
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x00 (0)
idVendor: 0x0000
idProduct: 0x0000
bcdDevice: 0x0000
iManufacturer: 0x00
iProduct: 0x00
iSerialNumber: 0x00
bNumConfigurations: 0x00

ConnectionStatus: DeviceFailedEnumeration
Current Config Value: 0x00
Device Bus Speed: Full
Device Address: 0x00
Open Pipes: 0

контроллер(или винда - непонятно кто из ниx) после подключения девайса что-то шлет по УСБ. это видно по моргающему диоду на D+...
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 9 2010, 13:33
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Проверьте упаковку структур с дескрипторами. Проверьте порядок байт (если есть что-то больше байта в дескрипторах).
И я бы не стал вешать светодиоды на сигнальные линии USB.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
SavageForest
сообщение Sep 13 2010, 06:25
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



Цитата(Dron_Gus @ Sep 9 2010, 17:33) *
Проверьте упаковку структур с дескрипторами. Проверьте порядок байт (если есть что-то больше байта в дескрипторах).
И я бы не стал вешать светодиоды на сигнальные линии USB.
дело в том, что у меня не идет даже стандартный проект "usb-device-cdc-serial-project-at91sam7s-ek". естественно пины в board.h поменяны на нужные.
различные вариации с полярностью, подтяжкой, открытым коллектором пина на PPUP не дают желаемого результата.
устройство либо не определяется вовсе, либо в дескрипторах сплошные нули (как было описано выше).
пробовал и С диодом на D+ через транзистор, и БЕЗ них, и даже просто через 1,5к на 3,3в заводил (так в спецификации на USB интерфейс описано определение Full- и Low- speed). эффект - ОС что-то видит, но в дескрипторах нули.
осциллограмма показывает, что ПК шлет запрос дескрипторов на устройство 4 раза и, по всей видимости после прихода сплошных нулей, принимает решение о бесполезности дальнейшего опроса.
при обновлении списка USB устройств через USB View устройство не опрашивается (хотя должно, если оно хоть как то определено).

может я просто спалил трансивер??? =)

Сообщение отредактировал SavageForest - Sep 13 2010, 06:38
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 13 2010, 08:19
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Даже не знаю, что еще посоветовать. Уберите все фильтры с линий D+/D-.

Кварц тот же, что и в примерах?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
SavageForest
сообщение Sep 13 2010, 09:19
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



Цитата(Dron_Gus @ Sep 13 2010, 12:19) *
Даже не знаю, что еще посоветовать. Уберите все фильтры с линий D+/D-.

Кварц тот же, что и в примерах?
кварц как и полагается 18,432 МГц.
без фильтров такая-же история.

заметил один нюанс:
напряжение на D+ практически постоянно = 3.3 В
на тестборде наоборот - +3.3 В только при передаче данных, а в IDLE = 0 В (+- 50мВ)
пробовал обвязку кинуть и на D-, результат тот же.
уже незнаю что делать.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 13 2010, 14:11
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



А samba работает? Для кварца 18.432 PLL правильно настроена? 48 (96) МГц?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
SavageForest
сообщение Sep 14 2010, 09:25
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



Цитата(Dron_Gus @ Sep 13 2010, 18:11) *
А samba работает? Для кварца 18.432 PLL правильно настроена? 48 (96) МГц?
я прошиваю через J-Link-ARM.
PLL нормальный. ровно 98 МГц... по крайней мере ШИМ выдает запрограммированную частоту.
меня все-же смущает, что на D+ положительный потенциал. при снятии осциллограммы при отключении ПУЛАПа потенциал D+ при первом включении остается положительным и при повторном из - в + (при выдёргивании USB падает).
в итоге хост опрашивает девайс а в ответ ничего не получает. на тестборде все наоборот. при подключении/отключении ПУЛАПа D+ ОСТАЕТСЯ!!! на низком уровне и данные шлются корректно.
я так подозреваю, что дело в обвязке... ну или на худой конец в самом кристалле.


а САМ-БА у меня и на тестборде не шла. ни по УСБ, ни по СОМу. вот =(.
Go to the top of the page
 
+Quote Post
SavageForest
сообщение Sep 14 2010, 14:04
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



проблема оказалась в разводке платы. D+ и D- были перепутаны!!!!!! аж выругаться охото сина-сина!!!
теперь проблема в драйверах под Win7(x64)..
Go to the top of the page
 
+Quote Post
SavageForest
сообщение Sep 15 2010, 08:06
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 2-12-09
Пользователь №: 54 010



вот, кстати, если кому может понадобиться..
нарыл здесь-же описание INF-файла для стандартного usbser.
естественно ВИД и ПИД свои можно подставить =)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01639 секунд с 7
ELECTRONIX ©2004-2016