FreeCalypso > hg > freecalypso-schem2
comparison venus/doc/USB-and-mobile-domains @ 38:32b848a081a3
venus/doc/USB-and-mobile-domains treatise written
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 26 Nov 2021 23:02:19 +0000 |
parents | |
children | beb6519a3be5 |
comparison
equal
deleted
inserted
replaced
37:9c2f913fa5cf | 38:32b848a081a3 |
---|---|
1 1. Introduction | |
2 | |
3 FC Venus board will consist of two principal circuit domains: the mobile domain | |
4 corresponding to a battery-powered mobile phone and a USB computer interface | |
5 block which becomes the USB domain. The USB domain will be based around FT2232D | |
6 USB to dual UART chip, it will be strictly bus-powered (never taking any power | |
7 from the battery), and its sole purpose is to provide a host computer interface | |
8 to the mobile, i.e., make the two Calypso UARTs accessible via USB. The USB | |
9 domain will get powered only when a host computer (or a USB charger) is | |
10 connected, and will be totally unpowered at all other times, i.e., when the | |
11 board is untethered and runs on battery power like a true mobile phone. | |
12 | |
13 At the top level of circuit hierarchy (see src/top/board.v), our board consists | |
14 of the two principal domains (mobile and USB) interconnected with just a few | |
15 wires: common ground, the set of UART signals going between the two domains, a | |
16 charging power supply rail (user-switched, so charging won't always happen when | |
17 a USB host is connected) and a couple of boot control signals. | |
18 | |
19 2. UART signals between domains | |
20 | |
21 The connection of UART interface signals between USB and mobile domains is | |
22 arguably the most challenging and the most complicated part of our entire | |
23 built-in USB-serial arrangement. The challenges and the circuit complexity | |
24 which we came up with in response to these challenges stem from the need to | |
25 avoid bad things happening in partial power-down scenarios. Most of the | |
26 background information is provided in section 1.12.2 of our FreeCalypso Handset | |
27 Specification (FC-handset-spec in freecalypso-docs), and this document provides | |
28 further details that were elucidated only in the process of capturing the actual | |
29 circuit design for FC Venus. | |
30 | |
31 2.1. Set of signals | |
32 | |
33 The set of UART interface signals implemented on FC Venus will be the same as | |
34 listed in FC Handset Specification section 1.12.1. We have a total of 5 signals | |
35 running from Calypso outputs to FT2232D, and a total of 4 signals running from | |
36 FT2232D to Calypso inputs. | |
37 | |
38 2.2. Buffer ICs | |
39 | |
40 Two Nexperia LVC family buffer ICs will be used on FC Venus for the purpose of | |
41 ferrying our set of UART interface signals between the two domains. These two | |
42 ICs are U401 (74LVC125A) in the mobile domain and U705 (74LVC541A) in the USB | |
43 domain. | |
44 | |
45 U401 is powered from the mobile domain's Vio rail, and it serves only the 4 | |
46 signals running from FT2232D to Calypso inputs, neatly using all 4 slots of | |
47 74LVC125A. This LVC buffer serves as a barrier, preventing feeding of power | |
48 from USB domain outputs into the Calypso+Iota chipset's Vio rail in the PPD | |
49 scenario where a USB host is connected, but the charging switch is off or the | |
50 battery is critically low and undergoing precharge, with the chipset switched | |
51 off. | |
52 | |
53 No corresponding mobile domain buffers will be used for Calypso outputs: these | |
54 5 signals will be connected directly between Calypso pads and the interdomain | |
55 interface, where they will go to U705. | |
56 | |
57 On the USB side, U705 will be powered from a USB domain 3.3V rail, i.e., the | |
58 output of a 3.3V regulator powered from USB. (This USB domain supply will be | |
59 the only part of FC Venus board using 3.3V - there are no regulated voltages | |
60 higher than 2.8V in the mobile domain.) The 8 slots of this 74LVC541A buffer | |
61 are split between 5 serving the Calypso to FT2232D signal direction and the | |
62 other 3 serving FT2232D to Calypso signals. | |
63 | |
64 The purpose of the 5 U705 buffer slots serving the Calypso to FT2232D signal | |
65 direction is to stop the flow of current out of Calypso UART and GPIO outputs | |
66 in the "normal mobile usage" PPD scenario when there is no USB host connected. | |
67 With this buffer present, Calypso UART outputs will "see" a high impedance and | |
68 won't source any battery-drawn current (beyond leakage of about 0.1 uA typical | |
69 per pin, according to Nexperia datasheet), no matter whether the USB domain is | |
70 powered or not. OTOH, if this buffer were omitted and Calypso outputs were | |
71 connected directly to FT2232D inputs, the latter inputs would appear as shorts | |
72 to ground when USB power is absent, putting an unacceptable load on Calypso | |
73 outputs. | |
74 | |
75 The other 3 slots of U705 serve FT2232D-to-Calypso signals TxD, DTR and TxD2. | |
76 On these 3 signals there are pull-up resistors to VBAT in front of U401 inputs | |
77 (see section 2.4), and the U705 buffer's Ioff feature will allow those pull-up | |
78 resistors to work as intended. If these pulled-up-to-VBAT nets going to U401 | |
79 inputs were sourced directly from FT2232D outputs without going through U705, | |
80 the powered-off FT2232D chip's I/O pins would present a lower resistance to GND | |
81 than the pull-up to VBAT, drawing excessive current from the battery and making | |
82 the pull-up ineffective. | |
83 | |
84 There is just one FT2232D-to-Calypso UART interface signal that does not go | |
85 through U705, and it is RTS. It has a pull-down resistor to GND instead of a | |
86 pull-up to VBAT in front of its U401 input. With only 8 signals rather than | |
87 all 9 needing to go through a USB domain LVC buffer, the 8 slots of a single | |
88 74LVC541A IC become sufficient. | |
89 | |
90 2.3. UART signals from Calypso to FT2232D | |
91 | |
92 In the case of these 5 signals running from Calypso outputs to U705 inputs, one | |
93 very noteworthy detail is that there are _no_ pull-up or pull-down resistors on | |
94 these nets. When the Calypso+Iota chipset is switched on, all 5 Calypso outputs | |
95 will be actively driving and there are no problem issues. However, in the PPD | |
96 scenario where a USB host is connected, but the Calypso+Iota chipset is switched | |
97 off (the charging switch is off or the battery is precharging), the absence of | |
98 pull resistors suggests that U705 inputs will be floating, which certainly looks | |
99 bad at first glance. | |
100 | |
101 However, a more detailed analysis shows that floating CMOS inputs aren't bad | |
102 "in principle", but instead they are bad when they can float around the input | |
103 switching threshold, causing potential oscillations and high current draw from | |
104 the buffer's Vcc supply. And in the present case, the Mother's analysis | |
105 suggests that the signals in question won't float around the switching threshold | |
106 - instead we expect them to be sensed as a consistent logic low in the PPD | |
107 scenario in which they appear to float. | |
108 | |
109 In this PPD scenario, the Iota chip's VRIO regulator is off, thus the Vio rail | |
110 will be at 0 V unless something feeds wayward power into it. Calypso chip | |
111 outputs connected to the signal nets under consideration have clamping diodes | |
112 to this Vio rail. Therefore, if a stray voltage somehow accumulates on those | |
113 nets that is high enough to approach the LVC buffer's input switching threshold, | |
114 it will also be high enough to drain to Vio through Calypso I/O pad clamping | |
115 diodes, and ultimately to GND. | |
116 | |
117 What is our reason for not adding pull-up or pull-down resistors to these nets? | |
118 Besides the obvious reason of not wanting to throw even more PCB real estate at | |
119 this already way overcomplicated USB-serial interface arrangement, each of the | |
120 two options (pull-up or pull-down) would introduce its own problems. | |
121 | |
122 The pull-up resistor option has already proven to be problematic on the | |
123 DUART28+Caramel2 combo, particularly in the Luna configuration in which both PPD | |
124 scenarios become real. When the Calypso+Iota chipset is on but there is no USB | |
125 power present, current from Calypso outputs flows backwards through these | |
126 pull-up resistors and feeds into the USB domain's power rail to which these | |
127 resistors are connected. The USB domain output buffer then powers up | |
128 erratically, feeding garbage to Calypso inputs and preventing Calypso from | |
129 entering sleep modes. And in the opposite PPD scenario (USB power present, | |
130 chipset switched off), enough power can flow through these resistors into | |
131 Calypso I/O pad clamping diodes to feed into Vio and cause erratic LED | |
132 behaviour! And on FC Venus we would have the additional problem of not having | |
133 a USB-powered 2.8V regulator, as we don't need it for anything else. | |
134 | |
135 Pull-down resistors to GND would be much less problematic. However, if we use | |
136 a resistor value that is low enough to be better than floating, such as the | |
137 "canonical" 100 kOhm, we would be introducing a *continuous* drain on the | |
138 battery in normal operation. Calypso outputs corresponding to host RxD, RxD2, | |
139 DCD and RI will normally be high, thus each of those would be a 28 uA drain. | |
140 All 4 combine into a 112 uA continuous drain for no good justification, always | |
141 present whether or not there is a USB host connected, unlike the other similar | |
142 drain discussed in section 2.4. Therefore, the Mother's decision is to do away | |
143 with pull resistors in either direction, and hope that my reasoning is correct | |
144 in that we won't get prolonged floating voltages around the input switching | |
145 threshold. | |
146 | |
147 Because these seemingly-floating nets are expected to be sensed as logic low, | |
148 the same logic low will be propagated to FT2232D inputs, which means a break | |
149 condition on RxD and asserted state on all control signals. For this reason | |
150 the Mother's earlier software recommendation still holds: when operating in this | |
151 scenario, only operate on the second UART channel (the data leads only one that | |
152 also has boot controls), and don't open the AT command UART channel except when | |
153 the mobile is switched on and regular operational firmware runs normally. | |
154 | |
155 2.4. Pull-up resistors to VBAT | |
156 | |
157 Experience with Caramel2 boards shows that Calypso UARTs don't like seeing a | |
158 break condition presented to them for extended lengths of time, thus we need to | |
159 design our FC Venus USB-serial interface in such a way that when there is no USB | |
160 host present, Calypso inputs RX_MODEM and RX_IRDA will receive high levels | |
161 (meaning RS-232 idle) rather than low (meaning RS-232 break). Having an | |
162 extended break condition presented to UARTs prevents entry into Calypso sleep | |
163 modes, which is obviously bad. The practical implication is that U401 inputs | |
164 which this buffer propagates to Calypso RX_MODEM and RX_IRDA need to be have | |
165 some kind of mobile domain pull-ups on them, as opposed to floating or pulled | |
166 down. Less critically, we do the same for the DTR signal running from the USB | |
167 domain to the mobile domain - thus DTR will be seen as negated when there is no | |
168 USB host connected. | |
169 | |
170 However, if we were to implement pull-ups to the Calypso+Iota chipset's Vio rail | |
171 on these nets, we would have a problem in the PPD scenario of USB power present, | |
172 chipset switched off: U705 high outputs would feed power into Vio through these | |
173 resistors, potentially causing Calypso peripherals to turn on erratically as | |
174 has been observed on Caramel2 boards. Therefore, we are making a more unusual | |
175 innovation: instead of pull-ups to Vio, we are implementing pull-ups to VBAT, | |
176 i.e., to the unregulated raw positive battery terminal. The resistor value | |
177 chosen by the Mother is 22 kOhm, and the rest of this section explores the | |
178 implications of this unusual design under all expected conditions. | |
179 | |
180 First let us examine what happens in the case of "normal" mobile usage: the | |
181 device is untethered and mobile, powered by the battery, and there is no USB | |
182 host or charger connected. In this case the input voltage seen by U401 will be | |
183 raw VBAT, which will always be higher than its 2.8V supply (but still safely | |
184 below the 5.5 V limit), thus the LVC buffer will sense a good logic high as | |
185 desired. The current drawn from the battery through these pull resistors will | |
186 be the sum of U705 Ioff and U401 Ii, each of which is listed as 0.1 uA typical | |
187 in Nexperia datasheets. The listed worst case specs are 10 uA for Ioff and 5 uA | |
188 for Ii, thus under presumably very rare conditions, we could have a maximum | |
189 current draw of 15 uA per each of the 3 pull-ups. 15 uA times 22 kOhm equals a | |
190 voltage drop of 330 mV, thus U401 inputs will remain at 2.8 V or above (meaning | |
191 no increased Vio supply current draw) with the battery as low as 3.1 V, which | |
192 is below the operational range for the mobile. | |
193 | |
194 Now consider what happens when USB power is plugged in, either a host computer | |
195 or a charger. FT2232D will power up in UART mode and start putting out logic | |
196 high on all of its outputs (the state when no one opens either of the two serial | |
197 ports in host computer software); U705 will also power up and start putting out | |
198 the same logic high on the 3 signal nets going to the mobile domain. At this | |
199 point U705 output pads are no longer in their Ioff state, instead they are in | |
200 the actively driving high state, and Nexperia datasheet says that the voltage | |
201 at these output pins should not exceed Vcc, which is 3.3 V in the present case. | |
202 VBAT can be as high as 4.2 V, thus we are operating the 74LVC541A under somewhat | |
203 adverse conditions. | |
204 | |
205 The undesirable adverse condition is that current will flow through the LVC | |
206 buffer's output p-channel MOSFET (open for driving high) in the wrong direction. | |
207 The maximum magnitude of this current is about 41 uA, computed as | |
208 (4.2-3.3 V) / 22 kOhm. This current magnitude is expected to be far too low to | |
209 damage the 74LVC541A IC (the limiting values Iok spec is 50 mA), thus the only | |
210 remaining concern would be feeding of a higher voltage into the USB domain's | |
211 regulated 3.3V rail. This concern is addressed in the following subsection. | |
212 | |
213 Aside from the issues of reverse current flow through the LVC buffer's output | |
214 p-channel MOSFET, the other concern with this 41 uA current (at maximum VBAT) | |
215 is that this current is drained from the battery. With a total of 3 such | |
216 pull-ups, we expect a total battery drain current of 123 uA at maximum battery | |
217 charge - but this current only turns on when USB power is applied, and the | |
218 current into U705 output pins goes up from 0.1 uA to 41 uA per pin. However, | |
219 when USB power is applied for extended periods of time, it is usually done for | |
220 the purpose of charging the battery, and the charging current of 500 mA far | |
221 exceeds the drain current of 123 uA. In order for the battery to not be | |
222 charging when USB power is present, the system would have to be in one of two | |
223 other states: either the user connected USB for computer interface purposes and | |
224 not for charging (the charging switch is off), or the charge cycle finished but | |
225 the user hasn't unplugged the charger yet. Both of these conditions are not | |
226 expected to persist for unreasonably long time spans, hence the Mother deems it | |
227 acceptable to impose this 123 uA battery drain during times of active computer | |
228 interfacing. | |
229 | |
230 In the case when the charging switch is on and the charging cycle has finished, | |
231 it is also important to consider that Iota ABB sleep is prevented for as long as | |
232 VCHG remains applied to the chipset, which holds whenever USB power is present | |
233 and the charging switch is on. In this state (charging cycle finished, but VCHG | |
234 not removed yet) Calypso can enter deep sleep (the main VCXO is stopped), but | |
235 Iota ABB sleep is prevented. According to TI's APN2_110.pdf document, the | |
236 difference in battery power draw between deep and "superdeep" sleep modes is | |
237 about 600 uA - thus leaving the charger plugged in after charge cycle completion | |
238 causes even more battery drain through this other mechanism than through our | |
239 VBAT pull-up resistors in the USB-serial interface. | |
240 | |
241 Finally, whenever any of the 3 USB domain outputs in question (TxD, DTR or TxD2) | |
242 drives low, the current drawn from VBAT on that net increases from 41 uA to | |
243 about 190 uA at maximum VBAT, computed as 4.2 V / 22 kOhm. However, this | |
244 condition only occurs when the operator does active host computer interfacing | |
245 with software (the main AT command UART needs to be opened in order for DTR to | |
246 go low, and each of the two TxD lines goes low only when the host computer | |
247 actively transmits bytes), thus this increased battery current draw corresponds | |
248 to explicit user activity, rather than something that happens on its own. In | |
249 contrast, typical user activity on an untethered phone involves the LCD and its | |
250 backlight turning on, consuming tens of mA instead of hundreds of uA. | |
251 | |
252 It also needs to be noted that all of these currents are drawn directly from the | |
253 battery without going through Iota LDO regulators, thus none of these uA numbers | |
254 come out of the 1 mA sleep mode Vio current budget. | |
255 | |
256 2.4.1. USB domain 3.3V load resistor | |
257 | |
258 One concern raised in the analysis of VBAT pull-ups is that when current flows | |
259 from the battery into the USB domain's P_3V3 rail through U705 outputs in | |
260 reverse, the effect may be to raise that rail above 3.3 V. To prevent this | |
261 effect, the Mother's idea is to add a load resistor to the USB domain, a | |
262 3.3 kOhm load permanently placed between P_3V3 and GND, producing a permanent | |
263 1 mA draw from USB, going through our 3.3V regulator. For comparison, FT2232D | |
264 is said to draw about 30 mA of supply current, although the datasheet does not | |
265 specify how it breaks down between Vcc and Vccio supply currents, hence most of | |
266 this 30 mA is probably drawn directly from USB 5V, without going through our | |
267 3.3V regulator. The addition of 1 mA to the overall USB current draw can be | |
268 considered insignificant (especially for 500 mA charging, but even for 30 mA | |
269 host computer interfacing), but with a guaranteed load of at least 1 mA on | |
270 P_3V3, any wayward current coming from the battery (123 uA maximum) will always | |
271 be absorbed into this load without raising P_3V3 above its intended 3.3 V. | |
272 | |
273 2.5. Pull-down to GND on Host_RTS | |
274 | |
275 The effect of Host_RTS being sensed as low instead of high when there is no USB | |
276 host connected is that any unsolicited output on the AT command channel will be | |
277 flushed in this no-host-connected state, instead of being buffered in the | |
278 mobile. Given that an end user mobile phone (as opposed to a dedicated cellular | |
279 modem) is expected to be untethered most of the time, having buffered output | |
280 accumulate while waiting for a host computer to be connected "some day" does not | |
281 sound like a good idea, hence having it flushed by unblocked flow control state | |
282 soundly appears to be the better option. And with only 3 out of the 4 FT2232D | |
283 to Calypso signals needing pull-ups to VBAT, only 3 need U705 buffer slots, | |
284 making a single 74LVC541A buffer IC sufficient for both directions in the USB | |
285 domain. | |
286 | |
287 The value of the pull-down resistor on the Host_RTS net (running from FT2232D | |
288 ADBUS2 output to U401 input) will be 47 kOhm. When USB power is applied but no | |
289 one opens the AT command UART channel, FT2232D will drive its RTS output high, | |
290 sourcing about 70 uA of current from its USB 3.3V supply into the pull-down | |
291 resistor - well within FT2232D output current sourcing budget. | |
292 | |
293 3. Boot control signals | |
294 | |
295 The two boot control signals RPWON and nTESTRESET properly belong in the mobile | |
296 domain. They are pulled up to VBAT inside the mobile domain (RPWON is pulled up | |
297 to VBAT inside the Iota chip, nTESTRESET is pulled up to UPR with R208 per | |
298 Leonardo schematics), many other designs don't provide any way at all for these | |
299 signals to be pulled down, but on FC Venus we have a dual OD buffer (74LVC2G07) | |
300 in the USB domain that can pull either signal down on host command. This dual | |
301 OD buffer is little different from a pair of dry contact pushbutton switches | |
302 shorting to GND, thus the two boot control signals don't bring on any of the | |
303 difficulties like those associated with the UART interface. |