MAX20361 Demo with LoRa Module on LP1 mode

Dependencies:   SX1276GenericLib USBDevice

Fork of NonPingPong_PICO_LoRa_LP1 by Walter Luu

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?

UserRevisionLine numberNew 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,&reg_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,&reg_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 }