AKM Development Platform. This is the D7.014 version.

Dependencies:   AK09970 AK099XX AK7401 AK7451 AK8963X AK9750 AK9752 AkmSensor BLE_API I2CNano MCP342x SerialNano SpiNano TCA9554A mbed nRF51822

Fork of AKDP by Masahiko Fukasawa

Revision:
17:a22b52136eb8
Parent:
16:5343a852fea4
Child:
18:d75838bceaaf
--- a/main.cpp	Thu Aug 04 00:10:30 2016 +0000
+++ b/main.cpp	Fri Aug 05 23:17:17 2016 +0000
@@ -19,7 +19,7 @@
 #define CR                              '\r'
 #define LF                              '\n'
 
-#define DEVICE_NAME                     "AKDP Rev.D7.005"
+#define DEVICE_NAME                     "AKDP Rev.D7.006"
 
 BLE                 ble;
 UARTService*        uartService;
@@ -186,20 +186,34 @@
 }
 
 bool initAkdpBoard(){
-
+    MSG("#Init AKDP board.\r\n");
+    const int TIME_FOR_OE_MS = 100;
+    
     // CSN High to activate I2C_GATE
     DigitalOut _cs = DigitalOut(SPI_CS);
     _cs.write(1);
-    DigitalOut _sck = DigitalOut(SPI_SCK);
-    _sck.write(1);
     
-    const int TIME_FOR_OE_MS = 100;
+    // I2C communication ports to HIGH for preventing mulfunction.
+    DigitalOut _scl = DigitalOut(I2C_SCL);
+    _scl.write(1);
+    DigitalOut _sda = DigitalOut(I2C_SDA);
+    _sda.write(1);
+    MSG("#SCL,SDA port high.\r\n");
+    wait_ms(TIME_FOR_OE_MS);
+    
     const TCA9554A::Port PORT_OE_LVS1   = TCA9554A::PORT_7;
     const TCA9554A::Port PORT_OE_LVS2   = TCA9554A::PORT_6;
     const TCA9554A::Port PORT_SPIN      = TCA9554A::PORT_5;
     const TCA9554A::Port PORT_RSV_RSTN  = TCA9554A::PORT_0;
     
     I2C i2c(I2C_SDA, I2C_SCL);
+    
+    // call I2C general reset only once
+    char cmd[] = {0x06};    // general reset code
+    i2c.write(0x00, cmd, 1);
+    MSG("#General Reset.\r\n");
+    wait_ms(TIME_FOR_OE_MS);
+    
     TCA9554A tca9554a(&i2c, TCA9554A::SLAVE_ADDRESS_38H);
     
     // Initializes TCA9554A (I2C GPIO Expander)
@@ -215,23 +229,18 @@
     tca9554a.setPortLevel(PORT_SPIN, TCA9554A::HIGH);
     wait_ms(TIME_FOR_OE_MS);
 
-    tca9554a.setPortLevel(PORT_OE_LVS2, TCA9554A::LOW);
-    wait_ms(TIME_FOR_OE_MS);
-    
-    tca9554a.setPortLevel(PORT_OE_LVS2, TCA9554A::HIGH);
-    wait_ms(TIME_FOR_OE_MS);
-
     //  disable 1.8V level shifter to read ID
     tca9554a.setPortLevel(PORT_OE_LVS1, TCA9554A::LOW);
+    MSG("#LVS1 Low.\r\n");
     wait_ms(TIME_FOR_OE_MS);
 
     tca9554a.setPortLevel(PORT_OE_LVS1, TCA9554A::HIGH);
+    MSG("#LVS1 High.\r\n");
     wait_ms(TIME_FOR_OE_MS);
 
     tca9554a.setPortLevel(PORT_OE_LVS1, TCA9554A::LOW);
+    MSG("#LVS1 Low.\r\n");
     wait_ms(TIME_FOR_OE_MS);
-
-//    MSG("#LVS1 Low.\r\n");
     
     //  read ID and subId from ADC
     id = getId(ANALOG_SENSOR_ID,4);
@@ -248,7 +257,7 @@
 
     //  enable 1.8V level shifter
     tca9554a.setPortLevel(PORT_OE_LVS1, TCA9554A::HIGH);
-//    MSG("#LVS1 High.\r\n");
+    MSG("#LVS1 High.\r\n");
     wait_ms(TIME_FOR_OE_MS);
 
     // RSTN control