USB superspeed peripherals Forum Discussions
Hi,
I added CyFxUSBSerialNumberDscr in my descriptor file and I can see the serial number in Control center.
but in cyusb_linux, I can see always 3 which is the serial number string not what I set, is there anyway to see the serial number that I set in FW in cyusb_linux?
Thanks
Show Less
Hello , i use the example above example found in D:\EZ-USB FX3 SDK\1.3\firmware\cx3_examples\cycx3_uvc_ov5640.
I do not understand where is the deserializer initialized, where is configured?
Also i would be interested in using another image sensor like AR0220 or OX03A10, so what should i do?
Show LessHi, I want build a system include fx3 and fpga to implement a data connection between pc and fpga:
FX3 configuration is GPIF-16bit ,slave fifo,
USB->FPGA socket is
CY_U3P_UIB_SOCKET_PROD_1 -> CY_U3P_PIB_SOCKET_3
USB-> FPGA socket is
CY_U3P_PIB_SOCKET_0 -> CY_U3P_UIB_SOCKET_CONS_1
DMA MODE:AUTO
FLAG :FLAGA indicate current thread
BUF_size =1024;
BUF_count =4;
now ,I got a problem is that I can't get a FLAGA valid(high) indication any more after I send 2 tranfer data-outs successfully through USB Control Center
what problem maybe can cause these problem?how should I do?
Show Less
Hello,
I'm trying to gather MIPI stream from a custom module using CX3.
Now, I'm able to gather images but I think they have a timing issue.
I tested it using the PN9 test pattern and the symptoms are below.
When I first acquire an image, there is nothing wrong with it.
However, after some time has passed, distorted images are acquired.
Then it comes back to normal a little later.
Below is a normal output image.
Below is a distorted image.
Below is my "CX3 Receiver Configuration".
Are there any wrong settings? and how can I handle them?
or do I need to perform process like skew?
Show LessI am trying to capture SOF events but need to know the ID of the SOF event. I am able to successfully execute code in theCY_U3P_USB_EVENT_SOF_ITP callback.
After CyU3PConnectState, I call
/* Enable SOF events */
CyU3PUsbEnableITPEvent( CyTrue );
I get my events in the callback,
case CY_U3P_USB_EVENT_SOF_ITP:
{
// Always zero.
// uint32_t DEV_FRAMECNT = *((volatile uint32_t*) 0xE0031404 );
uint32_t DEV_FRAMECNT;
CyU3PUsbGetDevProperty ( CY_U3P_USB_PROP_FRAMECNT, &DEV_FRAMECNT ); //also always zero.
if( DEV_FRAMECNT == 0 )
{
gbSOFToggle = !gbSOFToggle;
CyU3PGpioSimpleSetValue( GPIO_SOF_NR, gbSOFToggle );
}
break;
}
According to the datasheet, the register DEV_FRAMECNT should contain the SOF id of the last SOF, but whether I use CyU3PUsbGetDevProperty or read directly from the register, it's always zero.
Do I have to do something to enable the framecnt register?
Hello,
I had success debugging with jlink before, but two days ago I had a problem with my computer and I reset my computer.
I reinstalled EZ-USB Suite and jlink, and now I can't debug after configuration. EZ-USB Suite doesn't open jlink automatically when I start debugging, but it would before, did I forget any important settings, please help me.
My configuration is as follows, CX3's jlink debugging settings should not be a problem
Show Less
Hello, I want to read the deserializer register but it is not working, can someone to help me? Thank you. With I2C_SLAVE_ADDRESS (0xA0u) is working fine but with deserializer adres (0xA4u)it is not.
/*
## Cypress FX3 Boot Firmware Example Source file (main.c)
## ===========================
##
## Copyright Cypress Semiconductor Corporation, 2011-2012,
## All Rights Reserved
## UNPUBLISHED, LICENSED SOFTWARE.
##
## CONFIDENTIAL AND PROPRIETARY INFORMATION
## WHICH IS THE PROPERTY OF CYPRESS.
##
## Use of this file is governed
## by the license agreement included in the file
##
## <install>/license/license.txt
##
## where <install> is the Cypress software
## installation root directory path.
##
## ===========================
*/
#include "cyfx3device.h"
#include "cyfx3utils.h"
#include "cyfx3gpio.h"
#include "defines.h"
#include "cyfx3i2c.h"
/* Code to read and boot FX3 firmware from I2C EEPROM. */
#define I2C_BUS_TIMEOUT_VALUE (0xFFFFFFFFu)
#define I2C_DMA_TIMEOUT_VALUE (0xFFFFu)
#define I2C_FREQUENCY (400000u)
#define I2C_SLAVE_ADDRESS (0xA0u)
#define I2C_SLAVE_ADDRESS_MAXIM_DES (0xA4u)
#define I2C_SLAVE_ADDRESS_TI_DES (0x60u)
//#define I2C_SLAVE_ADDRESS (0x50)
#define I2C_CMD_WRITE (0)
#define I2C_CMD_READ (1)
#define I2C_START_BYTE2 (0x0004)
#define I2C_RETRY_CNT (2)
#define FW_HEADER_SIZE (4)
#define SECTION_HEADER_SIZE (8)
#define I2C_SLAVE_SPACE (0x10000)
#define GET_BYTE0(addr) ((uint8_t)((addr) & 0xFF))
#define GET_BYTE1(addr) ((uint8_t)(((addr) >> 😎 & 0xFF))
static uint8_t gI2cSlaveAddr = 0;
static uint32_t gI2cByteAddr = 0;
static uint32_t gReadBuf[4]= {0xFF, 0xFF, 0xFF, 0xFF};
static uint8_t gWriteBuf[4] = {1, 2, 3, 4};
/****************************************************************************
* main:
****************************************************************************/
CyBool_t I2c_Write (void)
{
CyFx3BootErrorCode_t status;
CyFx3BootI2cConfig_t i2cConfig;
CyFx3BootI2cPreamble_t preamble;
uint8_t *wd_buf = (uint8_t *)gWriteBuf;
status = CyFx3BootI2cInit ();
if (status != CY_FX3_BOOT_SUCCESS)
return CyFalse;
i2cConfig.busTimeout = I2C_BUS_TIMEOUT_VALUE;
i2cConfig.dmaTimeout = I2C_DMA_TIMEOUT_VALUE;
i2cConfig.isDma = CyFalse;
i2cConfig.bitRate = I2C_FREQUENCY;
status = CyFx3BootI2cSetConfig (&i2cConfig);
if (status != CY_FX3_BOOT_SUCCESS)
return CyFalse;
preamble.buffer[0] = I2C_SLAVE_ADDRESS | I2C_CMD_WRITE;
preamble.buffer[1] = 0x10;
preamble.buffer[2] = 0x00;
preamble.length = 3;
preamble.ctrlMask = 0;
status = CyFx3BootI2cTransmitBytes(&preamble, wd_buf, FW_HEADER_SIZE, I2C_RETRY_CNT);
if (status == CY_FX3_BOOT_SUCCESS)
{
return CyTrue;
}
return CyFalse;
}
CyBool_t I2c_Read (void)
{
CyFx3BootErrorCode_t status;
CyFx3BootI2cConfig_t i2cConfig;
CyFx3BootI2cPreamble_t preamble;
uint8_t *rd_buf = (uint8_t *)gReadBuf;
status = CyFx3BootI2cInit ();
if (status != CY_FX3_BOOT_SUCCESS)
return CyFalse;
status = CyU3PI2cInit ();
if (status != CY_FX3_BOOT_SUCCESS)
{
return status;
}
CyU3PMemSet ((uint8_t *)&i2cConfig, 0, sizeof(i2cConfig));
i2cConfig.busTimeout = I2C_BUS_TIMEOUT_VALUE;
i2cConfig.dmaTimeout = I2C_DMA_TIMEOUT_VALUE;
i2cConfig.isDma = CyFalse;
i2cConfig.bitRate = I2C_FREQUENCY;
status = CyFx3BootI2cSetConfig (&i2cConfig);
if (status != CY_FX3_BOOT_SUCCESS)
return CyFalse;
preamble.buffer[3] = I2C_SLAVE_ADDRESS_MAXIM_DES | I2C_CMD_READ;;
preamble.buffer[0] = I2C_SLAVE_ADDRESS_MAXIM_DES | I2C_CMD_WRITE;;
preamble.length = 4;
preamble.ctrlMask = 0x0004;
// Have to wait for approx. 5 ms to ensure that the slave has completed
// writing the data.
CyFx3BootBusyWait (3500);
status = CyFx3BootI2cSendCommand (&preamble, 16, CyTrue);
if (status != CY_FX3_BOOT_SUCCESS)
{
return status;
}
status = CyFx3BootI2cReceiveBytes (&preamble, rd_buf, FW_HEADER_SIZE, I2C_RETRY_CNT);
if (status == CY_FX3_BOOT_SUCCESS)
{
return CyTrue;
}
else
{
return CyFalse;
}
}
int main (void)
{
CyFx3BootErrorCode_t status;
CyFx3BootIoMatrixConfig_t ioCfg;
CyFx3BootGpioSimpleConfig_t gpioConf;
CyBool_t value;
/* HW and SW initialization code */
CyFx3BootDeviceInit (CyTrue);
/* Enable the GPIOs for the LED and the switch. */
ioCfg.isDQ32Bit = CyFalse;
ioCfg.useUart = CyFalse;
ioCfg.useI2C = CyFalse;
ioCfg.useI2S = CyFalse;
ioCfg.useSpi = CyFalse;
ioCfg.gpioSimpleEn[0] = 0;
ioCfg.gpioSimpleEn[1] = (1 << (APP_LED_GPIO1 - 32)) | (1 << (APP_SWITCH_GPIO - 32) | (1 << (APP_LED_GPIO2 - 32)) | (1 << (APP_LED_GPIO3 - 32)) | (1 << (APP_LED_GPIO4 - 32)));
status = CyFx3BootDeviceConfigureIOMatrix (&ioCfg);
if (status != CY_FX3_BOOT_SUCCESS)
{
return status;
}
/* Initialize the GPIO module. */
CyFx3BootGpioInit ();
/* Configure the GPIO for reading the switch input. */
gpioConf.inputEn = CyTrue;
gpioConf.driveLowEn = CyFalse;
gpioConf.driveHighEn = CyFalse;
gpioConf.outValue = CyFalse;
gpioConf.intrMode = CY_FX3_BOOT_GPIO_NO_INTR;
status = CyFx3BootGpioSetSimpleConfig (APP_SWITCH_GPIO, &gpioConf);
if (status != CY_FX3_BOOT_SUCCESS)
return status;
/* Configure the GPIO for driving the LED. */
gpioConf.inputEn = CyFalse;
gpioConf.driveLowEn = CyTrue;
gpioConf.driveHighEn = CyTrue;
gpioConf.outValue = CyFalse;
gpioConf.intrMode = CY_FX3_BOOT_GPIO_NO_INTR;
status = CyFx3BootGpioSetSimpleConfig (APP_LED_GPIO1, &gpioConf);
if (status != CY_FX3_BOOT_SUCCESS)
return status;
status = CyFx3BootGpioSetSimpleConfig (APP_LED_GPIO2, &gpioConf);
if (status != CY_FX3_BOOT_SUCCESS)
return status;
status = CyFx3BootGpioSetSimpleConfig (APP_LED_GPIO3, &gpioConf);
if (status != CY_FX3_BOOT_SUCCESS)
return status;
status = CyFx3BootGpioSetSimpleConfig (APP_LED_GPIO4, &gpioConf);
if (status != CY_FX3_BOOT_SUCCESS)
return status;
/* We keep looping around and copying the state of the SWITCH GPIO onto the LED GPIO. */
// I2c_Write();
// value = I2c_Write();
// value= I2c_Read();
value= I2c_Read();
if (value == CyTrue)
{
CyFx3BootGpioSetValue(APP_LED_GPIO1, CyTrue); // 0 1 1 0
CyFx3BootGpioSetValue(APP_LED_GPIO2, CyFalse);
CyFx3BootGpioSetValue(APP_LED_GPIO3, CyFalse);
CyFx3BootGpioSetValue(APP_LED_GPIO4, CyTrue);
} else
{
CyFx3BootGpioSetValue(APP_LED_GPIO1, CyFalse); // 1 0 0 1
CyFx3BootGpioSetValue(APP_LED_GPIO2, CyTrue);
CyFx3BootGpioSetValue(APP_LED_GPIO3, CyTrue);
CyFx3BootGpioSetValue(APP_LED_GPIO4, CyFalse);
}
return 0;
}
/*[]*/
Show Less
Hi!
I am planning to use two MIPI sensor modules in my application (2 MIPI lanes per module). What would be the best way to connect both of them to a single CX3 controller?
Thanks!
Show Lesshello all.
I'm a newbie so my question might sound trivial.
I'm trying to get my ARM-USB-TINY-H to debug through jtag a cypress FX3 on a custom board.
I've succeeded to flash out an example to the FX3 using the USB3 connection, but it doesn't have debug capabilities.
can anyone point me to the right direction on how to get it to work?
Show LessHello,
My code is based on AN75779 and I communicate with the Control EP with the "Cypress FX3 Example device 1" driver.
All new Windows 10 PC's that I have tested my mode with have a safety mechanism that prevent windows from installing the driver correctly because its not singed, and instead of it appearing in Universal Serial Bus controllers, it shows as Other devices and its not working properly.
The only thing I can do is to change the settings in the PC BIOS, enable windows test mode and only then the driver is installed correctly.
This procedure is fine for my tests but I can't expect my clients to do this procedure. Is their a way to overcome this issue with the driver signature? Or to communicate with the Control EP via the regular UVC driver?
All the best,
Ofer.
Show Less