Open doppelhub opened 1 year ago
For low speed, one simple solution to this would be to drive MISO into an open drain NFET channel, with the drain pulled up to VCC. For higher speed, you could replace the existing buffer with another variant with per-pin output enable logic (e.g. 74xx125 buffer), and then connect all four OEn lines to CS.
For your convenience, here's my open source PCB redesign, which uses a 5V tolerant tri-state buffer (PN 74LVC125AS14-13): https://github.com/doppelhub/Honda_Insight_LiBCM/tree/JTS_inWork/Electronics/PCB%20(KiCAD)/FLASH/RevA This link will eventually move to: https://github.com/doppelhub/Honda_Insight_LiBCM/tree/main/Electronics/PCB%20(KiCAD)/FLASH/RevA
Feel free to use this design. I didn't create a pull request because I don't use Eagle... I can do that if you want me to, but it'll blow away your Eagle files.
Issue #1a: This device's 3.3V(nom) MISO output doesn't meet Vih(min) when used with a 5V MCU. For example, when used with a 328p operating at 5V(nom), the 328p's Vih(min) is VCC*.6. This means Vih(min) for MISO into the 328p is: VCC@5.0V: 3V VCC@5.1V: 3.06V VCC@5.2V: 3.12V VCC@5.3V: 3.18V VCC@5.4V: 3.24V VCC@5.5V: 3.30V
However, the NAND chip on this card has a specified output Vih(min) of VDD*0.75 and operates at 3.3V(nom). This 3.3V is sourced onboard from a supply with 1.5% specified uncertainty. Therefore, when the NAND drives MISO high, the specified Voh(min) is: VCC@3.25V: 2.44V
Therefore, since this device's specified MISO Voh(min) of 2.44 volts is less than a 5V ATMEGA 328p's Vih(min) of 3.00 volts, there is no guarantee that this device can properly communicate with an Arduino device operating at 5 volts.
Issue #1b: This device gets destroyed when operating on a 5V SPI bus if any slave drives MISO high (because the XTXD08 Vpin(max) is VDD+0.3 (i.e. 3.6 volts).