comparison GTM900-design-guide @ 30:658010a51ff4

GTM900-design-guide written
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 13 Sep 2020 21:36:17 +0000
parents
children
comparison
equal deleted inserted replaced
29:6d7486db31cb 30:658010a51ff4
1 As of this writing (2020-09), the Mother's company Falconia Partners LLC is
2 actively in the process of bringing to market a new FreeCalypso hardware
3 solution based on our FC Tango module, and we also have an FTDI-based
4 (specifically FT2232D) adapter for connecting to Calypso UARTs (both of them)
5 and for controlling the Calypso module's PWON and RESET, allowing remote
6 control of Calypso power and boot in physically unattended environments.
7 However, this Tango-based solution is expected to become available some time
8 in 2020-12 (up to 3 months from now), and we realize that some people may not
9 be able to wait this long - some people may have an immediate need for some
10 working solution right now.
11
12 We are also aware that our European colleagues over at Sysmocom are working on
13 a competing solution based on the Huawei GTM900 Calypso modem module, but are
14 going totally the wrong way about it, and seem to be running into roadblocks
15 resulting from their earlier bad design choices. In light of this observed
16 situation, the present document has been put together to provide some guidance
17 to those who are currently misguided. If someone needs a working solution
18 right now, cannot wait another 3 months for our company to deliver our Tango-
19 based Caramel2+DUART28 solution, is looking at using GTM900 for the Calypso
20 module, and would be willing to use an FT2232x (either D or H) chip instead of
21 Sysmocom's poor choice of Silabs CP2105, this document will tell you exactly how
22 you should hook everything up in order to produce a guaranteed-working solution
23 without wasting time and energy on multiple design iterations.
24
25 FT2232x chip and EEPROM
26 =======================
27
28 Either FT2232D or FT2232H should work equally well, hence the choice between
29 the two is up to the board designer's preference. Our DUART28 adapter uses
30 FT2232D, and this choice was made primarily in the hope of easing the onerous
31 requirement of PCB controlled impedance (90 ohm differential) for USB traces:
32 FT2232H supports USB high speed, and this USB HS capability is thought to make
33 the controlled impedance requirement more stringent. Our competitor CP2105 has
34 no USB HS capability just like FT2232D, hence the latter was chosen to match.
35 But if the 90 ohm controlled impedance requirement is not a problem for you,
36 then by all means go ahead and use the newer and apparently more popular
37 FT2232H.
38
39 Whichever FT2232x chip you choose, you should include an EEPROM in your board
40 design. This EEPROM is officially optional per FTDI, but if you omit it, you
41 lose the ability to set a custom USB VID:PID. If you are only interested in
42 the two Calypso UARTs and don't need programmatic control of PWON and RESET,
43 then using the FT2232x chip's default USB VID:PID of 0x0403:0x6010 (with or
44 without an EEPROM) is perfectly fine. However, if you are going to do what I
45 recommend below in terms of using (otherwise unused) FT2232x Channel B RTS and
46 DTR outputs to control PWON and RESET, then you will need to apply a custom
47 patch to the Linux kernel's ftdi_sio driver (see freecalypso-hwlab Hg
48 repository) in order to make this mechanism practically usable. If you are
49 going to be applying any kind of custom patches to that ftdi_sio driver, having
50 a custom USB VID:PID will be very helpful in order to apply the needed quirks
51 conditionally, hence the EEPROM becomes necessary.
52
53 LEGAL NOTE: Falconia Partners LLC has received an official allocation of 8 PIDs
54 from FTDI out of FTDI's USB VID, but these USB IDs are _ONLY_ for hardware
55 products that are physically produced by Falconia Partners LLC - other parties
56 may not use these USB IDs without our explicit permission. Therefore, if you
57 are going to use a custom USB VID:PID, you will need to provide your own.
58
59 Dual UART signal connections
60 ============================
61
62 Unlike CP2105, the two channels of FT2232x are perfectly symmetric, hence the
63 choice of which FT2232x channel should be connected to which Calypso UART is
64 arbitrary. As the Mother of FreeCalypso, I very strongly encourage everyone to
65 use this convention: Calypso MODEM UART (the one for which Huawei brought out 8
66 wires with full modem control) should be connected to FT2232x Channel A, and
67 Calypso IrDA UART (the one for which there are only two wires) should be
68 connected to FT2232x Channel B.
69
70 If you are going for the lowest cost in terms of component count and PCB real
71 estate, it is perfectly acceptable to connect FT2232x I/O pins directly to
72 Calypso UART pins. Yes, FT2232x outputs operate at 3.3V and cannot be brought
73 down to Calypso native 2.8V, but if you read TI Calypso datasheets (document
74 CAL000/A in particular), is says quite clearly that input voltages of up to
75 VDDS+0.5V are acceptable, i.e., the inputs are tolerant of 3.3V. This situation
76 becomes a little less than ideal during Calypso sleep modes (the higher voltage
77 feeds into the chipset's V-IO rail and brings that rail a little higher than
78 normal), but engineering is all about trade-offs and compromises, and sometimes
79 it is necessary to trade off between perfection and cost.
80
81 If you do wish to feed proper 2.8V signals to the Calypso instead of 3.3V, the
82 easiest way to do so would be to insert LVC buffers into signal paths from
83 FT2232x outputs to Calypso UART inputs. Power the LVC buffer IC from the
84 Calypso+Iota chipset's V-IO rail, which Huawei brought out on an interface pin
85 they named "VDD". There will be no problem with partial power-down conditions
86 (USB on, Calypso off) because LVC buffers are specifically designed for such
87 operation and have very low Ioff specs in the uA range.
88
89 Our DUART28 adapter also includes another LVC buffer going the other way, in
90 the path from Calypso UART outputs to FT2232x inputs, but it is included for
91 only one reason: in order to gracefully support the other partial power-down
92 scenario of Calypso up and running, but no USB host connected and thus no USB
93 power. If this latter scenario is not a concern for your application, then
94 there is absolutely no problem with connecting Calypso UART outputs directly to
95 FT2232x inputs without any buffers.
96
97 Controlling PWON and RESET
98 ==========================
99
100 FT2232x RTS and DTR outputs are normally CMOS high (RS-232 inactive) when no
101 one is poking at them, but the standard Linux kernel ftdi_sio driver (following
102 POSIX stipulations, apparently) unconditionally makes them both CMOS low
103 (RS-232 active) when the ttyUSBx device is opened. If you look in our
104 freecalypso-hwlab Hg repository, you will find a patch to this driver (a quirk
105 conditionalized on a custom USB VID:PID) that suppresses this automatic
106 assertion of RTS & DTR on ttyUSBx device open, allowing userspace applications
107 to control them explicitly with TIOCMBIS and TIOCMBIC ioctls.
108
109 Our upcoming Caramel2+DUART28 solution will include an optional (one may connect
110 the needed jumper wires or leave them unconnected) provision for controlling
111 the Calypso+Iota chipset's PWON and RESET with otherwise unused FT2232 Channel B
112 RTS & DTR outputs. The arrangement we have implemented is that when ChanB RTS
113 is asserted (CMOS low, TIOCMBIS), Calypso PWON is triggered, and when ChanB DTR
114 is asserted, Calypso RESET is triggered. We recommend that others follow the
115 same convention.
116
117 PWON wiring
118 -----------
119
120 The Calypso+Iota chipset's (Iota really) PWON input is internally pulled up to
121 raw VBAT, thus it must not be connected directly to any ordinary 3.3V or 2.8V
122 logic - instead it needs to be driven with an OC or OD buffer. If it is to be
123 controlled with ChanB RTS (FT2232x BDBUS2 output), the ideal circuit is a simple
124 non-inverting OD buffer such as Nexperia 74LVC1G07; the OD buffer IC's Vdd
125 supply should be connected to the FT2232x chip's 3.3V I/O supply rail.
126
127 RESET wiring
128 ------------
129
130 The RESET input is different between Huawei GTM900 and FC Tango modules. On FC
131 Tango it is raw Iota nTESTRESET and thus needs to be driven in the same way as
132 PWON described above, but GTM900 internally incorporates the JTAG reset circuit
133 depicted on TI's Leonardo schematics, and the RESET signal they bring out is
134 what we (FreeCalypso) call XDS_RESET - see the Calypso-test-reset article. It
135 is acceptable to drive XDS_RESET with an OC/OD driver just like PWON or raw
136 nTESTRESET, but this OC/OD driver becomes optional with XDS_RESET - thanks to
137 the transistor circuit inside the GTM900 module, it is perfectly acceptable to
138 wire FT2232x BDBUS4 output (ChanB DTR) directly to GTM900 RST input, and it will
139 work per our convention, triggering a reset when ChanB DTR is asserted.
140
141 The XDS_RESET transistor circuit inside GTM900 does have one unpleasant side
142 effect though: on modules like FC Tango that bring out raw nTESTRESET, that
143 reset includes a built-in Switch-ON function, and PWON effectively becomes
144 optional - one can fully control the module using only RESET and soft poweroff
145 - but the same does NOT hold on GTM900. XDS_RESET may or may not work (no
146 guarantees) when the Calypso+Iota chipset is in VRPC switched-off state, thus
147 one must do a switch-on with PWON first, and then drive a reset if necessary.
148 And no, driving XDS_RESET with an OC/OD buffer won't do anything to eliminate
149 this unpleasant side effect - you just have to live with it for as long as you
150 use GTM900 modules and not FC Tango.