1
votes

We have a system a group of PIC32 MCU on a shared UART bus plus a couple I/Os as hand-shake akin to chip select. One master multiple slaves. The transmit from master to slave is direct and goes well. the response signal from slave to master goes trough a 1K resistor with a 10K pullup on master side. Each slave must disable its UART if not selected so as not to disturb other slave's transmission. The master is always active and allows a 400 us delays between two slaves communication sequence. Transmissions are made in 4-bytes chunks.

One out of 5 systems we build have issues where the start bit from one of the slave in incomplete. A glitch of about 1/4 bit width. When this appends, the master master fail to recognise the chunk and timeout the transmission. So far we worked around the problem by changing the faulty MCU, but that is a development-time fix, not good for production.

Anyone have seen something similar? what can be the issue?

We are using pic32mx320F064H-80 for both master ans slave devices.

Thank you.

2

2 Answers

0
votes

A 1:10 ratio with the resistors can be dodgy, and the low level may not be well recognized by the master. For your circuit, I assume the 1k resistor is here to protect the slaves if two manage to get enabled at the same time. For this purpose, 120 Ohms is enough under 3.3V (14mA short circuit current).

On a previous project I found that 10k pullups tend to be weak, depending on the fan-in (number of slaves in your case). I would suggest you to reduce it to 4.7k . With those values the ratio is now 0.025.

0
votes

Either the selected slave is not enabled soon enough before transmission
- or -
the previous selected slave is not disabled soon enough.


Knowing the baud would help as that would bring the "400 us" into perspective.