Fork to support REVB hardware.
Dependents: C027_BootTest_revb C027_EthernetSniffTest C027_M3_SerialEcho C027_HelloWorld_revb ... more
Fork of C027 by
Revision 8:a356376db984, committed 2013-11-05
- Comitter:
- mazgch
- Date:
- Tue Nov 05 21:41:46 2013 +0000
- Parent:
- 7:e3eab86f1de9
- Child:
- 9:7e038529bfff
- Commit message:
- updating the support library
Changed in this revision
--- a/C027.cpp Fri Oct 25 08:46:43 2013 +0000 +++ b/C027.cpp Tue Nov 05 21:41:46 2013 +0000 @@ -8,34 +8,33 @@ void mbed_die(void) { + DigitalOut led(LED); for (;;) { // nothing to do here - - // we do not have fancy leds that - // can be flashed on the C027 + led = 0; + wait_ms(200); + led = 1; + wait_ms(200); } } C027::C027() : - mdmEn(MDMEN), -#ifndef C027_REVA - mdmRst(MDMRST), -#endif - mdmPwrOn(MDMPWRON), mdmRts(MDMRTS), - gpsEn(GPSEN), gpsRst(GPSRST) + mdmEn(MDMEN), mdmRst(MDMRST), mdmPwrOn(MDMPWRON), // MDM CTRL + mdmRts(MDMRTS), mdmLvlOe(MDMLVLOE), mdmUsbDet(MDMUSBDET), // MDM IF + gpsEn(GPSEN), gpsRst(GPSRST) // GPS CTRL { // we start with the gps disabled - gpsEn = 0; // LDOEN: 1=on,0=off - gpsRst = 0; // RESET: 0=reset,1=operating + gpsEn = 0; // LDOEN: 1=on,0=off + gpsRst = 0; // RESET: 0=reset,1=operating gpsIsEnabled = false; // we start with the modem disabled - mdmPwrOn = 1; // PWRON: 1=idle,0=action - mdmRts = 0; // RTS. 0=ready to send - mdmEn = 0; // LDOEN: 1=on,0=off -#ifndef C027_REVA - mdmRst = 0; // RESET: 0=reset,1=operating -#endif + mdmLvlOe = 1; // LVLEN: 1=disabled + mdmUsbDet = 0; // USBDET: 0=disabled + mdmPwrOn = 1; // PWRON: 1=idle, 0=action + mdmRts = 0; // RTS. 0=ready to send + mdmEn = 0; // LDOEN: 1=on, 0=off + mdmRst = 0; // RESET: 0=reset, 1=operating mdmIsEnabled = false; } @@ -45,19 +44,20 @@ { #ifdef C027_REVA // we need the gps ldo for the level shifters of the modem - gpsEn = 1; // LDOEN(gps): 0=off -> 1=on -#endif - mdmPwrOn = 1; // PWRON: 1=idle - mdmEn = 0; // LDOEN: 0=off -#ifndef C027_REVA - mdmRst = 0; // RESET: 0=reset + gpsEn = 1; // LDOEN(gps): 0=off -> 1=on #endif - wait_ms(1); // wait until stable - mdmEn = 1; // LDOEN: 0=off -> 1=on - wait_ms(50); // power on sequence is triggered by keeping reset 50ms low -#ifndef C027_REVA - mdmRst = 1; // RESET: 0=reset -> 1=operating -#endif + mdmPwrOn = 1; // PWRON: 1=idle + mdmEn = 0; // LDOEN: 0=off + mdmRst = 0; // RESET: 0=reset + mdmLvlOe = 1; // LVLEN: 1=disabled + mdmUsbDet = 0; // USBDET: 0=disabled + wait_ms( 10); // wait until supply switched off + mdmEn = 1; // LDOEN: 0=off -> 1=on + wait_ms( 10); // wait until supply stable and on + wait_ms(300); // power on sequence is triggered by keeping reset 50ms-300ms low + mdmRst = 1; // RESET: 0=reset -> 1=operating + mdmLvlOe = 0; // LVLEN: 0=enabled + mdmUsbDet = 1; // USBDET: 1=enabled mdmIsEnabled = true; // the modem schould be fully ready after 3000ms } @@ -65,14 +65,14 @@ { mdmIsEnabled = false; // initiate power off sequence by setting PwnOn low for >1s - mdmPwrOn = 0; // PWRON: 0=active - wait_ms(1000); - mdmPwrOn = 1; // PWRON: 0=active -> 1=idle + mdmLvlOe = 1; // LVLEN: 1=disabled + mdmUsbDet = 0; // USBDET: 0=disabled + mdmPwrOn = 0; // PWRON: 0=active + wait_ms(1000); // send to sleep + mdmPwrOn = 1; // PWRON: 0=active -> 1=idle // now we can savely switch off the ldo -#ifndef C027_REVA - mdmRst = 0; // RESET: 1=operating -> 0=reset -#endif - mdmEn = 0; // LDOEN: 1=on -> 0=off + mdmRst = 0; // RESET: 1=operating -> 0=reset + mdmEn = 0; // LDOEN: 1=on -> 0=off #ifdef C027_REVA // the gps ldo may no longer be needed level shifters of the modem // so we switch it off if the gps is not enabled @@ -84,15 +84,44 @@ void C027::mdmReset(void) { -#ifndef C027_REVA + if (mdmIsEnabled) + { + mdmRst = 0; // RESET: 0=reset + // power on sequence is triggered by reset low + // LISA-U200 50ms + // SARA-G350 50ms + // LISA-C200 300ms + wait_ms(300); + mdmRst = 1; // RESET: 0=reset -> 1=operating + } +} + +void C027::mdmWakeup(void) +{ if (mdmIsEnabled) { - // power on sequence is triggered by 50ms reset low - mdmRst = 0; // RESET: 0=reset,1=operating - wait_ms(50); - mdmRst = 1; // RESET: 1=operating,0=reset + mdmPwrOn = 0; + // wakeup the device by low pulse: + // LISA-U200 50-80us + // SARA-G350 5ms + // LISA-C200 150ms + wait_ms(150); + mdmPwrOn = 1; } -#endif +} + +void C027::mdmSleep(void) +{ + if (mdmIsEnabled) + { + mdmPwrOn = 0; + // going to sleep is triggerd by low pulse: + // LISA-U200 1000ms + // SARA-G350 n/a + // LISA-C200 n/a + wait_ms(1000); + mdmPwrOn = 1; + } } void C027::gpsPower(bool enable)
--- a/C027.h Fri Oct 25 08:46:43 2013 +0000 +++ b/C027.h Tue Nov 05 21:41:46 2013 +0000 @@ -22,21 +22,22 @@ void mdmPower(bool enable); void mdmReset(void); + void mdmWakeup(void); + void mdmSleep(void); void gpsPower(bool enable); void gpsReset(void); private: // modem pins - DigitalOut mdmEn; -#ifndef C027_REVA - DigitalOut mdmRst; -#endif - DigitalOut mdmPwrOn; - DigitalOut mdmRts; - bool mdmIsEnabled; + DigitalOut mdmEn; + DigitalOut mdmRst; + DigitalOut mdmPwrOn; + DigitalOut mdmRts; + DigitalOut mdmLvlOe; + DigitalOut mdmUsbDet; + bool mdmIsEnabled; // gps pins - DigitalOut gpsEn; - DigitalOut gpsRst; - bool gpsIsEnabled; + DigitalOut gpsEn; + DigitalOut gpsRst; + bool gpsIsEnabled; }; -
--- a/C027_PinNames.h Fri Oct 25 08:46:43 2013 +0000 +++ b/C027_PinNames.h Tue Nov 05 21:41:46 2013 +0000 @@ -41,11 +41,13 @@ #define MDMUSBDP (P0_29) // USB D+ #define MDMUSBDN (P0_30) // USB D- #define MDMUSBCON (P2_9) // USB Connect +#define MDMUSBDET (P0_7) // USB Detect (n/a on REV.A board) // Control #define MDMEN (P2_5) // Supply Control (high = enabled) #define MDMPWRON (P2_6) // #define MDMGPIO1 (P2_7) // GPIO1, Network status #define MDMRST (P2_8) // Reset (active low, set as open drain!) +#define MDMLVLOE (P0_8) // Serial/GPIO Level Shifter Output Enable (n/a on REV.A board) // PIN header connector // for standard-based form factor with expansion board @@ -82,6 +84,10 @@ #define SDA (P0_0) #define SCL (P0_1) +// LED +// ----------------------------------------------------------- +#define LED (P3_25) // RED LED (n/a on REV.A board) + // CAN (TJA1040) // ----------------------------------------------------------- #define CANRD (P0_4) @@ -115,9 +121,5 @@ // Reserved / NC pins // ----------------------------------------------------------- -#define RSVD1 (P0_7) -#define RSVD2 (P0_8) -#define RSVD3 (P0_9) -#define RSVD4 (P3_25) -#define RSVD5 (P3_26) - +#define RSVD1 (P0_9) +#define RSVD2 (P3_26)