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

USB superspeed peripherals

ViKu_2048416
Level 3
25 replies posted 25 sign-ins 10 replies posted
Level 3

Hi,

I am using FX3 in our project, in which I read Unique ID of FX3 with CyU3PReadDeviceRegisters() API. The address I am using is 0xE0055010 to read the Unique ID. But the Unique ID of three devices are same (ID - 59050000) out of five devices. Please guide us to solve this problem.

Thanks and Regards,

Vignesh Kumar R.

1 Solution
YangyangC_06
Employee
50 likes received 25 likes received 10 likes received
Employee

I attach a project with which you could read the E-fuse ID register.

Snipaste_2019-08-27_16-56-18.png

Snipaste_2019-08-27_16-55-58.png

You coudl find that the results from two FX3 chips are different.

Try to send the command as below.

Snipaste_2019-08-27_16-56-55.png

View solution in original post

0 Likes
7 Replies
YangyangC_06
Employee
50 likes received 25 likes received 10 likes received
Employee
0 Likes
ViKu_2048416
Level 3
25 replies posted 25 sign-ins 10 replies posted
Level 3

Hi yang,

Thanks for your response, now I tried with two registers 0xE0055010 as well as 0xE0055014. This time also I get same results for two devices.

1. First device:

     0xE0055010 - 0x59050000

     0xE0055014 - 0x09000000

2. Second device:

     0xE0055010 - 0x59050000

     0xE0055014 - 0x09000000

Is there anyway to overcome this.

Regards,

Vignesh Kumar R.

0 Likes
YangyangC_06
Employee
50 likes received 25 likes received 10 likes received
Employee

I attach a project with which you could read the E-fuse ID register.

Snipaste_2019-08-27_16-56-18.png

Snipaste_2019-08-27_16-55-58.png

You coudl find that the results from two FX3 chips are different.

Try to send the command as below.

Snipaste_2019-08-27_16-56-55.png

0 Likes
ViKu_2048416
Level 3
25 replies posted 25 sign-ins 10 replies posted
Level 3

Hi Yang,

Here is my observation,

uint32_t GetSerialNumber[1];

apiRetStatus = CyU3PReadDeviceRegisters((uint32_t *)lUIDRegsiterAddress,1,(uint32_t *)GetSerialNumber);

with this API if I declare the GetSerialNumber as locally it returns correct unique ID. But I declare the GetSerialNumber globally we are facing the problem. I done the above in release mode.

As well as I tested in debug mode, in debug mode there is no problem with declaration. It works fine at globally as well as locally.

Can you please comment on my observation.

Regards,

Vignesh Kumar R.

0 Likes
YangyangC_06
Employee
50 likes received 25 likes received 10 likes received
Employee

No, I think maybe you make something wrong on your side.

I don't met any problem whether the variable is defined as global one or local one, and I get same result in both debug mode and release mode.

Snipaste_2019-08-30_09-22-37.png

Snipaste_2019-08-30_09-23-32.png

Snipaste_2019-08-30_09-23-20.png

If you indeed get different result, please check the propertites of your project, including the optimization and tool chain settings.

Try to keep the same settings to the project which I attach in previous reply.

0 Likes
ViKu_2048416
Level 3
25 replies posted 25 sign-ins 10 replies posted
Level 3

Hi,

First difference is, the SDK version I am using is 1.3.1 but you are using 1.3.3 or 4 I guess. I have opened your project in 1.3.3 version, in that under optimization other optimization flag shows empty,

pastedImage_0.png

But in our project we are using the following value,

pastedImage_1.png

it seems to be this -Os indicates optimization by size I guess. if other optimization flags field is empty there is no optimization done I guess. Is that correct?

Best Regards,

Vignesh Kumar R.

0 Likes
Rashi_Vatsa
Moderator
Moderator 500 solutions authored 1000 replies posted 750 replies posted
Moderator

Hello Vignesh,

Please refer to the attached snippet or different optimization. Optimization levels can be chosen in the optimization option in the settings of the project

Regards,
Rashi
0 Likes