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
Diff: main.cpp
- 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