Updating PID in FX1 CY7C64713

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
DaHa_4684521
Level 1
Level 1

We need to update only the PID on our FX1 CY7C64713 device to be compatible with our new driver.

We are using the onboard memory.  Is there a specific address that hex can be written to to easily update this, possibly through the A0 vendor command? Or any other method?

0 Likes
1 Solution

Hello,

Yes you can update the VID and PID in the RAM using the 0xA0 vendor command.

Follow the steps below:

1. Open the .M51 file in the project  and search for DSCR, the corresponding value will give you the address location of the descriptors in the RAM.

pastedImage_0.png

2.  Note down the value. In this case its 800H. This is the starting position of the device descriptors. The PID value is stored at an offset of 10 i.e. at address 0x080A. This address needs to be accessed for the value is to be changed.

You can use control center for this.

3. Hold the CPU in reset  using vendor command:

req code: A0

value: E600

index: 0

data: 1

len: 1

pastedImage_5.png

4. Change the PID value at 0x080A to 0x4455:

req code: A0

value: 0x080A

data: 0x5544 (LSB first)

index: 0

len: 2

pastedImage_6.png

5. Release the CPU reset:

req code: A0

value: E600

index: 0

data: 0

len: 1

pastedImage_7.png

6. Reconnect the device: Use the reconnect button.

pastedImage_8.png

7. The device will now enumerate with the new PID:

pastedImage_9.png

Best Regards,

Yatheesh

View solution in original post

0 Likes
3 Replies
YatheeshD_36
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

If you are using EEPROM as the external memory, then vend_ax firmware in the FX2LP DVK can be used to read and write to EEPROM.

Please go through the application note in this link: https://www.cypress.com/documentation/application-notes/an45471-create-your-own-usb-vendor-commands-...

Note: in the application note they have mentioned 0xa7 is for EEPROM write. Please use Req code: 0xa2, direction: out for EEPROM write and Req code: 0xa2, direction: IN for EEPROM read. The address of the EEPROM should be set in the firmware.

Load the RAM with the vend_ax firmware, Write the data to be loaded in the "data to send box" , req code = 0xa2, direction: OUT, wvalue: starting address from which the data should be written. index: 0x0000

Please refer to the attached screenshots where i have used vendor commands to update the small EEPROM contents.

1. updating the VID and PID

pastedImage_2.png 

2. Retrieve the EEPROM contents

pastedImage_3.png

3. Reset the device to load and enumerate with the newer values.

Thanks,

Yatheesh

0 Likes

Hi,

We are using onboard memory, not external eeprom.

Is there still a known address for this?

On Thu, Apr 16, 2020 at 1:26 AM YatheeshK_36 <community-manager@cypress.com>

0 Likes

Hello,

Yes you can update the VID and PID in the RAM using the 0xA0 vendor command.

Follow the steps below:

1. Open the .M51 file in the project  and search for DSCR, the corresponding value will give you the address location of the descriptors in the RAM.

pastedImage_0.png

2.  Note down the value. In this case its 800H. This is the starting position of the device descriptors. The PID value is stored at an offset of 10 i.e. at address 0x080A. This address needs to be accessed for the value is to be changed.

You can use control center for this.

3. Hold the CPU in reset  using vendor command:

req code: A0

value: E600

index: 0

data: 1

len: 1

pastedImage_5.png

4. Change the PID value at 0x080A to 0x4455:

req code: A0

value: 0x080A

data: 0x5544 (LSB first)

index: 0

len: 2

pastedImage_6.png

5. Release the CPU reset:

req code: A0

value: E600

index: 0

data: 0

len: 1

pastedImage_7.png

6. Reconnect the device: Use the reconnect button.

pastedImage_8.png

7. The device will now enumerate with the new PID:

pastedImage_9.png

Best Regards,

Yatheesh

0 Likes