Implementation example for i2c libraries (based on nRF51 dk)
Dependencies: I2C_Driver mbed
Fork of I2C_Driver_Example by
main.cpp@0:314e9b39d797, 2016-08-23 (annotated)
- 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?
User | Revision | Line number | New 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 | } |