FreeCalypso > hg > freecalypso-docs
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. |
