USB low-full-high speed peripherals Forum Discussions
text.format{('custom.tabs.no.results')}
Hi,
I am a new user of the Cypress CY7C67300 EZ-HOST controller provided with the xilinx ML605 development kit.
In order to operate in the Host mode I need to write the firmware I suppose.
Could any of you please let me know how to go about it ? Are the tools for free ? If so could you please provide the link for the same ?
Thank you
Show LessHI,support. I need your help. I encountered trouble while debugging the CY7C65211 device. I consulted the manual and even searched the internet. How should I configure this device to work in SPI mode? Configuration tool? Or specify an API? What is the corresponding download link? Thank you very much for your answer.
Show Less
Hi Support,
Thank you for your usual support.
I have questions,could you please answer below?
Target: USB-UART Controller CY7C65213
The Internal flash memory is used with default values.
(Meaning that it is not intentionally rewritten by the Utility)
1. Is the Default Baudrate of this Device 115200?
2. UART communication was possible at 3Mbps even though the Baudrate was not changed on the customer's board.Windows 10 PC ⇔ USB 12 Mbps ⇔ UART 3 Mbps
Is it possible that the default Baudrate will be 3Mbps even if it has not been changed with a utility?
3.My guess is that the default Baudrate is 115200, and UART communication should be limited to 115200. Why was the customer UART controller able to communicate with 3M without changing the settings?
DataSheet
https://www.infineon.com/dgdl/Infineon-CY7C65213_USB-UART_LP_Bridge_Controller-DataSheet-v17_00-EN.p...
Could you please tell me answer of my question?
Best regards,
Koki
Hi,
I am having trouble finding the technical documentation for Cypress Semiconductor products. I have some CY7C68023 and I already know that the products is obsolete. Please help me to find the actual latest revision datasheet for the CY7C68023-56LTXC. Thanks in advance.
Best regards, Evgen
Hi,
I'm using CYUSBS234 USB-serial development kit (CY7C65211A), and trying to use command line tool to download the configuration file. However, I downloaded default_CY7C65215-32LTXI.cyusb by mistake.
After downloading the file, three devices are listed in the device manager, but I cannot select the device on Configuration Utility anymore.
Can anyone tell me how to restore it? Thanks.
Show Less
Hello;
Is it possible to clear the previous EEPROM writes that are performed using C0 load ?
In order to test new data i want to clear the eeprom values written previously
Hello
For CY7C65215, we can use Cypress USB-Serial Configuration Utility to change the configuration such as USB VID, PID and GPIO (UART/I2C) allocation, but is it possible to change the configuration using command line such as Windows/Linux?
If possible, could you please share the documentation such as instructions?
Best Regards
Show Less
Hello,
I want to use the CY7C65211 as an interface between my Host - PC and a peripheral (e.g. sensing unit) acting as the I2C slave. To be more agile I wanted to write a driver within Matlab - which works flawlessly already - except for one crucial part: The CyI2cRead function. My sequence is the following:
- CyOpen
- CySetI2cConfig
- CyI2CWrite (within for loop)
- CyI2CRead (within for loop)
- CyClose
When running it for 1000 iterations, I have a Read Success rate of ~ 2% - so I had roughly 20 successful read operations
Question # 1
Do you have an experience whether there is a known issue for the read command? I am using it as the following:
[bStatusRead, CY_HANDLE, sTransferCountRead, cReadBuff] = calllib('CyLib','CyI2cRead',CY_HANDLE, CY_I2C_DATA_CONFIG, CY_Read_DATA_BUFFER, sTimeout)
(i hope this is clear)
for comparison, this is the function within the header file:
CY_RETURN_STATUS CyI2cRead (CY_HANDLE handle, /*Valid device handle*/
CY_I2C_DATA_CONFIG *dataConfig, /*I2C data config*/
CY_DATA_BUFFER *readBuffer, /*Read buffer details*/
UINT32 timeout /*API timeout value*/);
Concerning the error itself:
I have 3 different outputs from a read command
- Either nothing happens after the start condition, which is then followed by a returned 'CY_ERROR_I2C_NAK_ERROR' - Status
- No stop Bit is sent, therefore it reads until the 'CY_ERROR_IO_TIMEOUT' is returned
- It works
I am very thankful for any advice
BR,
Thomas
Show LessHi, I am working with CY7c68013 to stream 8 channel 16-bit ADC data from FPGA. I have confugure endpoint 6 as bulkin 512 bytes and correctly entered the packet size in descriptor and fifo auto length registeres. On PC side i am using labVIEW to stream data using cyusb.dll. i have configured bulkin endpoint max packet size to 512 and using a for loop to read multiole 512 byte packets instead of 1 large packet. I am using usbmonitor software to analyze packets and i can see 512 bytes being transferred against requested number of samples.
Let me explain, i have 8 16bit ADC so in a 512 byte packet i am receiving 32 samples per channel simultanrously. So, lets say for 1000 samples per channel i run a for loop for about 62 times and acquire 62 packets (512 bytes each). Every thing is working fine as far as i keep the samples below 3000 after that a see disontinuity in my waveform which is about last 128 samples. I tried changing the max packet size to 1024 and double buffering and 512 with quad buffering but this issue persists unless i reduce the number of samples. And this discontinuity is consistent with all of the channels exactly occouring at the same point. I am struggling with this problem for a week now. Any help would be highly appreciated. Thanks in advance
Show LessI'v been working on trying to establish serial communication using FX2LP via the virtual com approach as discussed in AN58764. The problem is when I enable the serial port 0 interrupt by setting ES0=1 the device disconnects and does not come back to the USB Control Center after being programed. A snippet of the code is shown below( the entire code can be found in the attachment).
Since I'm compiling my project using SDCC I'm aware of few issues that have to be taken care of which have to do with the interrupt vector table not being overwritten. I'v wrote the following command in the Sdcc linker command line:
sdcc --xram-loc 0x3000 --code-size 0x2FFF
to make sure data written into external ram do not corrupt the interrupt vector. I have also made sure that the register XPAGE is in location 92 in the memory by inserting the following line in fx2regs.h
__sfr __at (0x92) _XPAGE;
In addition, I have made sure that I'm using a .inf file that is compatible with the virtual com aspect. Yet, I haven't been able to sort out the problem. Any thoughts are appreciated.
#pragma noiv // Do not generate interrupt vectors
//-----------------------------------------------------------------------------
// File: bulkloop.c
// Contents: Hooks required to implement USB peripheral function.
//
// Copyright (c) 2000 Cypress Semiconductor All rights reserved
//-----------------------------------------------------------------------------
#include "fx2.h"
#include "fx2regs.h"
#include "syncdly.h" // SYNCDELAY macro
extern BOOL GotSUD; // Received setup data flag
extern BOOL Sleep;
extern BOOL Rwuen;
extern BOOL Selfpwr;
__xdata volatile unsigned char D3ON;
__xdata volatile unsigned char D3OFF;
static int x;
unsigned char duk;
static int bcl,i;
__xdata volatile unsigned char D5ON;
__xdata volatile unsigned char D5OFF;
unsigned char dum;
static int z;
extern __xdata volatile unsigned char LineCode[7];
BYTE Configuration; // Current configuration
BYTE AlternateSetting; // Alternate settings
void display_product(void);
void TD_Poll(void);
//-----------------------------------------------------------------------------
// Task Dispatcher hooks
// The following hooks are called by the task dispatcher.
//-----------------------------------------------------------------------------
BOOL DR_SetConfiguration();
BYTE TxByte0,RxByte0;
BYTE TxByte1,RxByte1;
void transmit(void)// Sends data to SBUF0
{
if (!(EP1OUTCS & 0x02))
{
if(i<bcl)
{
SBUF0=EP1OUTBUF[i];
i++;
dum=D5ON;
z^=1;
if (z)
{dum=D5OFF;}
}
else
{
EP1OUTBC = 0x04;// Arms EP1 endpoint
}
}
}
void Serial0Init () // serial UART 0 with Timer 2 in mode 1 or high speed baud rate generator
{
SCON0 = 0x5A; // Set Serial Mode = 1, Recieve enable bit = 1
T2CON = 0x34; // Int1 is detected on falling edge, Enable Timer0, Set Timer overflow Flag
if ((LineCode[0] == 0x60) && (LineCode[1] == 0x09 )) // 2400
{
RCAP2H = 0xFD; // Set TH2 value for timer2
RCAP2L = 0x90; // baud rate is set to 2400 baud
}
else if ((LineCode[0] == 0xC0) && (LineCode[1] == 0x12 )) // 4800
{
RCAP2H = 0xFE; // Set TH2 value for timer2
RCAP2L = 0xC8; // baud rate is set to 4800 baud
}
else if ((LineCode[0] == 0x80) && (LineCode[1] == 0x25 )) // 9600
{
RCAP2H = 0xFF; // Set TH2 value for timer2
RCAP2L = 0x64; // baud rate is set to 9600 baud
}
else if ((LineCode[0] == 0x00) && (LineCode[1] == 0x4B )) // 19200
{
RCAP2H = 0xFF; // Set TH2 value for timer2
RCAP2L = 0xB2; // baud rate is set to 19200 baud
}
else if ((LineCode[0] == 0x80) && (LineCode[1] == 0x70 )) // 28800
{
RCAP2H = 0xFF; // Set TH2 value for timer2
RCAP2L = 0xCC; // baud rate is set to 28800 baud
}
else if ((LineCode[0] == 0x00) && (LineCode[1] == 0x96 )) // 38400
{
RCAP2H = 0xFF; // Set TH2 value for timer2
RCAP2L = 0xD9; // baud rate is set to 38400 baud
}
else if ((LineCode[0] == 0x00) && (LineCode[1] == 0xE1 )) // 57600
{
RCAP2H = 0xFF; // Set TH2 value for timer2
RCAP2L = 0xE6; // baud rate is set to 57600 baud
}
else //if ((LineCode[0] == 0x21) && (LineCode[1] == 0x20 )) // 115200 (LineCode[0] == 0x00) && (LineCode[1] == 0xC2 ))
{
RCAP2L = 0xF3;
RCAP2H = 0xFF;
}
TH2 = RCAP2H; // Upper 8 bit of 16 bit counter to FF
TL2 = RCAP2L; // value of the lower 8 bits of timer set to baud rate
}
void TD_Init(void) // Called once at startup
{
// set the CPU clock to 48MHz
CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;
// set the slave FIFO interface to 48MHz
IFCONFIG |= 0x40;
SYNCDELAY;
REVCTL = 0x03;
SYNCDELAY;
FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions
SYNCDELAY; // see TRM section 15.14
FIFORESET = 0x08; // reset, FIFO 8
SYNCDELAY; //
FIFORESET = 0x00; // deactivate NAK-ALL
SYNCDELAY;
EP1OUTCFG = 0xA0; // Configure EP1OUT as BULK EP
SYNCDELAY;
EP1INCFG = 0xB0; // Configure EP1IN as BULK IN EP
SYNCDELAY; // see TRM section 15.14
EP2CFG = 0x7F; // Invalid EP
SYNCDELAY;
EP4CFG = 0x7F; // Invalid EP
SYNCDELAY;
EP6CFG = 0x7F; // Invalid EP
SYNCDELAY;
EP8CFG = 0xE0; // Configure EP8 as BULK IN EP
SYNCDELAY;
EP8FIFOCFG = 0x00; // Configure EP8 FIFO in 8-bit Manual Commit mode
SYNCDELAY;
T2CON = 0x34;
EPIE |= bmBIT3 ; // Enable EP1 OUT Endpoint interrupts
AUTOPTRSETUP |= 0x01; // enable dual autopointer feature
Rwuen = TRUE; // Enable remote-wakeup
EP1OUTBC = 0x04;
ES0 = 1; /* enable serial interrupts */
PS0 = 0; /* set serial interrupts to low priority */
TI = 1; /* clear transmit interrupt */
RI = 0; /* clear receiver interrupt */
EA = 1; /* Enable Interrupts */
Serial0Init(); // Initialize the Serial Port 0 for the Communication SCO
}
void TD_Poll(void) // Called repeatedly while the device is idle
{
// Serial State Notification that has to be sent periodically to the host
if (!(EP1INCS & 0x02)) // check if EP1IN is available
{
EP1INBUF[0] = 0x0A; // if it is available, then fill the first 10 bytes of the buffer with
EP1INBUF[1] = 0x20; // appropriate data.
EP1INBUF[2] = 0x00;
EP1INBUF[3] = 0x00;
EP1INBUF[4] = 0x00;
EP1INBUF[5] = 0x00;
EP1INBUF[6] = 0x00;
EP1INBUF[7] = 0x02;
EP1INBUF[8] = 0x00;
EP1INBUF[9] = 0x00;
EP1INBC = 10; // manually commit once the buffer is filled
}
// recieving the data from the USB Host and send it out through UART
// recieve the data from UART and send it out to the USB Host
}
Show Less