'[INTERFACE]/EZ-USB'에 해당되는 글 15건
- 2012.10.24 [EZ-USB FX3] USB3.0 영상전송 테스트
- 2012.10.22 [EZ-USB FX3] USB3.0 전송율 테스트
- 2012.10.19 [EZ-USB FX3] UART 테스트
- 2012.10.19 [EZ-USB FX3] GPIO 테스트
- 2012.10.18 [EZ-USB FX3] CYUSB3014 개발환경 설정 - 펌웨어 다운로드
FX3는 USB3.0인터페이스로 5Gbps전송율을 가지고 있다. FX2에서는 24Mhz 8051코어를 사용 했는데 FX3에서는 200Mhz ARM9코어를 사용하고 있다.
- ARM926EJ core with 200-MHz operation
- 512-KB or 256-KB embedded SRAM
- USB 3.0 and USB 2.0 peripherals compliant
- 5-Gbps USB 3.0 PHY compliant with PIPE 3.0
- Programmable 100-MHz GPIF II
- 8-, 16-, and 32-bit data bus
BULK모드로 전송시 OUTPUT-> 318MB/s, INPUT -> 350MB/s 의 전송율을 보여주고 있다.
[EZ-USB FX3] CPU점유율
USB3.0을 이용하여 벌크모드로 동영상 전송하는데 CPU점유율이 한자리수로 유지되는것을 확인할 수 있다.
댓글을 달아 주세요
CYUSB3014 에 UART는 아쉽게도 32bit GPIF를 사용할경우 SPI핀과 UART를 동시에 사용할수 없다.
그래서 선택적으로 사용할 수 있도록 점퍼를 설정했다.
CYUSB3014 UART초기화 함수
CyU3PReturnStatus_t CyFxDebugInit (void)
{
CyU3PUartConfig_t uartConfig;
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
/* Initialize and configure the UART for logging. */
status = CyU3PUartInit ();
if (status != CY_U3P_SUCCESS)
{
return status;
}
CyU3PMemSet ((uint8_t *)&uartConfig, 0, sizeof (uartConfig));
uartConfig.baudRate = CY_U3P_UART_BAUDRATE_115200;
uartConfig.stopBit = CY_U3P_UART_ONE_STOP_BIT;
uartConfig.parity = CY_U3P_UART_NO_PARITY;
uartConfig.txEnable = CyTrue;
uartConfig.rxEnable = CyFalse;
uartConfig.flowCtrl = CyFalse;
uartConfig.isDma = CyTrue;
status = CyU3PUartSetConfig (&uartConfig, NULL);
if (status != CY_U3P_SUCCESS)
{
return status;
}
/* Set the dma for an inifinity transfer */
status = CyU3PUartTxSetBlockXfer (0xFFFFFFFF);
if (status != CY_U3P_SUCCESS)
{
return status;
}
/* Start the debug module for printing log messages. */
status = CyU3PDebugInit (CY_U3P_LPP_SOCKET_UART_CONS, 8);
return status;
}
EZ-USB FX3 Debug메세지 출력 함수
extern CyU3PReturnStatus_t
CyU3PDebugPrint (
uint8_t priority, /* Priority level for this message. */
char *message, /* Format specifier string. */
... /* Variable argument list. */
);
댓글을 달아 주세요
[EZ-USB FX3] GPIO 테스트
[EX-USB FX3] 의 확장 테스트 보드에는 GPIO 25, 26에 LED가 연결되어 있다.
GPIO 초기화 함수
void CyFxGpioInit (void)
{
CyU3PGpioClock_t gpioClock;
CyU3PGpioSimpleConfig_t gpioConfig;
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
/* Init the GPIO module */
gpioClock.fastClkDiv = 2;
gpioClock.slowClkDiv = 0;
gpioClock.simpleDiv = CY_U3P_GPIO_SIMPLE_DIV_BY_2;
gpioClock.clkSrc = CY_U3P_SYS_CLK;
gpioClock.halfDiv = 0;
apiRetStatus = CyU3PGpioInit(&gpioClock, CyFxGpioIntrCb);
if (apiRetStatus != 0)
{
/* Error Handling */
CyU3PDebugPrint (4, "CyU3PGpioInit failed, error code = %d\n", apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
/* Override GPIO 25 as this pin is associated with GPIF Control signal.
* The IO cannot be selected as GPIO by CyU3PDeviceConfigureIOMatrix call
* as it is part of the GPIF IOs. Override API call must be made with
* caution as this will change the functionality of the pin. If the IO
* line is used as part of GPIF and is connected to some external device,
* then the line will no longer behave as a GPIF IO.. Here CTL4 line is
* not used and so it is safe to override. */
apiRetStatus = CyU3PDeviceGpioOverride (25, CyTrue);
if (apiRetStatus != 0)
{
/* Error Handling */
CyU3PDebugPrint (4, "CyU3PDeviceGpioOverride failed, error code = %d\n",
apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
/* Configure GPIO 25 as output */
gpioConfig.outValue = CyFalse;
gpioConfig.driveLowEn = CyTrue;
gpioConfig.driveHighEn = CyTrue;
gpioConfig.inputEn = CyFalse;
gpioConfig.intrMode = CY_U3P_GPIO_NO_INTR;
apiRetStatus = CyU3PGpioSetSimpleConfig(25, &gpioConfig);
if (apiRetStatus != CY_U3P_SUCCESS)
{
/* Error handling */
CyU3PDebugPrint (4, "CyU3PGpioSetSimpleConfig failed, error code = %d\n", apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
}
FX3의 펌웨어는 RTOS로 구동이되고 main함수에서 실행될 Thread를 정의해 주고 CyU3PKernelEntry ()함수로 커널 실행하면 설정한 Thread가 구동 되도록 구성되어 있다.
아래 코드는 EZ-USB FX3의 GPIO를 이용하여 LED On/Off 하는 Task의 실행 예제이다.
/* Entry function for the gpioOutputThread */
void GpioOutputThread_Entry (uint32_t input)
{
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
/* Initialize Debug module */
apiRetStatus = CyFxDebugInit();
if (apiRetStatus != CY_U3P_SUCCESS)
{
/* Error handling */
CyU3PDebugPrint (4, "Debug module initialization failed, error code = %d\n", apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
// Initialize GPIO module.
CyFxGpioInit ();
//LED 구동 테스트
for (;;)
{
//LED Off
apiRetStatus = CyU3PGpioSetValue (25, CyTrue);
Delay(500);
//LED On
apiRetStatus = CyU3PGpioSetValue (25, CyFalse);
Delay(500);
}
}
테스트 보드의 GPIO23, 27에는 스위치가 연결되어 있다.
댓글을 달아 주세요
[EZ-USB FX3] CYUSB3014 개발환경 설정 - 펌웨어 다운로드
EZ-USB FX3 는 PMODE핀 설정에 의해 USB, I2C, SPI등등 다양한 형태로 부팅 가능하다.
가장 간단히 USB를 이용하는 방법인데 USB연결하면 기본 부트로더가 실행되고 USB Control Center로 펌웨어를 다운로드 할 수 있다.
CyUSB3014 RAM다운로드
댓글을 달아 주세요