Prueba de comunicación I2C

Dependencies:   BLE_API mbed nRF51822

Fork of I2C_Demo by RedBearLab

Committer:
cesarcazal
Date:
Thu Jun 30 07:31:52 2016 +0000
Revision:
3:982bc9dad64e
Parent:
0:34c256ab7309
I2C Tesis

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RedBearLab 0:34c256ab7309 1 /*
RedBearLab 0:34c256ab7309 2
RedBearLab 0:34c256ab7309 3 Copyright (c) 2012-2014 RedBearLab
RedBearLab 0:34c256ab7309 4
RedBearLab 0:34c256ab7309 5 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
RedBearLab 0:34c256ab7309 6 and associated documentation files (the "Software"), to deal in the Software without restriction,
RedBearLab 0:34c256ab7309 7 including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
RedBearLab 0:34c256ab7309 8 and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
RedBearLab 0:34c256ab7309 9 subject to the following conditions:
RedBearLab 0:34c256ab7309 10 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
RedBearLab 0:34c256ab7309 11
RedBearLab 0:34c256ab7309 12 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
RedBearLab 0:34c256ab7309 13 INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
RedBearLab 0:34c256ab7309 14 PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
RedBearLab 0:34c256ab7309 15 FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
RedBearLab 0:34c256ab7309 16 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
RedBearLab 0:34c256ab7309 17
RedBearLab 0:34c256ab7309 18 */
RedBearLab 0:34c256ab7309 19
RedBearLab 0:34c256ab7309 20 #include "mbed.h"
RedBearLab 0:34c256ab7309 21 #include "wire.h"
RedBearLab 0:34c256ab7309 22
cesarcazal 3:982bc9dad64e 23 //#define BLE_Nano
cesarcazal 3:982bc9dad64e 24 #define nRF_51822
RedBearLab 0:34c256ab7309 25
RedBearLab 0:34c256ab7309 26
RedBearLab 0:34c256ab7309 27 #ifdef nRF_51822
RedBearLab 0:34c256ab7309 28 #define SCL 28
RedBearLab 0:34c256ab7309 29 #define SDA 29
RedBearLab 0:34c256ab7309 30 #endif
RedBearLab 0:34c256ab7309 31
RedBearLab 0:34c256ab7309 32 #ifdef BLE_Nano
RedBearLab 0:34c256ab7309 33 #define SCL 7
RedBearLab 0:34c256ab7309 34 #define SDA 6
RedBearLab 0:34c256ab7309 35 #endif
RedBearLab 0:34c256ab7309 36
cesarcazal 3:982bc9dad64e 37 #define DEV_ADDR 0xB0
RedBearLab 0:34c256ab7309 38
cesarcazal 3:982bc9dad64e 39 //Serial pc(USBTX, USBRX);
RedBearLab 0:34c256ab7309 40 TwoWire Wire = TwoWire(NRF_TWI0);
RedBearLab 0:34c256ab7309 41
cesarcazal 3:982bc9dad64e 42 int WriteBytes(uint8_t addr, uint8_t *pbuf, uint16_t length){
cesarcazal 3:982bc9dad64e 43
RedBearLab 0:34c256ab7309 44 Wire.beginTransmission(DEV_ADDR);
cesarcazal 3:982bc9dad64e 45 //Wire.write( (uint8_t)addr>>8 );
RedBearLab 0:34c256ab7309 46 Wire.write( (uint8_t)addr );
RedBearLab 0:34c256ab7309 47 Wire.write(pbuf, length);
cesarcazal 3:982bc9dad64e 48 return (Wire.endTransmission());
RedBearLab 0:34c256ab7309 49 }
RedBearLab 0:34c256ab7309 50
cesarcazal 3:982bc9dad64e 51 int ReadBytes(uint8_t addr, uint8_t *pbuf, uint16_t length){
cesarcazal 3:982bc9dad64e 52 int error=0;
RedBearLab 0:34c256ab7309 53 Wire.beginTransmission(DEV_ADDR);
cesarcazal 3:982bc9dad64e 54 //Wire.write( (uint8_t)addr>>8 );
RedBearLab 0:34c256ab7309 55 Wire.write( (uint8_t)addr );
cesarcazal 3:982bc9dad64e 56 error = Wire.endTransmission();
RedBearLab 0:34c256ab7309 57
RedBearLab 0:34c256ab7309 58 Wire.requestFrom(DEV_ADDR+1, length);
RedBearLab 0:34c256ab7309 59 while( Wire.available() > 0 )
RedBearLab 0:34c256ab7309 60 {
RedBearLab 0:34c256ab7309 61 *pbuf = Wire.read();
RedBearLab 0:34c256ab7309 62 pbuf++;
RedBearLab 0:34c256ab7309 63 }
cesarcazal 3:982bc9dad64e 64 return(error);
RedBearLab 0:34c256ab7309 65 }
RedBearLab 0:34c256ab7309 66
RedBearLab 0:34c256ab7309 67
cesarcazal 3:982bc9dad64e 68 //static uint8_t wt_data[10] = {'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd'};
cesarcazal 3:982bc9dad64e 69 //static uint8_t rd_data[10];
cesarcazal 3:982bc9dad64e 70
cesarcazal 3:982bc9dad64e 71 //static uint16_t index;
RedBearLab 0:34c256ab7309 72
cesarcazal 3:982bc9dad64e 73 DigitalOut led (p17);
cesarcazal 3:982bc9dad64e 74 DigitalIn button(p13,PullUp);
cesarcazal 3:982bc9dad64e 75
cesarcazal 3:982bc9dad64e 76 int estado;
cesarcazal 3:982bc9dad64e 77 uint8_t address, data[3];
cesarcazal 3:982bc9dad64e 78
RedBearLab 0:34c256ab7309 79
RedBearLab 0:34c256ab7309 80 int main(void)
RedBearLab 0:34c256ab7309 81 {
cesarcazal 3:982bc9dad64e 82 int estado=0;
cesarcazal 3:982bc9dad64e 83 led=1;
cesarcazal 3:982bc9dad64e 84 data[0]=0;
cesarcazal 3:982bc9dad64e 85 data[1]=0;
cesarcazal 3:982bc9dad64e 86 data[2]=0;
cesarcazal 3:982bc9dad64e 87 //pc.baud(9600);
cesarcazal 3:982bc9dad64e 88 //wait(5);
RedBearLab 0:34c256ab7309 89 //Wire.begin();
RedBearLab 0:34c256ab7309 90 Wire.begin(SCL, SDA, TWI_FREQUENCY_100K);
cesarcazal 3:982bc9dad64e 91 //pc.printf("IIC Demo Start \r\n");
RedBearLab 0:34c256ab7309 92 wait(0.1);
RedBearLab 0:34c256ab7309 93 while(1)
RedBearLab 0:34c256ab7309 94 {
cesarcazal 3:982bc9dad64e 95 if (button==0) {
cesarcazal 3:982bc9dad64e 96 estado = WriteBytes(0, data/*wt_data*/, 3);
cesarcazal 3:982bc9dad64e 97 if (estado==0) {
cesarcazal 3:982bc9dad64e 98 led=0;
cesarcazal 3:982bc9dad64e 99 }
cesarcazal 3:982bc9dad64e 100 else {
cesarcazal 3:982bc9dad64e 101 led=1;
cesarcazal 3:982bc9dad64e 102 }
cesarcazal 3:982bc9dad64e 103 wait (0.5f);
RedBearLab 0:34c256ab7309 104 }
cesarcazal 3:982bc9dad64e 105 //ReadBytes(0, rd_data, 10);
cesarcazal 3:982bc9dad64e 106 //pc.printf("Read data from AT24C512 \r\n");
cesarcazal 3:982bc9dad64e 107 //for(index=0; index<10; index++)
cesarcazal 3:982bc9dad64e 108 //{
cesarcazal 3:982bc9dad64e 109 // pc.putc(rd_data[index]);
cesarcazal 3:982bc9dad64e 110 // rd_data[index] = 0x00;
cesarcazal 3:982bc9dad64e 111 //}
cesarcazal 3:982bc9dad64e 112 //pc.printf("\r\n");
cesarcazal 3:982bc9dad64e 113 //wait(1);
RedBearLab 0:34c256ab7309 114 }
RedBearLab 0:34c256ab7309 115 }
RedBearLab 0:34c256ab7309 116
RedBearLab 0:34c256ab7309 117
RedBearLab 0:34c256ab7309 118
RedBearLab 0:34c256ab7309 119
RedBearLab 0:34c256ab7309 120
RedBearLab 0:34c256ab7309 121
RedBearLab 0:34c256ab7309 122
RedBearLab 0:34c256ab7309 123
RedBearLab 0:34c256ab7309 124
RedBearLab 0:34c256ab7309 125
RedBearLab 0:34c256ab7309 126
RedBearLab 0:34c256ab7309 127
RedBearLab 0:34c256ab7309 128
RedBearLab 0:34c256ab7309 129
RedBearLab 0:34c256ab7309 130
RedBearLab 0:34c256ab7309 131
RedBearLab 0:34c256ab7309 132
RedBearLab 0:34c256ab7309 133
RedBearLab 0:34c256ab7309 134
RedBearLab 0:34c256ab7309 135