USB superspeed peripherals Forum Discussions
text.format{('custom.tabs.no.results')}
Greetings.
In my work I am using a CX3 reference device kit board and I am trying to develop a bootloader for it. Since I want the bootloader to have more features than either the bulkLoop Example Bootloader Firmware offers or the USBFlashProgrammer I took as base the first one and added some functions and vendor requests. I am encountering some weird behaviors when I try to erase Blocks in the SPI Flash through 0xEB custom vendor request and then send to the SPI the command 0xD8 0x08 0x00 0x00 verified through checking the bus. As far as I read in the winbond datasheet it is supposed to be Erase Block of 64KB(0xD8) followed by MSB first and ending with LSB where the last 3 bytes are used to store the address of the specified sector. 0x80000 = 0x8 * 0x10000 so it's a multiple of 64KBs. I would also like to point out that the memory sectors are not locked but even if they were it would ignore the command not erase a different one.
The function that follows shows the function I am using in order to erase the block which is very similar to the one used by USBFlashProgrammer.
CyFx3BootErrorCode_t
blockErase ( uint32_t address )
{
CyFx3BootErrorCode_t status = CY_FX3_BOOT_SUCCESS;
uint8_t addr[4];
addr[0] = 0xD8; /* Sector erase. */
addr[1] = (address >> 16) & 0xFF;
/* */
addr[2] = (address >> 😎 & 0xFF;
addr[3] = (address) & 0xFF;
status = spiWriteEnable();/* Write enable. */
if (status != CY_FX3_BOOT_SUCCESS)
{
return status;
}
Cx3BootSpiSetSsnLine(CyFalse); /* Sector erase. */
status = Cx3BootSpiTransmitWords(addr, 4);
if (status != CY_FX3_BOOT_SUCCESS)
{
Cx3BootSpiSetSsnLine(CyTrue);
return status;
}
Cx3BootSpiSetSsnLine(CyTrue);
status = waitForSpiStatus();
return status;
}
And then the custom vendor request added follows:
case 0xEB:
UartTransmit ("Erase Block", sizeof("Erase Block"));
UartTransmit ("\n\r", 2);
status = blockErase(bl);
break;
When I send the command I see the message of UartTraasmit() and the blockErase() gets executed as well.
The behavior I receive is that even though I pass 0x80000 as address it still erases from sector 0 regardless of the address.
First of all I would like to ask what Vendor Requests are supported by the OnBoard Bootloader. I would also like to say that the functionality of automatic USBFlashProgrammer img download to RAM for Control Center has been put out of order right now so I know I receive the right requests while having the bootloader working.behavior happens ?
Also do u have ideas why this is happening?
Show LessHello,
As per the "Can we able to send control data in video frame. " I created the interrupt endpoint with the configuration as follows.
endPointConfig.enable = 1;
endPointConfig.epType = CY_U3P_USB_EP_INTR;
endPointConfig.pcktSize = 64;
endPointConfig.isoPkts = 1;
endPointConfig.burstLen = 1;
status = CyU3PSetEpConfig(0x81, &endPointConfig);
CyU3PUsbFlushEp(0x81);
But how to send the data on this endpoint? Can I used same APIs like "CyU3PUsbSendEP0Data()" to send the data to host application.
Is there any way to test this application? I mean any open source software through that I can read the data from "Interrupt End Point".
Thanks,
Amit
Show LessKindly please let us know.
Hai all,
I am working on Cypress fx3 project. In my code I integrated 2 interface I2C and GPIF slave FIFO. Both interface code are in single thread. But I have make 2 separate thread for each interface. one for I2C communication and one for GPIF.
Q1. How to create 2 thread? how to call USB events? when 2 thread is created.
Q2. is any example is there for 2 thread?
Please do the needful.
Thank You.
With Best Regards,
Thrimurthi.M
Show LessHi,
I'm using Custom FX3 board (made with reference to FX3 DVK board). Cypress FX3 Bootloader and all the example firmware images runs in USB2.0 but not in USB3.0 speed. Even in 3.0port , fx3 device is enumerated as 2.0
I tried the steps mentioned in trouble shooting guide, "Disable LPM in the firmware using CyU3PUsbLPMDisable API and check for the issue. Call this API after the CyU3PConnectState with 10 us delay" In code i tried to get the speed and sent through UART, in which it shows 3 but does not get enumerated in Control center utility nor device manager.
Is there any other driver for usb3.0 ?
What would be the possible reason for this?
I need clarification on another point :
Will there be any problem if the SSRXP and SSRXM is interchanged in connector,i.e, SSRXM & SSRXP from cypress to SSRX+ & SSRX- of the USB3.0 connector?
Show Lesswhat operation is performed by demux (Type-C UpStream/HS DEMUX PS8742B) CYUSB3343 ?
Hi, I have a board with CYUSB3014 on it, and I made the PMODE[2:0] as "F11".
When I connect the board to PC, I can see "Cypress USE bootloader" in USB Control Center. Then I program the device using Program->FX3->RAM, after the programing, the USB Control Center will show "Program succeeded", but I can't find the device in USB Control Center after the programming. The image file is generated using Existing Project (Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxbulklpautoenum)using EZ USB Suite.
Is there any possible reason and solution for this phenomenon (can't connect to CYUSB3014 after programming the firmware)?
Show LessKindly please let us know.
Hello,
I tried to modify the descriptors in the firmware project "USB Video Class Bulk" provided with the SDK. The descriptors are originally configured to stream MJPEG images stored in "vidframes" structure. When "Class specific VS format" and "Class specific VS frame" descriptors are modified to stream YUY2 images, the device is successfully recognized by host but cannot begin streaming any data. In "MJPEG mode" it works correctly.
The attached text file contains the descriptors and other structures I've modified.
Did anyone get the same problem and solved it ?
Regards.
Show Lessi am trying to transfer data and power through CYUSB3343, ACA Docking and Power delivery simultaneously. But not getting, how to configure EEPROM.
Show Less