Thomas Van Aken
/
bartho
test
main.cpp@0:8491d8911089, 2021-02-08 (annotated)
- Committer:
- TVA
- Date:
- Mon Feb 08 18:35:32 2021 +0000
- Revision:
- 0:8491d8911089
- Child:
- 1:397813654863
Test1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |