RP2040 Controlling MT8808 Crosspoint - Page 1
Forum section: electronics / general

author: sonicblaze
author_rank: Contributor
timestamp: September 20, 2022, 12:00:20 am
content: I have a self-designed PCB, based on the RP2040 as the core of the system, running C++. The primary function I'm working on is the control of an MT8808 8x8 Crosspoint IC (https://www.microsemi.com/product-directory/analog-cross-point-switches/4915-mt8808)Everything looks like it should be functioning to me, but I'm not seeing the connections happening on the MT8808. I've connected a logic analyzer and I see the data/pulses happening at what appears to be in-spec timings, but I don't see the actual closure of the switches. Hoping someone sees something I don't or can ask the right questions to help me dig to a result here.Per datasheet, "To write to a location, RESETmust be low while the address and data are set up. Then the STROBE input is set high and then low causing thedata to be latched. The data can be changed while STROBE is high, however, the corresponding switch will turn onand off in accordance with the DATA input. DATA must be stable on the falling edge of STROBE in order for correctdata to be written to the latch."I only have an 8 channel logic analyzer, so I've left RESET off the analyzer. I've confirmed by multimeter that it is indeed LOW as expected.I uploaded a basic program to walk the outputs I have configured, to make sure I'm actually writing DATA to the DATA pin, AY2 to AY2, and so on:So the mappings seem correct to me. I've also validated +5v on VDD, GND (0V) on VSS and VEE.Per the truth table in the datasheet, all AY/AX pins low strobed should connect X0 and Y0, yet I get no continuity between those two pins. Here's the logic capture:Any ideas or guidance would be greatly appreciated!

author: ledtester
author_rank: Super Contributor
timestamp: September 20, 2022, 12:35:58 am
content: Are you holding RESET low throughout the entire test? Once it goes high all of the switches are deactivated (all switches turned off).This procedure should set all of the switches:Code:set RESET LOWset DATA to HIGHset STROBE to LOWfor A from 0 to 63:present A on the GPIO pins for AX0-AX2, AY0-AY2set STROBE to HIGHwait a couple of microsecondsSET STROBE to LOW

author: sonicblaze
author_rank: Contributor
timestamp: September 20, 2022, 12:45:17 am
content: Yes, RESET is being kept low the whole time. I stuck that pin onto my oscilloscope just to make sure and it indeed stays low.

author: ledtester
author_rank: Super Contributor
timestamp: September 20, 2022, 01:22:06 am
content: What voltages are you using for VDD, VEE and VSS?

author: sonicblaze
author_rank: Contributor
timestamp: September 20, 2022, 01:24:30 am
content: +5vdc on VDD, GND (0V) on VSS and VEE

author: ledtester
author_rank: Super Contributor
timestamp: September 20, 2022, 01:37:50 am
content: I would try testing the switches by having the RP2040 continuously toggle one of the X I/O pins and see if you can detect anything on the Y pins with the scope.

author: eutectique
author_rank: Frequent Contributor
timestamp: September 20, 2022, 01:45:59 am
content: Where the X pins are connected? The Y pins? Are they grounded or kept at any constant level by any chance?

author: sonicblaze
author_rank: Contributor
timestamp: September 20, 2022, 01:48:34 am
content: Right now they're connected to nothing as I'm trying to figure out why it's not making switch connections. Prior, X was connected to an audio source, Y connected to output device.

author: mikerj
author_rank: Super Contributor
timestamp: September 20, 2022, 09:52:14 am
content: The datasheet gives two values for VIH(min): 2.0+VSSand 3.3v, but doesn't give any notes to explain when the 3.3v level applies. This may give the minimum possible threshold (i.e. with VSS=0v) in which case do you have suitable level translation between the RP2040 and the MT8808?

author: sonicblaze
author_rank: Contributor
timestamp: September 20, 2022, 02:49:02 pm
content: Quote from: mikerj on September 20, 2022, 09:52:14 amAbove that table it mentions:"Voltages are with respect to VEE = VSS = 0 V, VDD = 12 V unless otherwise stated."So forVIH(min): 2.0+VSS, that row is talking about when VSSis at 6.5v per the test conditions column on that row (last column); so when VSSis driven non-ground, the minimum for logic 1 looks to be 2volts over VSS.However when VEE/VSSis at 0v/grounded (per the comment above the table), the minimum is 3.3v without any formulas. With VDDhaving a range of 4.5v - 13.2v, my assumption is 3.3v is the logic 1 level necessary for anytime VEE/VSSis at 0v/grounded and VDDis within range. (And my VDDis being driven at 5v, so within that range spec).

author: mikerj
author_rank: Super Contributor
timestamp: September 20, 2022, 07:42:55 pm
content: Quote from: sonicblaze on September 20, 2022, 02:49:02 pmSo a voltage translator will be needed to reliably drive it from 3.3v logic.

author: sonicblaze
author_rank: Contributor
timestamp: September 20, 2022, 08:38:45 pm
content: Maybe I'm not following, but the rp2040 outputs 3.3v on its GPIO pins. Why is a voltage translator needed for voltage when it's driving exactly what is needed?

author: eutectique
author_rank: Frequent Contributor
timestamp: September 20, 2022, 10:12:21 pm
content: Could you do the following:Set X and Y addresses (can be 0, so X0 is routed to Y0)Assert STBAssert DATADeassert STBAny difference?

author: sonicblaze
author_rank: Contributor
timestamp: September 21, 2022, 10:25:01 pm
content: Zero change when trying what you suggested.However I got fed up and just removed the IC itself and flowed in a new one, and everything is working exactly as expected now. My only guess is heat damage from the reflow oven, or static damage at some point during handling.Thanks everyone for bouncing ideas around, glad I wasn't missing anything myself, I was starting to go a bit nuts

author: mikerj
author_rank: Super Contributor
timestamp: September 23, 2022, 06:56:09 am
content: Quote from: sonicblaze on September 20, 2022, 08:38:45 pmIf theminimumlevel required to signal a logic 1 on the MT8808 is 3.3v, and themaximumlogic 1 level the RP2040 can output is 3.3v then you have zero margin.