FreeCalypso > hg > freecalypso-docs
comparison 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 |
comparison
equal
deleted
inserted
replaced
50:da1a2a32c260 | 51:7933c3a1b5e0 |
---|---|
774 inconvenience. Back in the days of Openmoko, someone must have had a similar | 774 inconvenience. Back in the days of Openmoko, someone must have had a similar |
775 experience, as I remember reading about a hack where someone built a debug board | 775 experience, as I remember reading about a hack where someone built a debug board |
776 functional equivalent that fits inside the Neo, in some otherwise unused space. | 776 functional equivalent that fits inside the Neo, in some otherwise unused space. |
777 | 777 |
778 Hence the new design for our planned FC Libre Dumbphone handset: the USB port | 778 Hence the new design for our planned FC Libre Dumbphone handset: the USB port |
779 will have a built-in FT2232D subsystem (USB to two UARTs) connected to it, | 779 will have a built-in FT2232D (or perhaps FT2232H) subsystem (USB to two UARTs) |
780 interfacing to both Calypso UARTs, while the charging on/off switch will make it | 780 connected to it, interfacing to both Calypso UARTs, while the charging on/off |
781 possible to use this interface for low-level development and bring-up without | 781 switch will make it possible to use this interface for low-level development |
782 presenting VCHG to the chipset. In this architecture this FT2232D subsystem | 782 and bring-up without presenting VCHG to the chipset. In this architecture this |
783 should be considered the primary "owner" of the handset's USB port, while the | 783 FT2232x subsystem should be considered the primary "owner" of the handset's USB |
784 charging function is secondary and optional, enabled or disabled with a switch. | 784 port, while the charging function is secondary and optional, enabled or disabled |
785 To put it another way, if our USB port is connected to a regular USB host (as | 785 with a switch. To put it another way, if our USB port is connected to a regular |
786 opposed to a Dedicated Charging Port power-only source), that USB host will | 786 USB host (as opposed to a Dedicated Charging Port power-only source), that USB |
787 always enumerate the FT2232D and see two ttyUSB devices, whereas charging may | 787 host will always enumerate the FT2232x and see two ttyUSB devices, whereas |
788 or may not take place depending on the switch setting. | 788 charging may or may not take place depending on the switch setting. |
789 | |
790 1.12.1. Set of UART signals | |
791 | |
792 The set of signals to be connected between Calypso and FT2232x for the Modem | |
793 UART is almost complete: | |
794 | |
795 USB UART | |
796 DTE signal Calypso signal | |
797 ------------------------------ | |
798 TxD RX_MODEM | |
799 RxD TX_MODEM | |
800 RTS CTS_MODEM | |
801 CTS RTS_MODEM | |
802 DTR GPIO3 | |
803 DCD GPIO2 | |
804 RI GPIO8 | |
805 | |
806 Only DSR is omitted for the Modem UART channel, all others are included. The | |
807 second debug UART channel is only two wires: | |
808 | |
809 USB UART | |
810 DTE signal Calypso signal | |
811 ------------------------------ | |
812 TxD RX_IRDA | |
813 RxD TX_IRDA | |
814 | |
815 However, as shown in the next section, these signals cannot be simply connected | |
816 between Calypso and FT2232x, and a more complicated scheme needs to be | |
817 implemented instead. | |
818 | |
819 1.12.2. USB and mobile power domains | |
820 | |
821 Our FC Libre Dumbphone handset will have two principal power domains in it: the | |
822 main battery-powered mobile domain, and the USB domain. This power domain | |
823 situation presents some very significant challenges, a problem generally | |
824 referred to as "partial power-down". There are two PPD scenarios to be | |
825 concerned about: | |
826 | |
827 1) In normal operation the phone is mobile and not connected to USB. In this | |
828 state the mobile power domain is on, whereas USB-powered circuits in the | |
829 FT2232x subsystem have no power. The two challenges in this state are: | |
830 | |
831 1a) We need to ensure that no currents flow from the powered-on mobile domain | |
832 into powered-down USB domain circuits, as any such currents would be an | |
833 unacceptable drain on the battery. | |
834 | |
835 1b) Calypso UART inputs that come from the USB domain when the latter is active | |
836 need to have defined logic levels on them when the USB domain has no power: | |
837 no floating, no mid-way levels that would cause higher currents in CMOS | |
838 input structures, and furthermore, some Calypso inputs need to be high in | |
839 this state, while others need to be low. | |
840 | |
841 2) A reverse PPD scenario occurs when the USB domain has power, but the | |
842 Calypso+Iota chipset is in its switched-off state per Iota VRPC. This | |
843 scenario can occur when the charging switch is set to off, or when the | |
844 battery is critically low and undergoing precharge. The main concern in | |
845 this state is to avoid feeding power from the USB domain into the Calypso | |
846 chipset's V-IO rail - our experience on Caramel2 boards conclusively | |
847 demonstrates that Calypso does not like this condition and can behave oddly, | |
848 erratically feeding current into its outputs that are supposed to be low or | |
849 Hi-Z, and thereby erratically turning on various peripherals. | |
850 | |
851 If we were to naively connect our UART signals between Calypso and FT2232x, the | |
852 result would be bad: all of the above concerns would be violated. Instead we | |
853 need to insert carefully designed isolating buffer circuits in both directions. | |
854 | |
855 1.12.2.1. Calypso to FT2232x signal direction | |
856 | |
857 If these signals were connected directly, significant current (in the mA range) | |
858 would flow from Calypso outputs into powered-down FT2232x inputs, which is not | |
859 acceptable. Our solution is to insert an LVC buffer (probably 74LVC541A, for | |
860 the 5 signals that are needed) between Calypso outputs and FT2232x inputs, with | |
861 the buffer powered from USB domain 3.3V supply. With mobile on and USB power | |
862 absent, the LVC buffer's Ioff spec will apply, which is listed in Nexperia's | |
863 74LVC541A datasheet as 0.1 uA typical, 10 uA maximum. | |
864 | |
865 An unfortunate consequence of this design is that in the opposite PPD scenario | |
866 (USB connected to a host, charging switch off, mobile chipset in its off state) | |
867 the inputs to the LVC buffer will float, with FT2232x inputs receiving garbage | |
868 as a result. Adding pull-up resistors to a USB-domain supply would cause other | |
869 problems, hence the Mother's position is that we'll just live with a few | |
870 floating inputs in this particular condition - and it is a condition that | |
871 should not persist for extended lengths of time. There is also a software | |
872 consideration stemming from this floating input situation: when you are doing | |
873 low-level programming and development operations in this state, don't open the | |
874 Modem UART ttyUSB device, and only operate via the other debug UART. The latter | |
875 is a 2-wire UART without any flow control or modem control signals, hence there | |
876 will be less bogosity for the Linux host to see in this state. | |
877 | |
878 1.12.2.2. FT2232x to Calypso signal direction | |
879 | |
880 This direction is even more difficult, and we will need to insert two chained | |
881 LVC buffers: the signals will first pass through an LVC buffer powered from the | |
882 USB domain, and then through another LVC buffer powered from the Calypso+Iota | |
883 chipset's V-IO rail. There will be pull resistors inserted between the two | |
884 buffers: either pull-up to VBAT (raw battery positive rail) or pull-down to GND, | |
885 depending on the needed signal sense. | |
886 | |
887 The LVC buffer powered from Calypso V-IO is needed in order to prevent current | |
888 feeding into Calypso when the mobile is switched off - the buffer's Ioff spec | |
889 will apply. Pull-up and pull-down resistors in front of this buffer are needed | |
890 so that Calypso inputs will receive the desired states when no USB host is | |
891 connected. Pull-ups are being made to VBAT instead of V-IO to eliminate the | |
892 possibility of current feeding into V-IO through these resistors. (Feeding | |
893 from 3.3V logic signals into the battery can't happen when the battery is above | |
894 3.3 V, and if the battery is below 3.3 V, then we are only adding a little to | |
895 the precharge current.) | |
896 | |
897 The other LVC buffer (the one powered from USB-domain 3.3V) is needed because | |
898 in the absence of this buffer, current will flow through pull-up resistors and | |
899 into powered-down FT2232x output pins, the resulting pull-down resistance will | |
900 be lower than the pull-up, and the next buffer won't receive the desired logic | |
901 level, not to mention unwanted current flowing. With the other LVC buffer | |
902 added, that buffer's Ioff spec will apply. | |
903 | |
904 The value of pull-up resistors to VBAT will be 22 kOhm. With maximum 15 uA | |
905 current flowing through each resistor (worst-case Ioff of one buffer plus | |
906 worst-case Ii of the other buffer), the maximum voltage drop on the 22 kOhm | |
907 resistor will be 330 mV. In order for the LVC buffer's input structure to not | |
908 draw extra current, the input voltage needs to be 2.8 V or higher - thus with | |
909 22 kOhm resistors we'll keep satisfying this condition until the battery falls | |
910 to about 3.1 V, which is below the operational range for switched-on mobile. | |
911 | |
912 One downside of having pull-ups to VBAT (which can be as high as 4.2 V) on | |
913 signals that are output from a 3.3V-powered buffer is that when the buffer | |
914 output is high, there may be current flowing into that high output (not sourcing | |
915 out of it as normally expected), which is a bad condition for CMOS outputs. | |
916 However, this current will be limited to a maximum of about 40 uA | |
917 ((4.2-3.3 V) / 22 kOhm), and my feeling is that such small current won't hurt | |
918 Nexperia LVC buffers. |