Перейти к содержанию
    

USB в BF525

делаю устройство на базе BF525c

Планирую реализовать составное USB устройство со стандартными драйверами (HID, AUDIO, MASS STORAGE)

у меня уже написан код программы. Для работы с USB я добавляю код драйвера USB поставляемого вместе с VDSP.

В моей программе я вречную (записывая напосредственно в регистры) настраивыю всю систему блэкфина: частоту работы, SDRAM контроллер, флаги, порты, таймеры, прерывания.

Когда я вставляю код драйвера USB в код своей программы, то программа вообще некорректно компилируется, то есть даже тот код, что стоит до вызова процедуры инициализации

USB не исполняется!

код портится при использовании оператора adi_dev_Open

 

#include <services/services.h>

 

#include <drivers/adi_dev.h>

 

#include <drivers/usb/usb_core/adi_usb_objects.h>

 

#include <drivers/usb/usb_core/adi_usb_core.h>

#include <drivers/usb/usb_core/adi_usb_ids.h>

 

#include <drivers/usb/usb_core/adi_usb_logevent.h>

 

#include <drivers/usb/class/peripheral/mass_storage/adi_usb_msd_class.h>

 

#include <drivers/usb/controller/otg/adi/hdrc/adi_usb_hdrc.h>

 

#define ADI_SSL_DMA_NUM_CHANNELS (4) // number of DMA channels

 

#define ADI_SSL_DEV_NUM_DEVICES (4) // number of device drivers

 

static void USB_ClientCallback ( void *AppHandle, unsigned long Event, void *pArg ){

}

 

void usb_Init ( void )

{

unsigned char DMAServiceData [ADI_DMA_BASE_MEMORY + (ADI_DMA_CHANNEL_MEMORY * ADI_SSL_DMA_NUM_CHANNELS)] ;

unsigned char DevMgrData [ADI_DEV_BASE_MEMORY + (ADI_DEV_DEVICE_MEMORY * ADI_SSL_DEV_NUM_DEVICES)] ;

ADI_DMA_MANAGER_HANDLE adi_dma_ManagerHandle ;

ADI_DEV_MANAGER_HANDLE adi_dev_ManagerHandle ;

ADI_DEV_DEVICE_HANDLE PeripheralDevHandle ;

 

unsigned long Result ;

adi_usb_CoreInit ( (void*)&Result ) ; // Initialize USB Core

 

ADI_PWR_COMMAND_PAIR ezkit_power[] =

{

{ ADI_PWR_CMD_SET_PROC_VARIANT,(void*)ADI_PWR_PROC_BF525SBBC1600 },

{ ADI_PWR_CMD_SET_PACKAGE, (void*)ADI_PWR_PACKAGE_MBGA },

{ ADI_PWR_CMD_SET_VDDEXT, (void*)ADI_PWR_VDDEXT_330 },

{ ADI_PWR_CMD_SET_CLKIN, (void*)24 },

{ ADI_PWR_CMD_END, 0 }

} ;

 

adi_pwr_Init(ezkit_power) ;

 

adi_dma_Init ( DMAServiceData, sizeof(DMAServiceData), &Result, &adi_dma_ManagerHandle, NULL ) ;

adi_dev_Init ( DevMgrData, sizeof(DevMgrData), &Result, &adi_dev_ManagerHandle, NULL ) ;

 

// Open the USB Controller driver

adi_dev_Open ( adi_dev_ManagerHandle, /* DevMgr handle */

 

&ADI_USBDRC_Entrypoint, /* pdd entry point */

 

0, /* device instance */

 

(void*)1, /* client handle callback identifier */

 

&PeripheralDevHandle, /* device handle */

 

ADI_DEV_DIRECTION_BIDIRECTIONAL, /* data direction for this device */

 

NULL, /* handle to DmaMgr for this device */

 

NULL, /* handle to deferred callback service */

 

USB_ClientCallback); /* callback function */

}

 

Данный код у меня не работает!!!

Что может быть???

И еще, я не понимаю механизм настройки чатоты контроллера USB. Исходя из чего там устанавливается нужная частота?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...