FreeCalypso > hg > freecalypso-docs
annotate FC-handset-spec @ 51:7933c3a1b5e0
FC-handset-spec: power domain mess documented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 11 Jun 2021 08:04:44 +0000 |
parents | da1a2a32c260 |
children | cfe8623b915d |
rev | line source |
---|---|
41
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 FreeCalypso Handset Specification |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 ================================= |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 The purpose of this document is two-fold: |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 1) This document serves as the principal design specification for the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 FreeCalypso Libre Dumbphone handset hardware which I, Mother Mychaela, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 seek to build. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 2) This document also defines the scope of functionality to be supported in |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 FreeCalypso handset firmware, including support for additional hardware |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 targets beyond the primary FC handset hw target. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 1. FC handset hardware specification |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 1.1. Basic features |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 The Mother's goal is to produce a replacement for the proprietary Pirelli DP-L10 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 phone, or more specifically, for the GSM-only subset of this Pirelli phone which |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 the Mother actually uses, *without* Pirelli's key differentiating feature of |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 non-GSM WiFi operation, and without Pirelli's camera. The following hardware |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 features are to be included: |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 * 176x220 pixel color display (no touch) |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 * 21-button main keypad |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 * 3 side buttons for volume control and an auxiliary function |
42
6b61d77f7700
FC-handset-spec: missed the loudspeaker and vibrator in 1.1
Mychaela Falconia <falcon@freecalypso.org>
parents:
41
diff
changeset
|
27 * hands-free loudspeaker |
6b61d77f7700
FC-handset-spec: missed the loudspeaker and vibrator in 1.1
Mychaela Falconia <falcon@freecalypso.org>
parents:
41
diff
changeset
|
28 * vibrator |
41
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 * USB port that combines charging and computer interface |
46
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
30 * wired analog headset jack |
41
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 * single SIM slot |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 The following features which are commonly found in mainstream proprietary |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 phones, particularly more recent ones, will NOT be included: |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 * camera |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 * Bluetooth |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 * FM radio |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 * TV receiver |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 * GPS receiver |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 * dual SIM slot |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 * torch light beyond LCD and keypad backlights |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 1.2. RF band capability |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 Our FC handset needs to be quadband GSM; this quadband capability will be |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 achieved by copying the RF section and the core PCB layout around it from the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 reverse-engineered iWOW TR-800 modem module, which is itself a very direct |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 (almost verbatim) derivative of TI's Leonardo+ quadband reference design. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 1.3. RAM and flash |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 The Mother's intent is to use Spansion S71PL064JA0 flash+RAM MCP on the final |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 handset motherboard, providing 8 MiB of flash and 2 MiB of XRAM in a 7x9 mm |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 footprint. This flash and RAM capacity is already known to be fully sufficient |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 for our FreeCalypso handset firmware in maximal feature configuration, hence |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 any larger capacity would be excessive. However, on our FC Venus development |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 board we may use the larger S71PL129NC0 MCP, same as used on FCDEV3B V2. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 1.4. Liquid crystal display |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 1.4.1. Display size |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 The size of the display for our FC Libre Dumbphone handset design is fixed at |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 176x220 pixels, 16-bit color, following TI's D-Sample platform and the starting |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 point UI code that was developed for it. Thoughts of changing to a different |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 display size have been considered and rejected: |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 * If we were to change to a smaller display size, we would have to do extra work |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 on the firmware to shrink the UI to the smaller size, and we would reduce the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 amount of information that can be displayed at once. We would incur extra |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 work and a functional loss, but gain absolutely nothing in return. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 * If we were to change to a larger display size (240x320 pixels seems to be the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 largest reasonable size for dumbphones, used in high-end Nokia models), we |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 would be venturing into uncertain territory - the greatest uncertainty would |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 be the extra CPU load on Calypso to draw the larger UI and to refresh the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 larger framebuffer, which is done with PIO on Calypso, without any DMA |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 assistance. The D-Sample LCD size of 176x220 pixels already appears to be a |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 strain in some drawing code paths, hence the Mother's decision is to play it |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 safe and stick with the known working display size. Expanding the UI to make |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 sensible use of larger screen real estate would also entail additional work. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 176x220 is the display size in pixels, and this resolution number by itself says |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 nothing about the physical display size in inches or mm. However, most readily |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 available LCDs that are made for this pixel resolution are made in 2.0" diagonal |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 physical size, with 31.68x39.60 mm active area and 0.180 mm dot pitch, hence |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 this physical size is the one we are going to use. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 1.4.2. Specific LCD module selection |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 As of this writing, the specific LCD module to be used has not been firmly |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 selected yet. We are actively looking for an LCD module that fits all of the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 following requirements: |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 * TFT color LCD, 2.0" diagonal, 176x220 pixel resolution; |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 * 16-bit microprocessor bus interface; |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 * 6:00 viewing direction as appropriate for cellular handsets; |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 * backlight consisting of 3 white LEDs in parallel, joined at the anode, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 with separately brought-out cathodes; |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 * mechanical design that supports mounting with the FPC tail folded under the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 module, either by way of direct solder termination (no connector) or by way |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 of raised sides that create sufficient vertical space to accommodate the FPC |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 connector. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 The requirement of 16-bit microprocessor bus interface stems from the desire to |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 interface this LCD to the Calypso in exactly the same way how TI did it on the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 D-Sample, the 6:00 viewing direction and mechanical mounting requirements stem |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 naturally from the target application (cellular phone handset), and the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 backlight LED wiring requirement stems from the constraints of our chosen |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 MAX1916 backlight LED driver chip - see section 1.4.4. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 1.4.3. Backlight and readability considerations |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 Out of the various pre-existing mobile phones which I (Mychaela) have |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 experienced, there have been 3 different kinds of LCDs in terms of how display |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 operation and readability interacts with the backlight: |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 1) older phones with black&white LCDs: on all phones of this type which I've |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 ever used, the display is perfectly readable without the backlight given |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 ordinary ambient lighting, be it natural daylight or room lighting. Such |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 LCDs are called reflective. With these B&W displays, you only need to turn |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 on the backlight if you need to operate the phone in darkness, such as |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 outdoors at night or inside with all lights off. The firmware in such phones |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 is typically designed to leave the actual display functional and updated at |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 all times, with only the backlight subject to on/off control. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 2) most newer phones with color displays, of which Pirelli DP-L10 is a |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 representative case, have transmissive LCDs that are not designed to be |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 readable without the backlight at all - backlight required for readability |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 (BLRR) is another way to describe such LCDs. Because the display is not |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 readable at all without the backlight, phone firmware is typically designed |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 to turn off the entire display (not just the backlight) when the screen goes |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 dark, and operation visible to the user is display on/off, rather than |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 backlight on/off. It is a good firmware design practice to "swallow" the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 initial keypress that turns on the display from dark state, i.e., to block |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 the regular action of whatever button was pressed to "wake up" the display. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 3) The color display on Motorola C139 phones is an odd intermediate case: this |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 display is NOT practically readable with the backlight off, yet the firmware |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 is designed as if the display were readable in this condition: the actual |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 display (unsure if it is CSTN or TFT) remains on and updated, and when you |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 press some button to "wake up" the display, that button still takes its |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 regular action, which is really bad for usability. How do we know that the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 actual CSTN or TFT display remains on and actively updated when it is not |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 readable with the backlight off? Answer: the non-backlit display can be made |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 readable by shining a flashlight directly at it - but this trick requires a |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 directly pointed flashlight; no amount of ordinary ambient light is enough |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 to make the display readable. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 Because our FC Libre Dumbphone handset will have a color display (contemporary |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 TFT) and because we are sane, not copying the monumental design mistake of Mot |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 C139, our display will fall into class 2 by the above classification: backlight |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 required for readability, full display on/off rather than just backlight on/off, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 firmware operating like Pirelli's in terms of wake-up keypress swallowing. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 1.4.3.1. Backlight dimming mode |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 Because our LCD is of BLRR type and because we seek to fully replicate Pirelli's |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 logic in terms of when keypresses are swallowed and when they are not, we need |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 to implement a dimming mode for our LCD backlight. In Pirelli's design which we |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 are copying, when you are playing with phone menus or composing SMS etc, but are |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 not in an active call, the display switches between full brightness and totally |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 off - it goes fully off on timeout, and when you press a button to wake it up, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 it switches on at full brightness, together with the keypad backlight. But when |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 you are in a call, when the timer expires (and it's a shorter timer, 10 s |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 instead of 30 s), the display goes dim instead of fully off, and in this dimmed |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 (but still readable) state keypresses are NOT swallowed. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 We only need to implement two different intensity levels for the LCD backlight: |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 full brightness and in-call dimmed. The backlight intensity level in the dimmed |
43
e1b75668a706
FC-handset-spec: grammar fix
Mychaela Falconia <falcon@freecalypso.org>
parents:
42
diff
changeset
|
176 state will need to be chosen on this principle: use the lowest backlight LED |
41
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 current (to conserve battery power and allow longest talk time on one charge) at |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 which the display is still readable, similarly to Pirelli's in-call dimmed |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 state. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 In the user-actively-poking state, as opposed to the long-call dimmed state, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 there is no need to provide different configurable backlight levels - see |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 section 1.4.5. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 1.4.4. Backlight circuit implementation |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 In all candidate TFT LCD modules that are being considered (see section 1.4.2), |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 the backlight consists of 3 white LEDs wired in parallel, joined either at the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 anode or at the cathode - although as we shall see momentarily, we require an |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 LCD module where the 3 LEDs are joined at the anode, with the 3 cathodes brought |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 out separately. LCD module datasheets call for 15 mA current through each LED |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 at maximum intensity, for 45 mA total, and the LED forward drop voltage (Vf) at |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 this rated current seems to range between 2.9 V (what I actually measured on one |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 candidate LCD module) to 3.2 V (what the datasheets list as typical) to perhaps |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 as high as 3.4 V (what one datasheet lists as the maximum). |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 Given the parallel (as opposed to series) wiring of the 3 LEDs and the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 relatively low Vf, there is no need to use any kind of boost converter as part |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 of the LED driver circuit for this backlight - any boost converter will only add |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 inefficiency (more current will be drawn from the battery for the same LED |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 current), hence we need to avoid using such. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 Regardless of whether a given phone design uses a boost converter or not (it |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 seems that older designs do use boost converters, either because older white |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 LEDs have higher Vf or because 2 or 3 LEDs are wired in series), all traditional |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 phone designs seem to share the quality where the display backlight brightness |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 remains the same as the battery discharges and as Vbat goes down - this quality |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 was directly observed on the Pirelli DP-L10 (unknown circuit design) and |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 inferred from the available schematics for Mot C139 and C155, with both of the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 latter boost-converting to fixed 5.0 V. In our case, even though we choose to |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 not use a boost converter for efficiency reasons, we still need to achieve the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 quality of the display brightness remaining the same through the discharge range |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 of our Li-ion battery - having the display dim in half as the battery discharges |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 from 4.2 V peak to 3.6-3.7 V plateau is simply not acceptable. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 The simplest possible LED driving circuit would be one where a current limiting |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 resistor is inserted in series with each LED, and then the 3 parallel |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 LED+resistor sets are connected across battery terminals, with a transistor |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 inserted somewhere to act as the on/off switch. However, this trivial circuit |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 is not suitable in our application because it would produce unacceptably large |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 variation in display brightness as the battery discharges - hence we need a more |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 intelligent LED driving circuit. Our Luna LCD carrier board from the spring of |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 2020 features an LDO bringing Vbat down to fixed 3.5 V, followed by very low- |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 value resistors in series with each LED - but this approach is not good for |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 production either, as it makes the LED current extremely sensitive to any slight |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 variations in Vf. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 Fortunately, I was able to find a specialized white LED driver chip that is just |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 perfect for our application, or more precisely, a specialized chip that acts as |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 a constant current sink for such LEDs - Maxim MAX1916, design from 2001, just |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 the right time frame for the kind of phone we are seeking to build. This |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 special chip takes the place of "dumb" ballast resistors: connect Vbat (battery |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 positive terminal) directly to the common anode of the 3 LEDs, but instead of |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 series resistors, connect each cathode to the corresponding LEDn pin of MAX1916 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 - *without* any resistors or transistors! FETs inside the MAX1916 take the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 place of resistors as current-limiting elements, and the chip's global on/off |
44
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
237 control (which will be driven with a Calypso GPIO) takes the place of a separate |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
238 switching transistor. |
41
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 The special quality of MAX1916 is that it produces constant current through each |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 LED (based on a set reference current and 230x current multiplication circuit |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 inside the chip) regardless of variations in both Vbat and Vf! Of course the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 requested current can only be sustained as long as Vbat >= Vf + Vds, where Vds |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 is the lowest drop voltage of the FETs inside MAX1916, and once Vbat falls below |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 this point, the LED current will begin to decline. However, the beauty of this |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 design is that no arbitrary artificial turnover points (like the 3.5 V point in |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 our hacky design from the spring of 2020) need to be set: the battery discharge |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 point at which the LED current begins to decline will be whatever it comes to be |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 naturally, based on Vf (perhaps depending on temperature) and MAX1916 Vds, and |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 the decline is expected to be gradual. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 1.4.4.1. Backlight current selection and dimming |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 In the simplest MAX1916-based design, a fixed LED current is set by connecting |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 a resistor of appropriately computed value between MAX1916 SET pin and whatever |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 regulated fixed voltage rail happens to be available in the system. However, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 in our application (see section 1.4.3.1) we need at least two different display |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 brightness levels, and thus at least two switchable LED currents. At first the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 problem seems difficult, but an elegant solution has been found. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 LCD backlight LED current will be selected by way of two Calypso GPIO pins |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 configured as outputs, and a 74LVC2G125 dual tristate buffer. Each tristate |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 buffer's A input will be tied high, and the two Calypso GPIO outputs will be |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 connected to buffer output enable inputs. There will be two resistors with |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 different carefully computed values, each connected between one of the two |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 tristate buffer outputs and MAX1916 SET pin. One resistor will provide a small |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 current, the other will provide a large current, and each of these two currents |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 will be switchable on/off by Calypso GPIO signals switching the buffer outputs |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 between driving high (2.7-2.8 V) and Hi-Z. Resistor values will be chosen such |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 that the sum of both currents will be the 15 mA limit (the current is reckoned |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 per LED), whereas the small current alone will be whatever we need for the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 battery-saving long-call dimmed mode. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 1.4.5. Slight regression relative to Pirelli DP-L10 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 The actual LCD backlight LED driving circuit inside the Pirelli phone is not |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 known, but reverse engineering of Pirelli's firmware followed by experimentation |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 reveals that backlight intensity variation is achieved via a form of PWM, using |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 Calypso PWL output - although PWL is used in an inverted sense, such that the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 backlight intensity increases with more 0s being put out on PWL, as opposed to |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 more 1s. Thus regardless of the unknown actual circuit implementation, the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 backlight intensity appears to be continuously variable from 1/255 to 255/255, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 which is certainly a much richer control than our crude selection of just 3 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 possible LED currents. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 In terms of what Pirelli's fw offers to end users, the backlight intensity in |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 the dimmed in-call state is always set to 1/255, without any way to change it, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 whereas the backlight intensity in the active interaction state is selectable |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 via a menu among 5 levels; the 5 offered levels turn into 1/255, 64/255, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 128/255, 192/255 and 255/255 in the resulting PWL programming. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 So in terms of both hardware capabilities and end user offering via the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 firmware, Pirelli's LCD backlight level control is richer than what we are |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 proposing for our FC Libre Dumbphone. However, engineering is all about |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 trade-offs and compromises, and in the Mother's opinion, this slight reduction |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 in the richness of functionality is sufficiently offset by the efficiency of |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 our MAX1916-based approach: aside from the theoretical possibility of a |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 switching buck converter, which I've never seen used for LED driving |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 applications, our choice of MAX1916 is the most battery-efficient way to drive |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 our backlight LEDs. Furthermore, when dimming is effected by switching the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 actual regulated LED current, as in our case, as opposed to applying PWM, our |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 backlight becomes more resilient to even lower battery voltages. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 Consider what happens when Vbat falls below the point at which the design- |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 intended LED current can be maintained - what happens then? If no PWM is |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 applied, or if PWM is set to maximum, then display brightness will be whatever |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 maximum is possible at this low battery voltage. But if PWM is applied, |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 especially very low duty cycles as in the case of Pirelli's dimmed state, then |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 the display that has already been dimmed by low Vbat will be *further* dimmed |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 by this aggressive PWM, likely producing an unreadable display at this point. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 It may be possible to compensate via extra complexity in the firmware, by |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 turning PWM up when Vbat (as measured via Iota MADC) falls too low - but then |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 we would be getting really messy, whereas switching the regulated current is so |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 much more elegant. With our approach, low-battery-induced dimming in the "full |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 brightness" mode will happen at the same discharge point as it would if we had |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 used PWM (and set PWM to maximum in this "full brightness" mode), but in the |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 in-call dimmed state, further dimming due to low Vbat will probably happen at a |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 lower discharge point (if Vf decreases with decreasing current), and when it |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 does happen, there won't be a combination of both natural and artificially- |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 induced reductions, just the natural one. |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 Thus based on all of the above considerations, I feel justified in my design |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 choice of foregoing PWM control of backlight intensity in favor of fixed current |
7d77aa76bcaa
FC-handset-spec: beginning of massive document
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 switching with much more limited selection. |
44
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
325 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
326 1.5. Main keypad |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
327 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
328 The main keypad on our FC Libre Dumbphone handset will have the following |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
329 21-button arrangement: |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
330 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
331 left soft key ^ right soft key |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
332 <O> |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
333 green call V red power/hang-up |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
334 button button |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
335 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
336 1 2 3 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
337 4 5 6 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
338 7 8 9 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
339 * 0 # |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
340 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
341 The top section above the traditional numeric dial buttons (12) consists of left |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
342 and right soft keys, green and red buttons (classically called SEND/END), and a |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
343 5-way navigation button group (left, right, up, down and center), for a total of |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
344 9 buttons in this section. The red hang-up button is also the hardware power-on |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
345 button; having the same button effect power-off when held down for some time is |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
346 a firmware function. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
347 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
348 This 21-button main keypad arrangement is exactly the same as featured on |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
349 Motorola C1xx and Pirelli DP-L10 phones, on TI's D-Sample development platform, |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
350 and also on many other phones (non-Calypso) from the appropriate era, such as |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
351 Samsung E2232. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
352 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
353 1.5.1. Keypad backlight |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
354 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
355 All traditional phones including Mot C1xx and Pirelli DP-L10 feature keypad |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
356 backlights, hence we need to include one as well. The exact structure of this |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
357 backlight won't be known until we enter the mechanical design phase for the |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
358 actual handset (as opposed to intermediate development boards), which will be |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
359 much later in the project, but the Mother's understanding is that keypad |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
360 backlights are made up of some number of LEDs (2 on Pirelli DP-L10, unknown |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
361 number on Mot C139) and some kind of light diffuser. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
362 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
363 Given the discovery of MAX1916 constant-current-sink LED driver chip (see |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
364 section 1.4.4), the optimal electrical design of the keypad backlight becomes |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
365 clear: use 3 LEDs, and drive them using another MAX1916 chip, separate from the |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
366 one used for the LCD backlight. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
367 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
368 Backlight intensity: neither Mot C139 nor Pirelli DP-L10 provides any way to |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
369 vary keypad backlight intensity, and no such variability is deemed necessary. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
370 In the long-call state when the LCD backlight is dimmed, the keypad backlight |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
371 is fully off. We shall use a fixed LED current setting for our keypad |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
372 backlight, set with a single fixed resistor between the keypad MAX1916 chip's |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
373 SET pin and the V-IO rail, and the actual current value will be determined in a |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
374 much later phase of the project, when we have the actual keypad backlight LEDs |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
375 and a better idea of the mechanical design. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
376 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
377 Backlight color: Mot C139 uses blue LEDs, Pirelli DP-L10 uses white LEDs. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
378 Because blue and white LEDs have very similar electrical characteristics |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
379 (current needed for appropriate brightness, Vf at this current), the choice |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
380 between the two can be made in a much later project phase, based on input from |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
381 other team members who are better at aesthetics. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
382 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
383 1.5.1.1. Comparison with Mot C139 and Pirelli DP-L10 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
384 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
385 Both of these two pre-existing reference phones feature keypad backlights that |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
386 are switched on/off via Iota LEDB; the actual circuit design is unknown. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
387 However, in our design we forego Iota LEDB altogether (it won't be used for |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
388 anything), and use two MAX1916 chips for our LCD and keypad backlights, with |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
389 each chip's on/off control being a Calypso GPIO. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
390 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
391 The actual workings of the LEDB driver or switch inside the Iota chip are a |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
392 mystery. On the one hand it appears to be nothing more than a "dumb" transistor |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
393 on/off switch, no different from an external "digital transistor" (BJT with bias |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
394 resistors) controlled by a Calypso GPIO: a resistor still seems to be required |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
395 for current control, and at least on the Pirelli DP-L10 the keypad backlight |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
396 intensity visibly varies with Vbat ranging over the Li-ion discharge range. But |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
397 on the other hand, LEDB requires the 13 MHz clock to be running, and the light |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
398 goes out when this clock is stopped. Why in the world would any kind of clock |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
399 be required if the circuit is only a transistor on/off switch controlled by a |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
400 static register bit? Other parts of TI's Iota datasheet describe its LEDA, LEDB |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
401 and LEDC as "current drivers" - but in the absence of any way to actually set |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
402 the desired current without depending on Vbat or Vf variations, whatever the |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
403 Iota chip actually provides can't be anything like MAX1916. |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
404 |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
405 Poorly documented, non-understood mystery hardware is best avoided, hence we are |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
406 not going to use Iota LEDB, and shall only use MAX1916 instead. We also gain a |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
407 functional improvement over Pirelli DP-L10 by using MAX1916: our keypad |
a415ae467c6d
FC-handset-spec: main keypad and its backlight documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
43
diff
changeset
|
408 backlight intensity will remain the same over the battery discharge range. |
45
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
409 |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
410 1.6. Side buttons |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
411 |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
412 In addition to the 21-button main keypad, our FC Libre Dumbphone handset will |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
413 include 3 side buttons: two on the left side, intended for volume up/down |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
414 control, and one on the right side, serving auxiliary functions. This side |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
415 button arrangement is identical to TI's D-Sample and similar to Pirelli DP-L10: |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
416 the only difference between our arrangement (matching D-Sample) and Pirelli's |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
417 is that Pirelli moved the 3rd side button to the left and designated it as the |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
418 camera button. However, we (FreeCalypso) have no interest in ever implementing |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
419 any kind of camera on our phones, hence we are moving the 3rd side button back |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
420 to where it was in TI's original design (on the right), and we will use it for |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
421 purposes of our own invention. |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
422 |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
423 The starting point UI code we got from TI does not do anything with the right |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
424 side button (even though this button exists and works on the D-Sample platform |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
425 on which this code was originally developed), hence we have full freedom to |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
426 invent our own uses for it. The following uses are envisioned: |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
427 |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
428 * Long press of this button may be our way of turning the hands-free loudspeaker |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
429 on and off, a function that does not exist in the starting point UI code from |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
430 TI. |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
431 |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
432 * When the phone is in its normal idle standby operation (not in a call and not |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
433 being poked at by the user, but registered to a GSM network and ready to |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
434 accept incoming calls or SMS), the display will be off. Users often desire |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
435 to check the time and other status (check coverage, see if they missed any |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
436 calls or SMS), which will require pressing any button to turn on the display. |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
437 At that point a 30 s timer kicks in, which will turn the display back off |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
438 after 30 s of inactivity. However, an argument can be made that keeping the |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
439 display on for 30 s if the user only wanted to quickly glance at the time is |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
440 a waste of battery. Here is one proposed solution: we can implement a |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
441 function where a short press of the right side button when the phone is on its |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
442 idle screen will cause the display to turn off immediately and activate the |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
443 keyguard. The user can then press the right side button once to turn on the |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
444 display and look at it, and then press the same button again to turn it back |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
445 off. |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
446 |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
447 * When we are in a long call, the LCD backlight does not turn off completely, |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
448 instead it will go dim - but still readable. Any button presses in this state |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
449 are NOT swallowed - they take their regular actions. However, the keypad |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
450 backlight turns off fully in this state, and under certain conditions (like |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
451 out at night) the user may not be able to see the keypad. If a short press |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
452 of the right side button invokes no other action besides switching on full |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
453 display brightness and the keypad backlight, this right side button can be |
9df8683daec4
FC-handset-spec: side buttons documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
44
diff
changeset
|
454 found by touch, and thus solve this particular problem case. |
46
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
455 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
456 1.7. Audio routing |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
457 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
458 3 different audio routing modes will be supported on our FC Libre Dumbphone |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
459 handset: |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
460 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
461 * Default mode: there will be a 32 ohm earpiece speaker physically mounted in |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
462 the usual place, on the front bezel above the display, to match up with the |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
463 user's ear in handheld operation. There will also be a microphone toward the |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
464 front bottom of the phone, again in the usual place. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
465 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
466 * Hands-free mode: there will be an 8 ohm loudspeaker physically separate from |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
467 the 32 ohm earpiece speaker, physical location in the handset TBD. In the |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
468 hands-free mode, the downlink audio will be switched from the earpiece speaker |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
469 to the loudspeaker, while the microphone input for the uplink will remain the |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
470 same. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
471 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
472 * There will be a wired analog headset jack with plug insertion detection; when |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
473 a headset is inserted, both audio input and output will be redirected to this |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
474 headset interface. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
475 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
476 1.7.1. Earpiece and loudspeaker separation |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
477 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
478 Most current mainstream phones (in fact, all that I am familiar with) have |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
479 physically separate speaker transducers for the earpiece function (hold up to |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
480 ear to talk) and the loudspeaker+ringer function. The earpiece speaker is a 32 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
481 ohm load, and the loudspeaker is an 8 ohm load. In a Calypso+Iota design, an |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
482 external amplifier chip is needed to drive the 8 ohm loudspeaker, whereas the |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
483 little 32 ohm earpiece speaker can be driven directly by Iota EAR output. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
484 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
485 However, a very different design was implemented by TI on their D-Sample and |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
486 Leonardo boards. They have only one speaker, one of 8 ohm kind, that is |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
487 physically mounted in the position where the earpiece speaker would normally go. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
488 In order to not overwhelm the user's ear in handheld operation, they have |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
489 peculiar circuit wiring where the analog signal from Iota to the loudspeaker |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
490 amplifier goes through different resistor values depending on whether EAR or AUX |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
491 output from Iota is used, and when the EAR output is selected, the high resistor |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
492 values produce attenuation, such that the sound pressure level produced by the |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
493 pressed-to-ear loudspeaker becomes comparable to that produced by a more |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
494 traditional 32 ohm earpiece speaker. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
495 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
496 Furthermore, TI's single speaker design was not limited to their development |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
497 boards. Some years ago I found schematics for some very old LG phone (called |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
498 A316 or B1200, not sure of the correct designation), this phone is from early |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
499 TI era (pre-Calypso, using Ulysse/Nausica/Clara chipset), and it has the same |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
500 arrangement as D-Sample and Leonardo. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
501 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
502 For our own FC Libre Dumbphone, I am going with the separate speakers |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
503 architecture, using physically separate earpiece and loudspeaker transducers. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
504 This architecture feels more native to me, and it will allow for independent |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
505 tuning of the two audio paths. In my defense, all current mainstream phones |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
506 seem to use the same architecture - the other approach with a single loudspeaker |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
507 in the earpiece physical position seems very uncommon. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
508 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
509 1.7.2. Loudspeaker implementation |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
510 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
511 The external amplifier chip for driving the 8 ohm loudspeaker will be TI |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
512 TPA6203A1, copied from Leonardo schematics and proven good on FCDEV3B. On |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
513 FCDEV3B this amplifier is fed with signal from Iota EAR output, but on the final |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
514 handset and on the Venus development board this amplifier will be fed with |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
515 signal from Iota AUX output instead. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
516 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
517 The loudspeaker amplifier has an on/off control by way of a Calypso GPIO; in |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
518 order to save battery, this amplifier needs to be off normally, and only turn on |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
519 when a loudspeaker call is in progress or when a ringtone melody is played. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
520 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
521 1.7.3. Wired analog headset jack |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
522 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
523 The analog headset jack on our FC Libre Dumbphone handset will be of 2.5 mm |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
524 TRRS type, using pinout copied from iWOW DSK. The headset needs to be wired as |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
525 follows: |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
526 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
527 * 32 ohm earpiece speaker connected between Tip and Ring2; |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
528 * electret condenser microphone, positive connected to Ring1; |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
529 * Sleeve is ground, should be needed only for the microphone. |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
530 |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
531 The advantage of this TRRS headset specification, as opposed to the simpler kind |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
532 with a TRS plug and a common ground for the earpiece and the mic, is that our |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
533 TRRS headset can be driven with either single-ended or differential earpiece |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
534 driver outputs. On the final handset, the wired headset interface will be |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
535 connected to the Iota headset channel (HSMICBIAS, HSMICP, HSO) and thus the |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
536 headset earpiece driver will be single-ended (HSO and GND), but the same headset |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
537 can also be plugged into other FreeCalypso devices in which the jack is wired |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
538 to the main Iota audio channel, with Iota EARP & EARN driving Tip and Ring2 on |
1fec0a3f09cc
FC-handset-spec: audio routing documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
539 the TRRS headset jack. |
47
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
540 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
541 1.8. Ringtone generation |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
542 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
543 In terms of the physical sound-emitting element, there are two principal ways |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
544 in which cellphone ringing sounds can be produced: |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
545 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
546 1) The oldest and most classic way is to use a magnetic buzzer controlled by |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
547 Calypso BU/PWT digital output. The buzzer is driven with raw battery voltage |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
548 being switched with a "digital transistor" (BJT with bias resistors), and the |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
549 control input going to the base of the BJT is Calypso BU/PWT output. This |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
550 method is standard in older phones that don't have hands-free loudspeakers: |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
551 since there is no loudspeaker for that other purpose, some loud noise-making |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
552 element needs to be implemented just for ringing, and old-style buzzers are |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
553 the traditional choice. Motorola C1xx lower subfamilies (C11x/12x and |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
554 C139/140) use such buzzers for ringing. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
555 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
556 2) In phones that feature a loudspeaker for hands-free operation, the same |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
557 loudspeaker is also used for ringtone sounding, and the buzzer is eliminated. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
558 Apparently hands-free loudspeakers weren't popular in the Calypso era, thus |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
559 Pirelli DP-L10 is the only known Calypso phone that features one. There is |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
560 also a more bizarre possibility: some phones have replaced the ringing buzzer |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
561 with a loudspeaker, but that speaker is used *only* for playing ringtone |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
562 melodies - no hands-free call feature is offered. This situation exists on |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
563 Motorola C155/156 phones. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
564 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
565 Furthermore, if the physical sound-emitting element is a loudspeaker and not an |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
566 old-fashioned buzzer, and if the chipset is Calypso, as opposed to various newer |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
567 chipsets, then a further distinction arises: |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
568 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
569 2a) Most historical commercial phones that are based on Calypso and use a |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
570 loudspeaker for ringtone sounding, also contain a special ringtone generator |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
571 chip that drives this speaker when a ringtone is played - in other words, |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
572 their loudspeaker ringtones do NOT go through the same voice audio path that |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
573 is used for hands-free calls, if the latter feature is offered at all. The |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
574 speciai ringtone generator chip is typically a combined MIDI player and |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
575 loudspeaker driver. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
576 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
577 2b) The much less popular approach is to not implement any extra hardware at all |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
578 that is specifically for ringtone generation, use only the same loudspeaker |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
579 audio path hardware that is already needed for hands-free calls (a simple |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
580 loudspeaker amplifier), generate ringtone melodies in the Calypso DSP |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
581 (Melody E1 or E2), and play them through the regular voice audio path, |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
582 routed to the loudspeaker. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
583 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
584 Approach 2b is the least popular one among historical commercial Calypso phones, |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
585 but it is the one which I (Mother Mychaela) have selected for our FC Libre |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
586 Dumbphone handset. But let us nonetheless examine the pros and cons of |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
587 different approaches, and see why I have settled on option 2b. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
588 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
589 Buzzer melodies (option 1) are monophonic (the signal carrying the melody to |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
590 the buzzer is a digital square wave, and there is no way to create multiple |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
591 overlapping notes in such a signal), but a decent range of tone frequencies is |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
592 available: the magnetic buzzer hardware can easily produce frequencies all the |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
593 way up to the limit of human hearing, while Calypso PWT produces musical notes |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
594 from F4 through E8 in the scientific pitch notation, or 349 to 5274 Hz. In |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
595 contrast, any tones produced through the 8000 samples/s voice audio path have |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
596 to be below the Nyquist frequency of 4 kHz - according to TI's document, Melody |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
597 E1 notes go from E4 (330 Hz) up to G#7 or 3322 Hz. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
598 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
599 In terms of the richness of possible ringtone melodies that can be played, |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
600 option 2a (external MIDI player chip that drives the loudspeaker directly, |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
601 without going through Calypso+Iota voice audio path) is the absolute best. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
602 These specialized ringtone generator chips implement full MIDI (128 instruments, |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
603 47 drums, up to 64 simultaneous notes, according to one datasheet), and the |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
604 available ringtone melodies for these MIDI chips are very rich - just take a |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
605 Pirelli DP-L10 phone and listen through various ringtone melodies it offers. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
606 All of Pirelli's melodies are stored as *.mid files in their FFS, thus we could |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
607 very easily copy them if we were to adopt a MIDI player chip similar to theirs. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
608 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
609 However, the problem for us with adopting option 2a is that this option would |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
610 introduce significant extra complexity and adversely affect our already long- |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
611 overdue project schedule. There is only one MIDI ringtone player chip for which |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
612 we have enough documentation to attempt such a feat: this chip is Winbond |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
613 W56964, a slightly more capable sibling of the W56940 used in the Pirelli phone. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
614 However, just because we have what at first glance appears to be reasonably |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
615 complete documentation does not mean that it would be a slam dunk! We would |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
616 have to build a separate test board for this chip, connect it to a Caramel2 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
617 motherboard (it needs to connect to Calypso MEMIF), and then spend significant |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
618 time climbing the learning curve and getting this chip to actually work: getting |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
619 it to play melodies, and just as important, getting it into and out of sleep |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
620 modes. In other words, a lot of extra work and time spent just for this part, |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
621 not advancing any other project needs - whereas option 2b eliminates all of this |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
622 extra work. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
623 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
624 Finally, a philosophical argument can be made that FreeCalypso should be all |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
625 about simplicity, producing a phone that does its job: implement just what is |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
626 needed for a functional phone, and omit unnecessary baggage. An extra hardware |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
627 circuit (a chip connected to Calypso memory bus, no less) and associated |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
628 software complexity that serves absolutely no other purpose except to produce |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
629 ringtones that are "richer" than what the Calypso can produce on its own, and |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
630 does not assist in any way with hands-free loudspeaker operation for calls (it |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
631 is more of a hindrance in that mode), can be seen as an unwelcome burden similar |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
632 to other unwelcome burdens which we are already eliminating, like the camera. |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
633 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
634 In contrast, with our chosen option 2b, we have exactly zero extra hardware |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
635 that is just for ringing: our loudspeaker and its associated driver circuit |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
636 (simple amplifier) is primarily for hands-free calls, and the ability to use |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
637 the same audio path to play ringtone melodies comes literally "for free" with |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
638 the Melody E1 feature built into our Calypso DSP. We already have a selection |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
639 of nice-sounding ringtone melodies in E1 format, lifted from the legendary TSM30 |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
640 source, and software complexity is minimal: the melody playing engine has |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
641 already been implemented by TI, we only need to call RiViera Audio Service API |
f0419ac0a815
FC-handset-spec: ringtone generation documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
46
diff
changeset
|
642 functions. |
48
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
643 |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
644 1.9. Vibrator |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
645 |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
646 All traditional cellphones include a vibrator, and ours needs to include one |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
647 too. Our firmware will need to offer the options of being silent, vibrating |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
648 only, ringing only, or ringing and vibrating on an incoming call or SMS - all |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
649 of these options are genuinely useful to a heavy-duty phone user in different |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
650 situations. |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
651 |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
652 In terms of functionality, the vibrator is envisioned as a simple on/off control |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
653 in the hardware, with higher-level "pulse train" functionality implemented in |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
654 the firmware. As far as end user experience goes, the Mother's plan is to copy |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
655 the way the vibrator works on the Pirelli DP-L10. On this to-be-replaced or |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
656 to-be-recreated reference phone, the vibrator works as follows: when an incoming |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
657 call arrives in vibrating alert mode, the firmware turns the vibrator on for |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
658 500 ms, then turns it off for 500 ms, and the cycle endlessly repeats until the |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
659 call is either answered or dropped. This 500 ms on/off cycling is purely a |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
660 firmware function, the hardware control is an on/off switch. |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
661 |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
662 Looking at the hardware implementation of the vibrator driving circuit in the |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
663 Motorola C1xx family and in the Pirelli DP-L10, both designs support a form of |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
664 "analog" control of the vibrator beyond simple on/off. In the Mot C1xx family |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
665 the vibrator is controlled by the output of Iota auxiliary DAC, whereas in the |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
666 Pirelli DP-L10 Calypso BU output has been repurposed to control the vibrator, |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
667 allowing either full-on or PWM driving. However, Pirelli's firmware appears to |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
668 never operate the vibrator in any way other than fully on, and there is no |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
669 evidence of Mot C1xx firmwares applying any analog control to their vibrator |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
670 either. |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
671 |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
672 The Mother's tentative plan for our FC Libre Dumbphone handset is to copy |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
673 Pirelli's approach in both hardware and firmware: repurpose Calypso BU output |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
674 for vibrator control (we won't have a buzzer, see section 1.8), allowing the |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
675 possibility of PWM, but have our firmware only use fully-on and fully-off |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
676 states, at least initially. However, because we won't have a vibrator on our |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
677 Venus development board, only in the final handset, this decision does not have |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
678 to be made right now. |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
679 |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
680 Because our firmware will be designed for a simple on/off vibrator control, |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
681 during fw development on the Venus board it will be trivial to use a LED to |
cb8d43a5023c
FC-handset-spec: vibrator documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
47
diff
changeset
|
682 simulate the vibrator on/off state. |
49
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
683 |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
684 1.10. Battery |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
685 |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
686 The battery in our FC Libre Dumbphone handset will be single-cell Li-ion. It |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
687 goes without saying that this battery will be freely removable and replaceable |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
688 by end users. The specific size, form factor and mAh capacity of this battery |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
689 won't be addressed until later in the project, when we get closer to building |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
690 the actual handset. |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
691 |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
692 Our Calypso+Iota chipset dates from the era when the cellular handset industry |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
693 was transitioning from NiMH to Li-ion batteries, and the Battery Charger |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
694 Interface (BCI) block in the Iota chip supports both battery types, or at least |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
695 TI's documentation claims so. Given that we are going against the mainstream |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
696 society's ideas in so many other ways, I have given thought to the possibility |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
697 of using a NiMH battery instead of Li-ion. However, the problem with using a |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
698 NiMH battery is that we would be going into completely uncharted territory |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
699 without any guidance. In the case of Li-ion batteries the charging process is |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
700 well-understood in both theory and practice, and our FCHG logic based on reverse |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
701 engineering of Pirelli's firmware works well both on the same Pirelli and on |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
702 Motorola C1xx family. In contrast, if we went with NiMH, we would have |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
703 absolutely no guidance in implementing the necessary charging control logic |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
704 (TI's LCC code is useless), causing a huge risk to the project. Furthermore, |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
705 determining the state of charge from Vbat for the purpose of the bars icon is |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
706 already somewhat challenging even with Li-ion, given the relatively flat middle |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
707 part of the discharge curve - and with NiMH we can only expect the problem to be |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
708 even worse, as their discharge curve is said to be even flatter. For these |
38bcb9425df0
FC-handset-state: battery documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
48
diff
changeset
|
709 reasons, we are going to play it safe and stick with Li-ion. |
50
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
710 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
711 1.11. Charging circuit |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
712 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
713 Our FC Libre Dumbphone will feature a USB port (mini-B, device role only, no |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
714 OTG) that combines two logically separate functions: battery charging and |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
715 computer interface. The basic idea of this dual-function USB port comes from |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
716 Pirelli DP-L10, but we are applying significant refinements of our own to this |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
717 general idea, as the following description will make clear. This section |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
718 describes the charging function; the computer interface function is described |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
719 in section 1.12. |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
720 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
721 One highly non-standard innovation that will appear on our FC handset will be a |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
722 user-visible mechanical slide switch that will turn the charging circuit on or |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
723 off. The purpose of this charging on/off switch is to make it possible to |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
724 connect USB and have the two ttyUSB devices appear (see section 1.12) without |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
725 presenting a 'charger plug' boot condition to the Calypso+Iota core chipset. |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
726 From an end user perspective, if you only use the USB port for charging and |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
727 don't care about the computer interface function, then leave the charging switch |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
728 always on - USB plug/unplug will mean charger plug/unplug like on any |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
729 conventional phone. Similarly, if you do use the computer interface function to |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
730 connect your phone to a host computer in regular operation, with the firmware |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
731 up and running normally, but you don't mind having the phone also charge from |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
732 your computer every time you connect USB, then likewise leave the charging |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
733 switch always on. However, if you are going to reflash phone firmware or do |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
734 other advanced manipulations using the computer interface, then you will need |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
735 to turn the charging switch off. With the switch off, the USB port becomes a |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
736 computer interface only, without charging. |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
737 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
738 Past the switch, the battery charging circuit using USB +5V as the charging |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
739 power source will be the most classic one depicted in Figure 4-10 in the Iota |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
740 chip datasheet (TWL3025_SWRS021.pdf), same as in Pirelli DP-L10 and Motorola |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
741 C1xx phones. Presentation of USB +5V to Iota VCHG terminal past the charging |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
742 on/off switch is what will cause the chipset to boot in the 'charger plug' mode, |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
743 or to activate charging functions in the firmware if the phone is already on. |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
744 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
745 1.12. Computer interface |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
746 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
747 Our Calypso chip has no native USB, instead the host computer interface of all |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
748 Calypso-based systems consists of two UARTs. On our development boards starting |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
749 with FCDEV3B, we got used to interfacing to both of these UARTs by way of |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
750 FT2232x adapters, a USB to serial adapter that goes from one USB device to two |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
751 UARTs, presenting two ttyUSB devices to a Linux host. For low-level operations |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
752 like flash programming, having just one Calypso UART is sufficient (either of |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
753 the two), but once our regular firmware is up and running, then having both |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
754 Calypso UARTs gives maximum user empowerment: Modem UART carries a classic AT |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
755 command interface complete with CSD, GPRS and GSM 07.10 MUX capabilities, while |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
756 the other UART (IrDA) carries TI's RVTMUX debug and development interface. |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
757 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
758 Before arriving at our current radical approach with the charging on/off switch, |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
759 for many years previously I was considering a more conservative approach. My |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
760 original idea was to bring out the two Calypso UARTs in very different ways: my |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
761 thought was to bring only the Modem UART to the built-in USB port (by way of a |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
762 built-in single-channel USB-serial chip), and have plugged-in USB always present |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
763 VCHG to the chipset, but route the debug UART (the one most useful in low-level |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
764 development and bring-up) to a special FPC connector that would interface to a |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
765 special debug board, just like Openmoko did on their Neo. Serious development |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
766 work would then require having that debug board attached, while more casual |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
767 users would be able to talk AT commands to the phone via the built-in USB port, |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
768 charging the battery at the same time. |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
769 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
770 What made me change my mind about this design was the realization that I, as the |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
771 most principal user and developer, would end up wanting to have the debug board |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
772 attached all the time, and the need to have it hanging externally, or perhaps |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
773 glued or taped to the back of the phone, would be a huge blemish and |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
774 inconvenience. Back in the days of Openmoko, someone must have had a similar |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
775 experience, as I remember reading about a hack where someone built a debug board |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
776 functional equivalent that fits inside the Neo, in some otherwise unused space. |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
777 |
da1a2a32c260
FC-handset-spec: USB description started
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
changeset
|
778 Hence the new design for our planned FC Libre Dumbphone handset: the USB port |
51
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
779 will have a built-in FT2232D (or perhaps FT2232H) subsystem (USB to two UARTs) |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
780 connected to it, interfacing to both Calypso UARTs, while the charging on/off |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
781 switch will make it possible to use this interface for low-level development |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
782 and bring-up without presenting VCHG to the chipset. In this architecture this |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
783 FT2232x subsystem should be considered the primary "owner" of the handset's USB |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
784 port, while the charging function is secondary and optional, enabled or disabled |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
785 with a switch. To put it another way, if our USB port is connected to a regular |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
786 USB host (as opposed to a Dedicated Charging Port power-only source), that USB |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
787 host will always enumerate the FT2232x and see two ttyUSB devices, whereas |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
788 charging may or may not take place depending on the switch setting. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
789 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
790 1.12.1. Set of UART signals |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
791 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
792 The set of signals to be connected between Calypso and FT2232x for the Modem |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
793 UART is almost complete: |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
794 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
795 USB UART |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
796 DTE signal Calypso signal |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
797 ------------------------------ |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
798 TxD RX_MODEM |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
799 RxD TX_MODEM |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
800 RTS CTS_MODEM |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
801 CTS RTS_MODEM |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
802 DTR GPIO3 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
803 DCD GPIO2 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
804 RI GPIO8 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
805 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
806 Only DSR is omitted for the Modem UART channel, all others are included. The |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
807 second debug UART channel is only two wires: |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
808 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
809 USB UART |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
810 DTE signal Calypso signal |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
811 ------------------------------ |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
812 TxD RX_IRDA |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
813 RxD TX_IRDA |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
814 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
815 However, as shown in the next section, these signals cannot be simply connected |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
816 between Calypso and FT2232x, and a more complicated scheme needs to be |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
817 implemented instead. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
818 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
819 1.12.2. USB and mobile power domains |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
820 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
821 Our FC Libre Dumbphone handset will have two principal power domains in it: the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
822 main battery-powered mobile domain, and the USB domain. This power domain |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
823 situation presents some very significant challenges, a problem generally |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
824 referred to as "partial power-down". There are two PPD scenarios to be |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
825 concerned about: |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
826 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
827 1) In normal operation the phone is mobile and not connected to USB. In this |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
828 state the mobile power domain is on, whereas USB-powered circuits in the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
829 FT2232x subsystem have no power. The two challenges in this state are: |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
830 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
831 1a) We need to ensure that no currents flow from the powered-on mobile domain |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
832 into powered-down USB domain circuits, as any such currents would be an |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
833 unacceptable drain on the battery. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
834 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
835 1b) Calypso UART inputs that come from the USB domain when the latter is active |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
836 need to have defined logic levels on them when the USB domain has no power: |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
837 no floating, no mid-way levels that would cause higher currents in CMOS |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
838 input structures, and furthermore, some Calypso inputs need to be high in |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
839 this state, while others need to be low. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
840 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
841 2) A reverse PPD scenario occurs when the USB domain has power, but the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
842 Calypso+Iota chipset is in its switched-off state per Iota VRPC. This |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
843 scenario can occur when the charging switch is set to off, or when the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
844 battery is critically low and undergoing precharge. The main concern in |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
845 this state is to avoid feeding power from the USB domain into the Calypso |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
846 chipset's V-IO rail - our experience on Caramel2 boards conclusively |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
847 demonstrates that Calypso does not like this condition and can behave oddly, |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
848 erratically feeding current into its outputs that are supposed to be low or |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
849 Hi-Z, and thereby erratically turning on various peripherals. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
850 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
851 If we were to naively connect our UART signals between Calypso and FT2232x, the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
852 result would be bad: all of the above concerns would be violated. Instead we |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
853 need to insert carefully designed isolating buffer circuits in both directions. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
854 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
855 1.12.2.1. Calypso to FT2232x signal direction |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
856 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
857 If these signals were connected directly, significant current (in the mA range) |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
858 would flow from Calypso outputs into powered-down FT2232x inputs, which is not |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
859 acceptable. Our solution is to insert an LVC buffer (probably 74LVC541A, for |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
860 the 5 signals that are needed) between Calypso outputs and FT2232x inputs, with |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
861 the buffer powered from USB domain 3.3V supply. With mobile on and USB power |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
862 absent, the LVC buffer's Ioff spec will apply, which is listed in Nexperia's |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
863 74LVC541A datasheet as 0.1 uA typical, 10 uA maximum. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
864 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
865 An unfortunate consequence of this design is that in the opposite PPD scenario |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
866 (USB connected to a host, charging switch off, mobile chipset in its off state) |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
867 the inputs to the LVC buffer will float, with FT2232x inputs receiving garbage |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
868 as a result. Adding pull-up resistors to a USB-domain supply would cause other |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
869 problems, hence the Mother's position is that we'll just live with a few |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
870 floating inputs in this particular condition - and it is a condition that |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
871 should not persist for extended lengths of time. There is also a software |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
872 consideration stemming from this floating input situation: when you are doing |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
873 low-level programming and development operations in this state, don't open the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
874 Modem UART ttyUSB device, and only operate via the other debug UART. The latter |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
875 is a 2-wire UART without any flow control or modem control signals, hence there |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
876 will be less bogosity for the Linux host to see in this state. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
877 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
878 1.12.2.2. FT2232x to Calypso signal direction |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
879 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
880 This direction is even more difficult, and we will need to insert two chained |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
881 LVC buffers: the signals will first pass through an LVC buffer powered from the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
882 USB domain, and then through another LVC buffer powered from the Calypso+Iota |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
883 chipset's V-IO rail. There will be pull resistors inserted between the two |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
884 buffers: either pull-up to VBAT (raw battery positive rail) or pull-down to GND, |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
885 depending on the needed signal sense. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
886 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
887 The LVC buffer powered from Calypso V-IO is needed in order to prevent current |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
888 feeding into Calypso when the mobile is switched off - the buffer's Ioff spec |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
889 will apply. Pull-up and pull-down resistors in front of this buffer are needed |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
890 so that Calypso inputs will receive the desired states when no USB host is |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
891 connected. Pull-ups are being made to VBAT instead of V-IO to eliminate the |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
892 possibility of current feeding into V-IO through these resistors. (Feeding |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
893 from 3.3V logic signals into the battery can't happen when the battery is above |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
894 3.3 V, and if the battery is below 3.3 V, then we are only adding a little to |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
895 the precharge current.) |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
896 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
897 The other LVC buffer (the one powered from USB-domain 3.3V) is needed because |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
898 in the absence of this buffer, current will flow through pull-up resistors and |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
899 into powered-down FT2232x output pins, the resulting pull-down resistance will |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
900 be lower than the pull-up, and the next buffer won't receive the desired logic |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
901 level, not to mention unwanted current flowing. With the other LVC buffer |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
902 added, that buffer's Ioff spec will apply. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
903 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
904 The value of pull-up resistors to VBAT will be 22 kOhm. With maximum 15 uA |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
905 current flowing through each resistor (worst-case Ioff of one buffer plus |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
906 worst-case Ii of the other buffer), the maximum voltage drop on the 22 kOhm |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
907 resistor will be 330 mV. In order for the LVC buffer's input structure to not |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
908 draw extra current, the input voltage needs to be 2.8 V or higher - thus with |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
909 22 kOhm resistors we'll keep satisfying this condition until the battery falls |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
910 to about 3.1 V, which is below the operational range for switched-on mobile. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
911 |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
912 One downside of having pull-ups to VBAT (which can be as high as 4.2 V) on |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
913 signals that are output from a 3.3V-powered buffer is that when the buffer |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
914 output is high, there may be current flowing into that high output (not sourcing |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
915 out of it as normally expected), which is a bad condition for CMOS outputs. |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
916 However, this current will be limited to a maximum of about 40 uA |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
917 ((4.2-3.3 V) / 22 kOhm), and my feeling is that such small current won't hurt |
7933c3a1b5e0
FC-handset-spec: power domain mess documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
50
diff
changeset
|
918 Nexperia LVC buffers. |