test

Committer:
TVA
Date:
Mon Feb 08 18:35:32 2021 +0000
Revision:
0:8491d8911089
Child:
1:397813654863
Test1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TVA 0:8491d8911089 1 /* mbed Microcontroller Library
TVA 0:8491d8911089 2 * Copyright (c) 2019 ARM Limited
TVA 0:8491d8911089 3 * SPDX-License-Identifier: Apache-2.0
TVA 0:8491d8911089 4 */
TVA 0:8491d8911089 5
TVA 0:8491d8911089 6 #include "mbed.h"
TVA 0:8491d8911089 7 #include "platform/mbed_thread.h"
TVA 0:8491d8911089 8
TVA 0:8491d8911089 9
TVA 0:8491d8911089 10 // Blinking rate in milliseconds
TVA 0:8491d8911089 11 #define BLINKING_RATE_MS 500
TVA 0:8491d8911089 12
TVA 0:8491d8911089 13 #define RST_PIN P5_6
TVA 0:8491d8911089 14 #define MFIO_PIN P5_4
TVA 0:8491d8911089 15
TVA 0:8491d8911089 16 I2C i2c(P3_4, P3_5);
TVA 0:8491d8911089 17
TVA 0:8491d8911089 18 const int addr = 0xAA;
TVA 0:8491d8911089 19
TVA 0:8491d8911089 20 void scanI2C() {
TVA 0:8491d8911089 21 printf("Searching for I2C devices...\n\r");
TVA 0:8491d8911089 22
TVA 0:8491d8911089 23 int count = 0;
TVA 0:8491d8911089 24 for (int address = 0; address < 255; address +=2) { // check only for device's read addres
TVA 0:8491d8911089 25 if (!i2c.write(address, NULL, 0)) { // 0 returned is ok
TVA 0:8491d8911089 26 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
TVA 0:8491d8911089 27 count++;
TVA 0:8491d8911089 28 }
TVA 0:8491d8911089 29 thread_sleep_for(1);
TVA 0:8491d8911089 30 }
TVA 0:8491d8911089 31 if (count)
TVA 0:8491d8911089 32 printf("%d", count);
TVA 0:8491d8911089 33 else
TVA 0:8491d8911089 34 printf("No");
TVA 0:8491d8911089 35 printf(" device%c found\n\r\n", count == 1?'\0':'s');
TVA 0:8491d8911089 36 }
TVA 0:8491d8911089 37
TVA 0:8491d8911089 38 int main()
TVA 0:8491d8911089 39 {
TVA 0:8491d8911089 40 i2c.frequency(400000);
TVA 0:8491d8911089 41 char cmd[4];
TVA 0:8491d8911089 42
TVA 0:8491d8911089 43 scanI2C();
TVA 0:8491d8911089 44
TVA 0:8491d8911089 45 // Initialise the digital pin LED1 as an output
TVA 0:8491d8911089 46 DigitalOut led(LED1);
TVA 0:8491d8911089 47 DigitalOut rst(RST_PIN);
TVA 0:8491d8911089 48 DigitalOut mfio(MFIO_PIN);
TVA 0:8491d8911089 49
TVA 0:8491d8911089 50 mfio = 1;
TVA 0:8491d8911089 51 rst = 1;
TVA 0:8491d8911089 52 thread_sleep_for(10);
TVA 0:8491d8911089 53 rst = 0;
TVA 0:8491d8911089 54 thread_sleep_for(10);
TVA 0:8491d8911089 55 rst = 1;
TVA 0:8491d8911089 56 thread_sleep_for(1500);
TVA 0:8491d8911089 57
TVA 0:8491d8911089 58 while (true) {
TVA 0:8491d8911089 59 cmd[0] = 0x02;
TVA 0:8491d8911089 60 cmd[1] = 0x00;
TVA 0:8491d8911089 61 i2c.write(addr, cmd, 2);
TVA 0:8491d8911089 62 thread_sleep_for(2);
TVA 0:8491d8911089 63
TVA 0:8491d8911089 64 cmd[0] = 0x00;
TVA 0:8491d8911089 65 cmd[1] = 0x00;
TVA 0:8491d8911089 66 i2c.read(addr, cmd, 2);
TVA 0:8491d8911089 67 printf("1: %x %x\n", cmd[0], cmd[1]);
TVA 0:8491d8911089 68
TVA 0:8491d8911089 69
TVA 0:8491d8911089 70 cmd[0] = 0xFF;
TVA 0:8491d8911089 71 cmd[1] = 0x03;
TVA 0:8491d8911089 72 i2c.write(addr, cmd, 2);
TVA 0:8491d8911089 73 thread_sleep_for(2);
TVA 0:8491d8911089 74
TVA 0:8491d8911089 75 cmd[0] = 0x00;
TVA 0:8491d8911089 76 cmd[1] = 0x00;
TVA 0:8491d8911089 77 cmd[2] = 0x00;
TVA 0:8491d8911089 78 cmd[3] = 0x00;
TVA 0:8491d8911089 79 i2c.read(addr, cmd, 4);
TVA 0:8491d8911089 80 printf("2: %d %d %d %d\n", cmd[0], cmd[1], cmd[2], cmd[3]);
TVA 0:8491d8911089 81
TVA 0:8491d8911089 82 /*rst =! rst;
TVA 0:8491d8911089 83 mfio =! mfio;*/
TVA 0:8491d8911089 84 thread_sleep_for(BLINKING_RATE_MS);
TVA 0:8491d8911089 85 led = !led;
TVA 0:8491d8911089 86 }
TVA 0:8491d8911089 87 }