FX3 UART Problems

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

cross mob
MaSz_4417621
Level 1
Level 1

Hello,

we use the CYUSB3KIT-003 EZ-USB® FX3™ SuperSpeed Explorer Kit and have some problems with the UartLpRegMode example application (FX3 SDK 1.3.4). When we send data from the host pc to the fx3 via UART, there is a loss of data. When we send for example the string "1234567890" with 115200k Baud every 100ms, we sometimes just receive "1234" on the pc and the rest of the data is lost.

1. Are there any known issues concerning UART transfers? I think the fx3 receives the wrong data.

2. When we set the uart tx timeout to 0xFFFFFFFF CyU3PUartSetTimeout (1, 0xFFFFFFFF), the CyU3PUartTransmitBytes() function never returns. Is that ok?

Thanks in advance

Marc

0 Likes
1 Solution

Hello,

I didn't change anything in the default demo app. You can reproduce the problem if you send the string "1234567890" with 115k Baud every 10ms and look at the data looped back. In the looped back data sometimes characters are missing.

I changed the tx timeout to 1 and then everything works fine. I think that while waiting for data to be transmitted, no data can be received because Mutex is locked. That's why data was lost.

CyU3PUartSetTimeout (1, 50000); -> CyU3PUartSetTimeout (1, 1);

So consider this as solved.....

Marc

View solution in original post

0 Likes
2 Replies
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hi Marc,

- Can you share the changes you made to the default firmware? And also share the UART prints that you are getting.

Regards,

Rashi

Regards,
Rashi
0 Likes

Hello,

I didn't change anything in the default demo app. You can reproduce the problem if you send the string "1234567890" with 115k Baud every 10ms and look at the data looped back. In the looped back data sometimes characters are missing.

I changed the tx timeout to 1 and then everything works fine. I think that while waiting for data to be transmitted, no data can be received because Mutex is locked. That's why data was lost.

CyU3PUartSetTimeout (1, 50000); -> CyU3PUartSetTimeout (1, 1);

So consider this as solved.....

Marc

0 Likes