
MAX20361 Demo with LoRa Module on LP1 mode
Dependencies: SX1276GenericLib USBDevice
Fork of NonPingPong_PICO_LoRa_LP1 by
AO19Lib/AO19_lib.cpp@8:5ff74d7381dc, 2020-10-16 (annotated)
- Committer:
- walterluu
- Date:
- Fri Oct 16 23:26:04 2020 +0000
- Revision:
- 8:5ff74d7381dc
- Parent:
- 6:51f492ca61a2
LP1 code with PingPong removal and 10 second transmission
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
walterluu | 6:51f492ca61a2 | 1 | |
walterluu | 6:51f492ca61a2 | 2 | #include "mbed.h" |
walterluu | 6:51f492ca61a2 | 3 | #include "AO19_lib.h" |
walterluu | 6:51f492ca61a2 | 4 | |
walterluu | 6:51f492ca61a2 | 5 | // ***************************************************************************** |
walterluu | 6:51f492ca61a2 | 6 | // AO19_write_register(char, char, char) writes single byte to AO19 |
walterluu | 6:51f492ca61a2 | 7 | // char I2C address |
walterluu | 6:51f492ca61a2 | 8 | // char AO19 register address |
walterluu | 6:51f492ca61a2 | 9 | // char data byte to be writen |
walterluu | 6:51f492ca61a2 | 10 | // returns 0 on success ACK, 1 on NACK |
walterluu | 6:51f492ca61a2 | 11 | // ***************************************************************************** |
walterluu | 6:51f492ca61a2 | 12 | |
walterluu | 6:51f492ca61a2 | 13 | int AO19_write_register(I2C *i2c, char I2C_add, char reg_add, char byte){ |
walterluu | 6:51f492ca61a2 | 14 | char data[2]; // char type ranges from 0 to 255 (8 bytes) |
walterluu | 6:51f492ca61a2 | 15 | int error; |
walterluu | 6:51f492ca61a2 | 16 | data[0] = reg_add; |
walterluu | 6:51f492ca61a2 | 17 | data[1] = byte; |
walterluu | 6:51f492ca61a2 | 18 | error = i2c->write(I2C_add,data,2); |
walterluu | 6:51f492ca61a2 | 19 | //if(DEBUG)db.printf("wr[%02X %02X %d]\r\n", data[0], data[1], error); |
walterluu | 6:51f492ca61a2 | 20 | return error; |
walterluu | 6:51f492ca61a2 | 21 | |
walterluu | 6:51f492ca61a2 | 22 | } |
walterluu | 6:51f492ca61a2 | 23 | |
walterluu | 6:51f492ca61a2 | 24 | /// **************************************************************************** |
walterluu | 6:51f492ca61a2 | 25 | // AO19_write_register(char, char, char *, int) writes multiple bytes to AO19 |
walterluu | 6:51f492ca61a2 | 26 | // char I2C address |
walterluu | 6:51f492ca61a2 | 27 | // char AO19 register address |
walterluu | 6:51f492ca61a2 | 28 | // char * data vector of bytes to be written |
walterluu | 6:51f492ca61a2 | 29 | // int number of bytes to write |
walterluu | 6:51f492ca61a2 | 30 | // returns 0 on success ACK, 1 on NACK |
walterluu | 6:51f492ca61a2 | 31 | // ***************************************************************************** |
walterluu | 6:51f492ca61a2 | 32 | |
walterluu | 6:51f492ca61a2 | 33 | int AO19_write_register(I2C *i2c, char I2C_add, char reg_add, char *bytes, int n){ |
walterluu | 6:51f492ca61a2 | 34 | int i; |
walterluu | 6:51f492ca61a2 | 35 | //set start address |
walterluu | 6:51f492ca61a2 | 36 | char data[16]; |
walterluu | 6:51f492ca61a2 | 37 | int error; |
walterluu | 6:51f492ca61a2 | 38 | data[0] = reg_add; |
walterluu | 6:51f492ca61a2 | 39 | for(i=1;i<=n;i++){ |
walterluu | 6:51f492ca61a2 | 40 | data[i] = bytes[i-1]; |
walterluu | 6:51f492ca61a2 | 41 | } |
walterluu | 6:51f492ca61a2 | 42 | error = i2c->write(I2C_add,data,n+1); // send n bytes of data |
walterluu | 6:51f492ca61a2 | 43 | |
walterluu | 6:51f492ca61a2 | 44 | return error; |
walterluu | 6:51f492ca61a2 | 45 | } |
walterluu | 6:51f492ca61a2 | 46 | |
walterluu | 6:51f492ca61a2 | 47 | // ***************************************************************************** |
walterluu | 6:51f492ca61a2 | 48 | // AO19_read_register(char, char, char *) reads single byte from AO19 |
walterluu | 6:51f492ca61a2 | 49 | // char I2C address |
walterluu | 6:51f492ca61a2 | 50 | // char AO19 register address |
walterluu | 6:51f492ca61a2 | 51 | // char * data vector for read bytes to be stored in |
walterluu | 6:51f492ca61a2 | 52 | // returns 0 on success, 1 on fail |
walterluu | 6:51f492ca61a2 | 53 | // ***************************************************************************** |
walterluu | 6:51f492ca61a2 | 54 | |
walterluu | 6:51f492ca61a2 | 55 | int AO19_read_register(I2C *i2c, char I2C_add, char reg_add, char *bytes){ |
walterluu | 6:51f492ca61a2 | 56 | int error; |
walterluu | 6:51f492ca61a2 | 57 | error = i2c->write(I2C_add,®_add,1,1); |
walterluu | 6:51f492ca61a2 | 58 | if(error)return error; |
walterluu | 6:51f492ca61a2 | 59 | error = i2c->read(I2C_add,bytes,1); |
walterluu | 6:51f492ca61a2 | 60 | //if(DEBUG)db.printf("rr e[%d]\r\n",error); |
walterluu | 6:51f492ca61a2 | 61 | return error; |
walterluu | 6:51f492ca61a2 | 62 | } |
walterluu | 6:51f492ca61a2 | 63 | |
walterluu | 6:51f492ca61a2 | 64 | // ***************************************************************************** |
walterluu | 6:51f492ca61a2 | 65 | // AO19_read_register(char, char, char *, int) reads byte(s) from AO19 |
walterluu | 6:51f492ca61a2 | 66 | // char I2C address |
walterluu | 6:51f492ca61a2 | 67 | // char OT07 register address |
walterluu | 6:51f492ca61a2 | 68 | // char * data vector for read bytes to be stored in |
walterluu | 6:51f492ca61a2 | 69 | // int number of bytes to read |
walterluu | 6:51f492ca61a2 | 70 | // returns 0 on success, 1 on fail |
walterluu | 6:51f492ca61a2 | 71 | // ***************************************************************************** |
walterluu | 6:51f492ca61a2 | 72 | |
walterluu | 6:51f492ca61a2 | 73 | int AO19_read_register(I2C *i2c, char I2C_add, char reg_add, char *bytes, int n){ |
walterluu | 6:51f492ca61a2 | 74 | int error; |
walterluu | 6:51f492ca61a2 | 75 | error = i2c->write(I2C_add,®_add,1,1); |
walterluu | 6:51f492ca61a2 | 76 | if(error)return error; |
walterluu | 6:51f492ca61a2 | 77 | error = i2c->read(I2C_add,bytes,n); |
walterluu | 6:51f492ca61a2 | 78 | //if(DEBUG)db.printf("rr e[%d]\r\n",error); |
walterluu | 6:51f492ca61a2 | 79 | return error; |
walterluu | 6:51f492ca61a2 | 80 | } |