MSoM GPIO Issue

Hello,

I am having some issues with one of the GPIO pins on an M404 that causing a button to not be usable. I have an external button connected to pin A6/D29 on an M404 that I’ve pulled-up via an external 10K resistor. There are four other buttons connected and pulled up the same way to pins D7, A4, A7, and D27. When I power everything on, my four other buttons read 3.3V, but the one on A6 reads 1.4V. When I disconnect the M404 from the carrier board and power on the system, the pin for the button going to A6 now reads 3.3V. The result is that the button never reaches a high enough voltage to be considered “not pressed,” and the button is not functional. There does not appear to be any solder bridges across the M.2 connector pins between the A6 pin and adjacent pins, and this was verified with a multimeter (no continuity). This issue occurs both when the M404 is running my firmware and when in DFU mode. All of my other identical systems so far have not had this issue (at least 10 of them). Could this be an internal issue in the M404 causing current to be leaking from A6 to ground or what other possibilities should I consider?

It seems like something is applying a 7400 ohm pull-down on A6. With a 10K pull-up to 3V3, that would form a voltage divider which would get you 1.4V on the pin. This would be unusual because that's not what the software pull is on A6 (PB[7]). There is no hardware pull on that pin; it's also an analog input so a hardware pull would render the ADC basically useless. There shouldn't be anything special about PB[7] as it's not a debug pin or boot mode pin.

The only other thing is that A6 is PMIC_INT on the M.2 eval board. However that applies a software pull-up, not down, so that doesn't make sense.

It's unclear what the cause could be.

1 Like