FreeCalypso > hg > freecalypso-docs
comparison DUART28-PPD-surprise @ 72:2ac10b2cde4f
DUART28-PPD-surprise article written
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 19 Jul 2021 05:01:15 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 71:bf7a0c2b2b50 | 72:2ac10b2cde4f |
|---|---|
| 1 DUART28 partial power-down surprise behaviour | |
| 2 ============================================= | |
| 3 | |
| 4 FreeCalypso DUART28 adapter was specifically designed to handle partial | |
| 5 power-down scenarios as gracefully as possible. There are two possible PPD | |
| 6 scenarios: | |
| 7 | |
| 8 1) USB host is connected (USB power present), but the connected Calypso device | |
| 9 is in the switched-off state in the Iota VRPC sense. This condition occurs all | |
| 10 the time in standard FreeCalypso workflows. | |
| 11 | |
| 12 2) The connected Calypso device is up and running, but there is no USB host | |
| 13 connected. This scenario is practically relevant only when the Calypso device | |
| 14 is equipped with LCD and keypad peripherals and runs handset firmware that is | |
| 15 capable of untethered operation. | |
| 16 | |
| 17 As we have learned through experience with Caramel2 boards, PPD scenario 1 | |
| 18 would be best handled on the Calypso device side by inserting an LVC buffer | |
| 19 powered from Calypso V-IO into Calypso input signal paths, rather than on the | |
| 20 USB adapter side. However, for already existing Calypso boards which don't have | |
| 21 any such LVC buffers, DUART28 provides some improvement over the alternatives: | |
| 22 current feeding into powered-down Calypso inputs is reduced to 1.27 mA per pin, | |
| 23 and the outputs from the adapter are 2.8V rather than 3.3V. | |
| 24 | |
| 25 For PPD scenario 2 (which matters for Caramel2 in the Luna configuration) we | |
| 26 were hoping that the combination of LVC input and output buffers on the DUART28 | |
| 27 side and UART data line pull-up resistors on the Caramel2 side would do the | |
| 28 trick, and produce the graceful behaviour we were after. Unfortunately though, | |
| 29 this PPD scenario does not work as well in practice as we hoped for at design | |
| 30 time. | |
| 31 | |
| 32 DUART28 design includes pull-up resistors to the adapter's 2.8V rail in front of | |
| 33 all 6 LVC input buffers. These pull-up resistors are there to keep these LVC | |
| 34 inputs from floating (and thus propagating garbage, possibly even rapidly | |
| 35 oscillating garbage, to FT2232D inputs) in the following scenarios: | |
| 36 | |
| 37 1) PPD scenario 1; | |
| 38 | |
| 39 2) Even more importantly, partial connection scenarios. DSR input is currently | |
| 40 expected to be almost always unconnected, as none of our Calypso devices except | |
| 41 GTM900 feature DSR outputs; RI input is likewise connected only very rarely | |
| 42 (only available on Caramel2 and requires a separate wire connection), and there | |
| 43 is no DCD output on FCDEV3B, causing DCD input to be unconnected as well when | |
| 44 working with FCDEV3B. | |
| 45 | |
| 46 However, these pull-up resistors create a nasty surprise in PPD scenario 2: | |
| 47 current from Calypso outputs flows in the reverse direction through these | |
| 48 pull-up resistors into the powered-down DUART28 adapter's P_2V8 rail, enough | |
| 49 power flows into that rail to power up the other LVC buffer serving adapter | |
| 50 outputs, those outputs drive low because the inputs coming from FT2232D are | |
| 51 powered-down low, and the inputs to Calypso UARTs become low instead of high. | |
| 52 Calypso UARTs apparently don't like it when their RxD inputs are continuously | |
| 53 low (break condition), and all Calypso sleep modes are disabled as the result. | |
| 54 The lack of sleep becomes visible on Caramel2 with the yellow STATUS LED | |
| 55 remaining lit continuously, rather than flashing with sleep-wake activity as it | |
| 56 does in expected normal operation. | |
| 57 | |
| 58 What is incredible about this erratic behaviour scenario is how little power it | |
| 59 takes to turn on the LVC buffer serving adapter outputs. With 3 out of 4 | |
| 60 Calypso outputs driving high, the maximum total current that can flow through | |
| 61 the 3 100 kOhm resistors that stand in the way is 84 uA. The voltage measured | |
| 62 at the P_2V8 circuit node in this condition is about 1.22 V, i.e., out of the | |
| 63 2.8 V put out by Calypso, about 1.6 V drops across the 100 kOhm resistors (thus | |
| 64 it seems that only about 16 uA flows through each resistor), and the unlucky | |
| 65 74LVC541A buffer IC gets powered up with just 48 uA at 1.22 V. In this erratic | |
| 66 condition, the outputs of this buffer IC drive low strongly enough to overpower | |
| 67 the 100 kOhm pull-ups on Calypso inputs, and those latter inputs sense low | |
| 68 instead of high. | |
| 69 | |
| 70 Measuring voltages at other circuit nodes in this state, we see that P_5V rests | |
| 71 at about 0.89 V - we are seeing reverse leakage through the 2.8V LDO regulator, | |
| 72 from its output to its input. However, P_3V3 (the output of the other LDO | |
| 73 regulator) rises to no more than 8 mV - thankfully, not enough power comes in | |
| 74 through these back paths to turn on another separate LDO, and no spurious resets | |
| 75 are triggered via the 74LVC2G07 boot control circuit. | |
| 76 | |
| 77 Possible solutions | |
| 78 ================== | |
| 79 | |
| 80 There are two general approaches we can take: | |
| 81 | |
| 82 1) We can create DUART28 V2 with a more complex design for these pull-ups: | |
| 83 perhaps we can insert diodes somewhere to block the reverse current flow through | |
| 84 pull-up resistors, or seeing that P_3V3 is not powered on by this erratic back | |
| 85 feeding, we could add a third separate LDO regulator just for these pull-ups. | |
| 86 | |
| 87 2) We can just live with this defect, as it is not particularly serious. | |
| 88 | |
| 89 It is worth noting that the erratic behaviour in question occurs ONLY in PPD | |
| 90 scenario 2, and this PPD scenario is relevant ONLY for Caramel2+Luna setups: | |
| 91 not for FCDEV3B, and not for Caramel2 used in a modem configuration. Given how | |
| 92 few FC community members are expected to work with Luna, and given that we have | |
| 93 a large surplus of unsold DUART28 boards, a simple solution would be to issue | |
| 94 two DUART28 boards to every community member who works with Luna, keep one board | |
| 95 unmodified (all 6 input pull-up resistors intact per the original design), and | |
| 96 modify the other board for Caramel2+Luna configuration. | |
| 97 | |
| 98 If a DUART28 adapter board is to be modified specifically for C2+Luna, the | |
| 99 modification will consist of removing 4 0402 discrete resistors: R11, R12, R14 | |
| 100 and R16. These are pull-up resistors on RxD, CTS, DCD and RxD2 inputs - these | |
| 101 4 signals are the ones driven from Caramel2+Luna to DUART28. OTOH, the other | |
| 102 two pull-up resistors for DSR and RI need to remain: there is no DSR output on | |
| 103 Caramel2, and Calypso GPIO1 (which could otherwise be RI) is made inaccessible | |
| 104 by Luna cabling. | |
| 105 | |
| 106 A DUART28 adapter board that has been modified in this manner should be used | |
| 107 only with Caramel2 and not with FCDEV3B. (Connecting FCDEV3B would result in a | |
| 108 floating LVC buffer input propagating garbage to FT2232D DCD input, which is | |
| 109 bad.) Furthermore, even with Caramel2 (with or without Luna) certain user | |
| 110 behaviours will need to be adjusted when using a sans-pull-up DUART28 adapter: | |
| 111 specifically, all operations with fc-loadtool (flashing), fc-iram (miscellaneous | |
| 112 run-from-RAM programs) and fc-xram (FFS editor) need to be performed through the | |
| 113 secondary UART (the one that carries RVTMUX with running firmware), rather than | |
| 114 the primary UART that carries the main AT command channel. In contrast, the | |
| 115 ttyUSB device corresponding to the primary UART should only be opened when the | |
| 116 Calypso+Iota chipset is switched on and the firmware is running. The reason | |
| 117 for these user guidelines is that when a modified-DUART28 ttyUSB port is opened | |
| 118 while the Calypso+Iota chipset is switched off, FT2232D inputs will be receiving | |
| 119 garbage. The primary UART channel has flow control and modem control signals, | |
| 120 whereas the secondary UART is data leads only - thus the Linux host will see | |
| 121 less bogosity on the latter. |
