MP3(DFR0534)+BLE(TYBLE16)

Dependencies:   MP3_DFR0534 mbed-os_TYBLE16

see /users/kenjiArai/notebook/mp3--voice-module-dfr0534/

Revision:
8:7e42f8dc42a2
Parent:
7:cedbf234a089
Child:
9:8c9e6e270b67
--- a/main.cpp	Thu Dec 19 01:43:46 2019 +0000
+++ b/main.cpp	Fri Dec 20 01:19:40 2019 +0000
@@ -5,7 +5,7 @@
  *  http://www.page.sannet.ne.jp/kenjia/index.html
  *  https://os.mbed.com/users/kenjiArai/
  *      Created:    December  14th, 2019
- *      Revised:    December  19th, 2019
+ *      Revised:    December  20th, 2019
  */
 
 //  Include --------------------------------------------------------------------
@@ -27,7 +27,7 @@
 DigitalOut  fram_pwr(D5, 1);    // FRAM power on
 InterruptIn rtc_irq(P0_2, PullUp);
 Serial      pc(USBTX, USBRX);
-nRF51_Vdd   vdd(3.6f, 1.8f, ONLY4VDD);
+nRF51_Vdd   vdd(3.6f, 1.6f, ONLY4VDD);
 
 //  RAM ------------------------------------------------------------------------
 uint8_t fram_id[4];
@@ -39,13 +39,13 @@
 float barometer;
 float temperature;
 float humidity;
-    
+
 //  ROM / Constant data --------------------------------------------------------
 const char *const opngmsg0 =
     "\r\n---------\r\nCompiled on " __DATE__ " " __TIME__ " (UTC)\r\n";
 const char *const opngmsg1 =
     "Project: TYBLE16_simple_data_logger  by Kenji Arai\r\n";
- 
+
 //  Function prototypes --------------------------------------------------------
 static void rtc_interrupt(void);
 static void goto_standby(void);
@@ -59,7 +59,7 @@
     char buf[64];               // data buffer for text
     time_t seconds;
 
-    ThisThread::sleep_for(100);
+    ThisThread::sleep_for(20);
     pc.puts(opngmsg0);
     pc.puts(opngmsg1);
     // Check TYBLE-16 configuration
@@ -80,14 +80,14 @@
     if (id == FRAM_ID) {
         fram_ready = true;
     }
-    if (fram_ready == true){
+    if (fram_ready == true) {
         pc.printf("(looks like Fujitsu MB85RS2M)\r\n");
     } else {
         pc.printf("(unknown device)\r\n");
     }
     // RX8025
     RX8025 ex_rtc(I2C_SDA, I2C_SCL);    // RTC(RX8025) (Fixed address)
-    ThisThread::sleep_for(500);
+    ThisThread::sleep_for(100);
     ex_rtc.clear_alarmD_INTA();
     w_check_rtc_time(ex_rtc);
     int32_t count = 3;
@@ -99,7 +99,7 @@
         temperature = bme280.getTemperature();
         humidity = bme280.getHumidity();
         vcc_voltage = vdd.read_real_value();
-        if (count == 1){
+        if (count == 1) {
             pc.printf("%s", buf);
             pc.printf("%+2.2f,%2.2f,%04.2f,",
                       temperature, humidity, barometer);
@@ -122,8 +122,28 @@
               sleeping_time);
     ex_rtc.set_next_alarmD_INTA(sleeping_time);
     //----- SLEEP --------------------------------------------------------------
+    // FRAM & BME280 power off
     bme280_pwr = 0;
     fram_pwr = 0;
+    // SPI output keeps low
+    DigitalOut p0(SPIS_PSELMOSI, 0);
+    DigitalOut p1(SPIS_PSELSCK, 0);
+    DigitalOut p2(P0_25, 0);
+    DigitalOut p3(P0_6, 0);
+    // SPI MISO sets pulldown
+    DigitalIn  p4(SPIS_PSELMISO, PullDown);
+    // Periperal power off
+    NRF_UART0->ENABLE           = 0;
+    NRF_UART0->POWER            = 0;
+    NRF_TWI1->ENABLE            = 0;
+    NRF_TWI1->POWER             = 0;
+    NRF_SPI0->ENABLE            = 0;
+    NRF_SPI0->POWER             = 0;
+    NRF_SPIS1->ENABLE            = 0;
+    NRF_SPIS1->POWER             = 0;
+    NRF_ADC->ENABLE             = 0;
+    NRF_ADC->POWER              = 0;
+    // Enter sleep mode
     ThisThread::sleep_for((sleeping_time) * 60 * 1000 + 10000);
     system_reset();
 #else
@@ -143,7 +163,7 @@
 {
     time_t seconds_1st, seconds_2nd, diff;
     struct tm t;
- 
+
     for (uint32_t i = 0; i < 10; i++) {
         ex_rtc.get_time_rtc(&t);   // read External RTC data
         seconds_1st = mktime(&t);
@@ -151,7 +171,7 @@
         seconds_2nd = mktime(&t);
         diff = seconds_2nd - seconds_1st;
         if ((diff == 0) || (diff == 1)) {
-            if (seconds_2nd > DATE_COUNT_START){
+            if (seconds_2nd > DATE_COUNT_START) {
                 return seconds_2nd;
             }
         }