|
проблемы с настройкой модуля USB в AT91SAM7S256 |
|
|
|
Oct 24 2007, 06:16
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
Добрый день , уважаемые форумчане Помогите начинающему работать с USB. Щупаю пример от Атмеля at91_demo_massstorage_fs Возникло несколько вопросов по работе модуля USB:
1.При запуске проги , но не подключённом у-ве к хосту вижу что постоянно влетаю в прерывание по флагу ENDBUSRES, которое вообще должно возникать при подключениие к хосту . Флаг этот должен сбрасываться следующим кодом AT91F_UDP_DisableIt( USBDEV_BASE_UDP, DISABLE_ALL_IT ); AT91F_UDP_InterruptClearRegister( USBDEV_BASE_UDP, CLEAR_ALL_IT ); AT91F_UDP_EnableIt( USBDEV_BASE_UDP, AT91C_UDP_EPINT0| AT91C_UDP_RXSUSP | AT91C_UDP_RXRSM | AT91C_UDP_EXTRSM | AT91C_UDP_SOFINT );
но почему то код не работает , флаг ENDBUSRES остаётся взведённым . И вообще состояние регистров не меняется и в итоге прога постоянно крутится в прерывании.
2. Первоначально маска прерываний конфигурится в состояние по умолчанию - прерывание только по флагу RXRSM . При нормальной работе модуля , при подключении к хосту по этому флагу возникает прерывание , такой же вышепреведённый код отрабатывает нормально , начинается процесс нумерации.
А иногда бывает что у-во подключено , а никакой реакции на компе нет , прерывания только по ENDBUSRES , по RXRSM прерывания нет , у-во на компе не видно .
|
|
|
|
|
 |
Ответов
|
Oct 26 2007, 12:45
|

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

