반응형

 

 

Cy;press EZ USB FX3 kit (Superspeed Explorer kit)

Control transfer test.

 

예제의 소스를 보면 구조가 비슷하다.

그러나 control transfer 부분을 Thread 에서 처리한 것도 있고 Callback 에서 처리한 것도 있다.

아래는 GpifToUsb 예제 소스에서 수정하여 테스트 해 보았다.

 

1. Control out

 

CyFxAppInUSBSetupCB 함수에서.

 

 

 

위 부분에 아래와 같이 Vendor command 추가.

디버그 포트로 간단히 출력만 한다.

반드시 CyU3PUsbAckSetup(); 을 해 주어야 정상적으로 전송 완료 된다.

USB Control Center 에서

인식된 디바이스의 Control endpoint (0x00)을 선택 

Bytes to transfer를 0, Direction : out, Req code : 0xAA, Req type : Vendor

나머지는 기본으로 두고 Transfer Data button.

'Zero-length data transfer completed' 가 표시된다.

 

 

이렇게 하면 Debug UART로 문자가 출력되는 것이 나온다.

참고) Debug UART의 default 설정은 115200 bps.

 

 

 

 

 

 

 

 

728x90
반응형

'공부 > HW' 카테고리의 다른 글

211117 PuTTy 재시작  (0) 2021.11.17
211116 Lattice Diamond NODE-locked license  (0) 2021.11.16
211112 무료 Hex editor HxD  (0) 2021.11.12
211105 Cypress EZ USB GPIO 1  (0) 2021.11.05
211026 Lattice Diamond 설치  (0) 2021.10.27
반응형

 

 

 

 

 

Cypress EZ USB kit GPIO 설정.

Superspeed explorer kit

 

CyU3PIoMatrixConfig_t io_cfg;

/* Configure the IO matrix for the device. On the FX3 DVK board,
 * the COM port is connected to the IO(53:56). This means that
 * either DQ32 mode should be selected or lppMode should be set
 * to UART_ONLY. Here we are choosing UART_ONLY configuration. */
CyU3PMemSet ((uint8_t *)&io_cfg, 0, sizeof(io_cfg));
io_cfg.isDQ32Bit = CyFalse;
io_cfg.s0Mode = CY_U3P_SPORT_INACTIVE;
io_cfg.s1Mode = CY_U3P_SPORT_INACTIVE;
io_cfg.useUart   = CyTrue;
io_cfg.useI2C    = CyFalse;
io_cfg.useI2S    = CyFalse;
io_cfg.useSpi    = CyFalse;
io_cfg.lppMode   = CY_U3P_IO_MATRIX_LPP_UART_ONLY;

/* GPIO 45 is used as input pin. GPIO 21 is also used but cannot
 * be selected here as it is part of the GPIF IOs (CTL4). Since
 * this IO is not used, it can be overridden to become a GPIO by
 * invoking the CyU3PDeviceGpioOverride call. */
io_cfg.gpioSimpleEn[0]  = 0;
io_cfg.gpioSimpleEn[1]  = 0x00001000; /* GPIO 44 */
//io_cfg.gpioSimpleEn[1]  = 0x00002000; /* GPIO 45 */
//io_cfg.gpioSimpleEn[1]  = 0x00003000; /* GPIO 44 & 45 */
io_cfg.gpioComplexEn[0] = 0;
io_cfg.gpioComplexEn[1] = 0;
status = CyU3PDeviceConfigureIOMatrix (&io_cfg);
if (status != CY_U3P_SUCCESS)
{
    goto handle_fatal_error;
}

 

io_cfg.gpioSimpleEn[0], [1] 으로 Gpio로 사용할 포트 설정.

 

위 레지스터 내용은 io_cfg.gpioSimpleEn[1] 의 하위 부분이다.

 

0x00001000 중 0x1000 => 0b0001/0000/0000/0000 이므로 위 표에서 b44 만 GPIO 로 설정한다.

 

Reference) Technicsl reference manual

 

 

 

 

 

728x90
반응형

'공부 > HW' 카테고리의 다른 글

211115 Cypress EZ USB Control transfer out  (0) 2021.11.15
211112 무료 Hex editor HxD  (0) 2021.11.12
211026 Lattice Diamond 설치  (0) 2021.10.27
210814 NUCLEO-F746ZG UDP Server  (0) 2021.08.19
210817 이탈리아형 전원 어뎁터  (0) 2021.08.18

+ Recent posts