2013-01-21 07:21 AM
Hi,
I have two identical cards with stm32f4 on them. I think one of them has a broken USART1 on it. If i erase flash on both cards, load the same code onto them, the USART1 only works on one of the cards. Everything else seems to work properly, including another USART. If i measure the Tx-pin, its constant high on the broken USART. Is there some way I can dig deeper into this problem to see what has happened? How do you break an USART, how sensitive are they?Thanks,Tom2013-01-21 07:42 AM
How do you break an USART, how sensitive are they?
Apply +/-12V directly to the MCU Tx/Rx pins ...
Is there some way I can dig deeper into this problem to see what has happened?
I would configure that pin as GPIO, and see if I can toggle it. That wouldn't be a final proof, of course. And I would check all other involved wirings/parts for shorts and open circuits with an ohmmeter.
2013-01-21 07:45 AM
Feeding in high voltages, or ESD, is quite effective at evaporating silicon. This can be localized to a single pin, as can soldering or component issues.
Does the USART perform correctly with the system loader when BOOT0=High at reset? How about setting the pin as a GPIO and toggling it? Does that work?2013-01-21 08:06 AM
Tested to toggle the pins, but with no success. The RX pin toggles correctly, but the TX-pin does not. Stays high even after GPIO_ResetBits..
I will try to set Boot0 high at reset, and retry my GPIO test. Think that Boot0 is available at my JTAG connector.EDIT: No it is not, don't know what i was talking about.. It is connected to ground in serie with a 10k resistor.2013-01-21 08:48 AM
Sounds like it's shorted high, check you don't have any soldering issues, xray/inspect.
2013-01-21 10:54 AM
Yes it sure does. I have measured as much as I can now but can't find a shortcut anywhere.. Only 100 components approx.
One thing I did notice though, is that it is actually not logic high, but 1.72V .. I can't draw any conclusions from this though :)2013-01-21 11:31 AM
That perhaps the pin is trying to assert low, and is fighting an external high connection.
You could chase down what it's connected too, you could lift the pin, cut the trace or just replace the part completely. Presumably this is a trial batch rather than production. Check also for diode/caps placed backward, other chip orientations, and res/cap values. Or whatever is on the net in question.2013-01-21 12:13 PM
Thanks for the advices Clive!
I forgot to mention , although it is of importance, that the USART did work when we first got it. I will try to see if a diode or some other component has gone under.I assume, based on your advice, since other USART works and since I can debug the processor as normal, this is probably not the faulty component?My first guess was that the processor was the faulty component, but it may be some net in the PCB that has failed. The USART1 is simply a pin to pin connection, no other components involved in this part of the net.2013-01-21 12:20 PM
What is it connected too?
I'd be tempted to cut the trace and figure out which end was causing the problem.2013-01-21 11:45 PM
''it is actually not logic high, but 1.72V''
As clive1 says, that might be because it is ''fighting'' something external... Does this voltage change is you toggle the pin drive?