karelv
/
i2c_lpc4088
Small demo program I2C - PCF8574 showing that I2C class is not working on LPC4088
main.cpp@0:c3cff0038502, 2014-12-07 (annotated)
- Committer:
- karelv
- Date:
- Sun Dec 07 13:54:14 2014 +0000
- Revision:
- 0:c3cff0038502
demo program for I2C
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
karelv | 0:c3cff0038502 | 1 | #include "mbed.h" |
karelv | 0:c3cff0038502 | 2 | |
karelv | 0:c3cff0038502 | 3 | DigitalOut myled(LED4); |
karelv | 0:c3cff0038502 | 4 | I2C i2c(p9, p10); |
karelv | 0:c3cff0038502 | 5 | |
karelv | 0:c3cff0038502 | 6 | // Connections made: |
karelv | 0:c3cff0038502 | 7 | // SDA to pin9 of LPC4088 QSB |
karelv | 0:c3cff0038502 | 8 | // SCL to pin10 of LPC4088 QSB |
karelv | 0:c3cff0038502 | 9 | // on I2C bus is PCF8574 connected at sub-address 0 (0x40). |
karelv | 0:c3cff0038502 | 10 | // all supplied at 3.3V |
karelv | 0:c3cff0038502 | 11 | // no external pullup (Assuming that I2C-class is using 5K internal pullup) |
karelv | 0:c3cff0038502 | 12 | // |
karelv | 0:c3cff0038502 | 13 | |
karelv | 0:c3cff0038502 | 14 | // this example does not work on my LPC4088 QSB. |
karelv | 0:c3cff0038502 | 15 | // mbed: 92:4fc01daae5a5 |
karelv | 0:c3cff0038502 | 16 | // |
karelv | 0:c3cff0038502 | 17 | // note When I connect an external pulldown! (not pullup) of 10K on SDA & SCL it seems to work |
karelv | 0:c3cff0038502 | 18 | // This is not logical. |
karelv | 0:c3cff0038502 | 19 | |
karelv | 0:c3cff0038502 | 20 | void |
karelv | 0:c3cff0038502 | 21 | i2cIoWrite (char address, char data) |
karelv | 0:c3cff0038502 | 22 | { |
karelv | 0:c3cff0038502 | 23 | i2c.start (); |
karelv | 0:c3cff0038502 | 24 | i2c.write (address); |
karelv | 0:c3cff0038502 | 25 | i2c.write (data); |
karelv | 0:c3cff0038502 | 26 | i2c.stop (); |
karelv | 0:c3cff0038502 | 27 | } |
karelv | 0:c3cff0038502 | 28 | |
karelv | 0:c3cff0038502 | 29 | |
karelv | 0:c3cff0038502 | 30 | int |
karelv | 0:c3cff0038502 | 31 | main() |
karelv | 0:c3cff0038502 | 32 | { |
karelv | 0:c3cff0038502 | 33 | i2c.frequency (100000); |
karelv | 0:c3cff0038502 | 34 | |
karelv | 0:c3cff0038502 | 35 | while (1) |
karelv | 0:c3cff0038502 | 36 | { |
karelv | 0:c3cff0038502 | 37 | myled = 1; |
karelv | 0:c3cff0038502 | 38 | i2cIoWrite (0x40, 0x55); |
karelv | 0:c3cff0038502 | 39 | wait(0.5); |
karelv | 0:c3cff0038502 | 40 | myled = 0; |
karelv | 0:c3cff0038502 | 41 | i2cIoWrite (0x40, 0xAA); |
karelv | 0:c3cff0038502 | 42 | wait (0.5); |
karelv | 0:c3cff0038502 | 43 | } |
karelv | 0:c3cff0038502 | 44 | } |