|
Код
/* typedef struct _AT45_Device{ int buflen; int pages; int blocks; char pagebits; char sign; const char * name; }AT45_Device; */ #define AT45_Types 8 const AT45_Device AT45_Type[AT45_Types]= { { 264, 4096, 512, 9, 0, "Unknown"}, { 264, 512, 64, 9, 3, "AT45DB011"}, // 1 Mbit { 264, 1024, 128, 9, 5, "AT45DB021"}, // 2 Mbit { 264, 2048, 256, 9, 7, "AT45DB041"}, // 4 Mbit { 264, 4096, 512, 9, 9, "AT45DB081"}, // 8 Mbit { 528, 4096, 512, 10, 11, "AT45DB161"}, // 16 Mbit { 528, 8192, 1024, 10, 13, "AT45DB128"}, // 32 Mbit {1056, 8196, 1024, 11, 15, "AT45DB642"} // 64 Mbit };
FS_AT45_InitSPI(void) { AT91PS_SPI pSPI = AT91C_BASE_SPI0;
// enable peripheral clock for SPI AT91F_PMC_EnablePeriphClock (AT91C_BASE_PMC, (1 << AT91C_ID_SPI0)); // SPI enable and reset if (!(pSPI->SPI_CR & AT91C_SPI_SPIEN)) { pSPI->SPI_CR = AT91C_SPI_SWRST; pSPI->SPI_CR = AT91C_SPI_SPIDIS; pSPI->SPI_CR = AT91C_SPI_SPIEN; } // SPI mode: master, fixed periph. sel., FDIV=0, fault detection disabled pSPI->SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED | AT91C_SPI_MODFDIS; // set chip-select-register // SPI mode 0: 8 bits per transfer, CPOL=0, ClockPhase=0, DLYBCT = 0 //pSPI->SPI_CSR[AT45_SPI_CSRNum] = /*AT91C_SPI_CPOL |*/ AT91C_SPI_NCPHA | AT91C_SPI_BITS_8 | AT91C_SPI_CSAAT | (0xFF << 8);
// SPI mode 3: 8 bits per transfer, CPOL=1, ClockPhase=1, DLYBCT = 0 pSPI->SPI_CSR[AT45_SPI_CSRNum] = AT91C_SPI_CPOL | /*AT91C_SPI_NCPHA |*/ AT91C_SPI_BITS_8 | 0x0F << 8; // pSPI->SPI_CR = AT91C_SPI_SPIEN;
// if(pSPI->SPI_SR & AT91C_SPI_SPIENS) // printf("SPI initialized...\n"); }
// Read DataFlash status register __ramfunc char FS_AT45_ReadStatus(U8 Unit) { char s; FS_AT45_DisableCS(Unit); FS_AT45_EnableCS(Unit); FS_AT45_RW(StatusReg); s = FS_AT45_RW(0xFF); FS_AT45_DisableCS(Unit); return s; }
int FS_AT45_InitDev(U8 Unit) { char result; int i;
result = FS_AT45_ReadStatus(Unit); // printf("AT45 status %X\r\n", result); AT45_Devs[Unit] = &(AT45_Type[0]); for (i = AT45_Types; i >= 0; i--) if (((result >> 2) & 0x0F) == AT45_Type[i].sign) break; AT45_Devs[Unit] = &AT45_Type[i]; if (i != 0) return 0; else return 1; }
int FS_AT45_InitDevice(U8 Unit) // Called from AddDevice. Usually the first call to the driver { int result, i; char prev_dev;
FS_AT45_InitPIO(); FS_AT45_InitSPI(); FS_AT45_DisableCS(Unit); prev_dev = FS_AT45_Select(AT45_SPI_CSRMask); FS_AT45_SetSpeed(AT45_MIN_SPEED); //slow during init for(i=0;i<41;i++) FS_AT45_RW(0xFF); FS_AT45_SetSpeed(AT45_MAX_SPEED); result = FS_AT45_InitDev(Unit); //DataAbort will be detected if we use printf here! FS bag? /* if (result != 0) { printf("Error init AT45 devise No %d\n\r", Unit); } else { printf("Found %s\n\r", AT45_Devs[Unit]->name); }*/ FS_AT45_Select(prev_dev); return result; }
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
Сообщений в этой теме
coolzero проблемы с настройкой модуля USB в AT91SAM7S256 Oct 24 2007, 06:16 aaarrr 1. Скорее всего, флаг сбрасывается нормально, а Ва... Oct 24 2007, 07:14 coolzero Цитата(aaarrr @ Oct 24 2007, 11:14) 1. Ск... Oct 24 2007, 08:04  aaarrr Цитата(coolzero @ Oct 24 2007, 12:04) По ... Oct 24 2007, 08:27   coolzero [quote name='aaarrr' date='Oct 24 2007... Oct 24 2007, 09:00    aaarrr Цитата(coolzero @ Oct 24 2007, 13:00) Мне... Oct 24 2007, 09:10    Kitsok У меня подтяжка сделана как в Olimex SAM7-P256, вс... Oct 24 2007, 09:11 KAlex Цитата(coolzero @ Oct 24 2007, 10:16) Щуп... Oct 24 2007, 09:23 aaarrr Цитата(KAlex @ Oct 24 2007, 13:23) Что то... Oct 24 2007, 09:37 ljerry Цитата(coolzero @ Oct 24 2007, 10:16) 1.П... Oct 24 2007, 09:51 _4afc_ Цитата(coolzero @ Oct 24 2007, 10:16) Щуп... Oct 24 2007, 10:01 coolzero Изменил подтяжку вместо питания USB на 3.3 В , фла... Oct 24 2007, 11:05 _4afc_ Цитата(coolzero @ Oct 24 2007, 14:47) В п... Oct 24 2007, 11:10 coolzero А чем мне может помешать управление энергопотребле... Oct 24 2007, 11:10 _4afc_ Цитата(coolzero @ Oct 24 2007, 15:10) А ч... Oct 24 2007, 11:23 coolzero М-да что то не получается
Из проводника диск форм... Oct 24 2007, 11:44 _4afc_ Цитата(coolzero @ Oct 24 2007, 15:29) Не ... Oct 24 2007, 11:45 coolzero вот оно что , я то думаю где собака порылась
насч... Oct 24 2007, 12:02 _4afc_ Цитата(coolzero @ Oct 24 2007, 16:02) вот... Oct 24 2007, 12:26 coolzero А если я поменяю PID\VID - у меня проблем с д... Oct 24 2007, 12:40 Dron_Gus У меня sam7x нормально работает с AT45 и ("на... Oct 24 2007, 12:43 coolzero Значит надо рыть в другую сторону , возможно дейст... Oct 24 2007, 13:04 Dron_Gus Вы не забываете блокировать доступ "из" ... Oct 24 2007, 13:34 coolzero Да вроде нет - програмка пока отладочная , кроме u... Oct 25 2007, 05:15 Calculator Цитата(coolzero @ Oct 25 2007, 11:15) Мал... Oct 25 2007, 07:54 coolzero Всё возможно , надо проверить , спасибо ...
Но во... Oct 25 2007, 08:51 Dron_Gus Я описание ФАТ давно читал, но не длинное ли имя ф... Oct 25 2007, 09:53 _4afc_ Цитата(Dron_Gus @ Oct 25 2007, 13:53) Я о... Oct 25 2007, 10:21 coolzero Так точно , похоже на то .
Длину имен подрезал, ст... Oct 25 2007, 10:23 Calculator Цитата(coolzero @ Oct 25 2007, 16:23) Так... Oct 25 2007, 10:42 _4afc_ Цитата(coolzero @ Oct 25 2007, 14:23) Так... Oct 25 2007, 11:20 coolzero Написано достаточно много , но есть строка Revisio... Oct 25 2007, 11:05 coolzero Плата на пластиковых пеньках , стола не касается .... Oct 25 2007, 11:37 _4afc_ Цитата(coolzero @ Oct 25 2007, 15:37) Пла... Oct 25 2007, 11:46 coolzero Текстолита , увы , сейчас под рукой нет ...
Не сов... Oct 25 2007, 12:05 _4afc_ Цитата(coolzero @ Oct 25 2007, 16:05) Тек... Oct 25 2007, 12:33 Dron_Gus Какой размер сектора Вы используете? Хотя у AT45 р... Oct 25 2007, 12:45 _4afc_ Цитата(Dron_Gus @ Oct 25 2007, 16:45) Как... Oct 25 2007, 14:48 coolzero Таблица ФАТ и соответствующие сектора меняются
На... Oct 25 2007, 13:08 Dron_Gus Цитата(coolzero @ Oct 25 2007, 17:08) пра... Oct 25 2007, 13:22 coolzero Надо попробовать Oct 25 2007, 13:38 Dron_Gus 2 _4afc_, что-то наверное уже поздно... "ниас... Oct 25 2007, 14:55 _4afc_ Цитата(Dron_Gus @ Oct 25 2007, 18:55) Я т... Oct 26 2007, 11:17 coolzero Погонял свой девайс , мнение такое сложилось - кос... Oct 26 2007, 12:09 coolzero Спасибо Dron_Gus , буду разбираться .
А какое знач... Oct 26 2007, 12:55 coolzero а какая команда чтения датафлеш используется ? Oct 29 2007, 07:38 coolzero Поигрался с настройками SPI , не понятно
Девайс к... Oct 29 2007, 09:26 Dron_Gus Где-то на форуме обсуждались проблеммы и особеност... Oct 29 2007, 10:34 coolzero Уважаемые форумчане , где то видел мессагу , про т... Oct 31 2007, 08:59
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|