WORKS

Dependencies:   MAX44000 PWM_Tone_Library nexpaq_mdk

Fork of LED_Demo by Maxim nexpaq

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "test_env.h"
00003 #include <stdio.h>
00004 
00005 #define ADDR (0xA0)
00006 #define FREQ 100000
00007 
00008 // ********************************************************
00009 // This tests data transfer between two I2C interfaces on
00010 // the same chip, one configured as master, the other as
00011 // slave. Works on the LPC1768 mbed.
00012 //
00013 // Wiring:
00014 //   p28 <-> p9
00015 //   p27 <-> p10
00016 //   pull-up resistors on both lines
00017 // ********************************************************
00018 
00019 
00020 int main()
00021 {
00022     char sent = 'T', received;
00023 
00024     master.frequency(FREQ);
00025     slave.frequency(FREQ);
00026     slave.address(ADDR);
00027 
00028     // First transfer: master to slave
00029     master.start();
00030     master.write(ADDR);
00031     master.write(sent);
00032     if(slave.receive() != I2CSlave::WriteAddressed)
00033     {
00034         notify_completion(false);
00035         return 1;
00036     }
00037     slave.read(&received, 1);
00038     if(sent != received)
00039     {
00040         notify_completion(false);
00041         return 1;
00042     }
00043     master.stop();
00044 
00045     // Second transfer: slave to master
00046     master.start();
00047     master.write(ADDR | 1);
00048     if(slave.receive() != I2CSlave::ReadAddressed)
00049     {
00050         notify_completion(false);
00051         return 1;
00052     }
00053     slave.write(received);
00054     received = master.read(0);
00055     slave.stop();
00056     notify_completion(received == sent);
00057 }
00058