Jump to content

    

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. Исходя из чего там устанавливается нужная частота?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this