Thomas Van Aken
/
bartho
test
main.cpp
- Committer:
- TVA
- Date:
- 2021-02-08
- Revision:
- 0:8491d8911089
- Child:
- 1:397813654863
File content as of revision 0:8491d8911089:
/* mbed Microcontroller Library * Copyright (c) 2019 ARM Limited * SPDX-License-Identifier: Apache-2.0 */ #include "mbed.h" #include "platform/mbed_thread.h" // Blinking rate in milliseconds #define BLINKING_RATE_MS 500 #define RST_PIN P5_6 #define MFIO_PIN P5_4 I2C i2c(P3_4, P3_5); const int addr = 0xAA; void scanI2C() { printf("Searching for I2C devices...\n\r"); int count = 0; for (int address = 0; address < 255; address +=2) { // check only for device's read addres if (!i2c.write(address, NULL, 0)) { // 0 returned is ok printf("I2C device found at address 0x%02X (0x%02X in 8-bit)\n\r", address >> 1, address); // the address is without LSB, which is R/W flag. shoft it right once count++; } thread_sleep_for(1); } if (count) printf("%d", count); else printf("No"); printf(" device%c found\n\r\n", count == 1?'\0':'s'); } int main() { i2c.frequency(400000); char cmd[4]; scanI2C(); // Initialise the digital pin LED1 as an output DigitalOut led(LED1); DigitalOut rst(RST_PIN); DigitalOut mfio(MFIO_PIN); mfio = 1; rst = 1; thread_sleep_for(10); rst = 0; thread_sleep_for(10); rst = 1; thread_sleep_for(1500); while (true) { cmd[0] = 0x02; cmd[1] = 0x00; i2c.write(addr, cmd, 2); thread_sleep_for(2); cmd[0] = 0x00; cmd[1] = 0x00; i2c.read(addr, cmd, 2); printf("1: %x %x\n", cmd[0], cmd[1]); cmd[0] = 0xFF; cmd[1] = 0x03; i2c.write(addr, cmd, 2); thread_sleep_for(2); cmd[0] = 0x00; cmd[1] = 0x00; cmd[2] = 0x00; cmd[3] = 0x00; i2c.read(addr, cmd, 4); printf("2: %d %d %d %d\n", cmd[0], cmd[1], cmd[2], cmd[3]); /*rst =! rst; mfio =! mfio;*/ thread_sleep_for(BLINKING_RATE_MS); led = !led; } }