Implementation example for i2c libraries (based on nRF51 dk)

Dependencies:   I2C_Driver mbed

Fork of I2C_Driver_Example by CESAR CAZAL

Committer:
cesarcazal
Date:
Tue Aug 23 16:26:49 2016 +0000
Revision:
0:314e9b39d797
Ejemplo de implementaci?n del driver i2c para nRF51

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cesarcazal 0:314e9b39d797 1 /*
cesarcazal 0:314e9b39d797 2
cesarcazal 0:314e9b39d797 3 Programa de ejemplo para las librerías I2C
cesarcazal 0:314e9b39d797 4 */
cesarcazal 0:314e9b39d797 5
cesarcazal 0:314e9b39d797 6 #include "mbed.h"
cesarcazal 0:314e9b39d797 7 #include "I2C_Driver.h"
cesarcazal 0:314e9b39d797 8 #include "wire.h"
cesarcazal 0:314e9b39d797 9
cesarcazal 0:314e9b39d797 10 //#define nRF51DK
cesarcazal 0:314e9b39d797 11 #define nRF52DK
cesarcazal 0:314e9b39d797 12
cesarcazal 0:314e9b39d797 13
cesarcazal 0:314e9b39d797 14 #ifdef nRF52DK
cesarcazal 0:314e9b39d797 15 #define SCL 28
cesarcazal 0:314e9b39d797 16 #define SDA 29
cesarcazal 0:314e9b39d797 17 #endif
cesarcazal 0:314e9b39d797 18
cesarcazal 0:314e9b39d797 19 #ifdef nRF51DK
cesarcazal 0:314e9b39d797 20 #define SCL 7
cesarcazal 0:314e9b39d797 21 #define SDA 6
cesarcazal 0:314e9b39d797 22 #endif
cesarcazal 0:314e9b39d797 23
cesarcazal 0:314e9b39d797 24 #define DEV_ADDR 0xB0
cesarcazal 0:314e9b39d797 25
cesarcazal 0:314e9b39d797 26
cesarcazal 0:314e9b39d797 27 DigitalOut led (p17);
cesarcazal 0:314e9b39d797 28 DigitalIn button(p13,PullUp);
cesarcazal 0:314e9b39d797 29
cesarcazal 0:314e9b39d797 30 int estado;
cesarcazal 0:314e9b39d797 31 uint8_t address, data[3];
cesarcazal 0:314e9b39d797 32
cesarcazal 0:314e9b39d797 33 int main(void)
cesarcazal 0:314e9b39d797 34 {
cesarcazal 0:314e9b39d797 35 led=1;
cesarcazal 0:314e9b39d797 36 data[0]=107;
cesarcazal 0:314e9b39d797 37 data[1]=0;
cesarcazal 0:314e9b39d797 38 data[2]=0;
cesarcazal 0:314e9b39d797 39 ini_i2c(SCL, SDA); //inicializacion del I2C
cesarcazal 0:314e9b39d797 40 wait(0.1);
cesarcazal 0:314e9b39d797 41 while(1)
cesarcazal 0:314e9b39d797 42 {
cesarcazal 0:314e9b39d797 43 if (button==0) {
cesarcazal 0:314e9b39d797 44 data[0]=0;
cesarcazal 0:314e9b39d797 45 //Parámetros write_i2c: addr: dirección de memoria; *pbuf: puntero de byte 0 del buffer; length: cantidad de bytes a enviar; dev_addr: Direección física del dispositivo esclavo i2c
cesarcazal 0:314e9b39d797 46 write_i2c(0, data, 3, DEV_ADDR);//debe escribirse en la dirección 0 de memoria el valor "0" para poder escribir en algún registro.
cesarcazal 0:314e9b39d797 47 data[0]=107;
cesarcazal 0:314e9b39d797 48 write_i2c(1, data, 3, DEV_ADDR);//durante la escritura, el byte menos significativo será el byte "0". Una escritura adecuada devuelve un "0".
cesarcazal 0:314e9b39d797 49 data[0]=1;
cesarcazal 0:314e9b39d797 50 write_i2c(0, data, 3, DEV_ADDR);//debe escribirse en la dirección 0 de memoria el valor "1" para poder leer algún registro.
cesarcazal 0:314e9b39d797 51 //wait (3);
cesarcazal 0:314e9b39d797 52 //Parámetros read_i2c: addr: dirección de memoria; *pbuf: puntero de byte 0 del buffer; length: cantidad de bytes a enviar; dev_addr: Direección física del dispositivo esclavo i2c
cesarcazal 0:314e9b39d797 53 if(read_i2c(1, data, 3, DEV_ADDR)==0)// durante la lectura, el byte menos significativo será el byte "0". Una lectura adecuada devuelve un "0".
cesarcazal 0:314e9b39d797 54 led=0;
cesarcazal 0:314e9b39d797 55 wait(0.5);
cesarcazal 0:314e9b39d797 56 led=1;
cesarcazal 0:314e9b39d797 57 wait(0.5);
cesarcazal 0:314e9b39d797 58 if(data[0]==107)
cesarcazal 0:314e9b39d797 59 led=0;
cesarcazal 0:314e9b39d797 60 else
cesarcazal 0:314e9b39d797 61 led=1;
cesarcazal 0:314e9b39d797 62 wait(0.5f);
cesarcazal 0:314e9b39d797 63 }
cesarcazal 0:314e9b39d797 64 }
cesarcazal 0:314e9b39d797 65 }