|
@@ -54,13 +54,6 @@ D15.
|
|
|
#include "ti_msp_dl_config.h"
|
|
#include "ti_msp_dl_config.h"
|
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
-volatile bool gRxComplete;
|
|
|
|
|
-volatile bool gTxComplete;
|
|
|
|
|
-uint8_t gTxPacket[I2C_TX_MAX_PACKET_SIZE];
|
|
|
|
|
-uint8_t gRxPacket[I2C_RX_MAX_PACKET_SIZE];
|
|
|
|
|
-uint8_t gTxADClen, gTxADCcount;
|
|
|
|
|
-uint8_t gRxADClen, gRxADCcount;
|
|
|
|
|
-
|
|
|
|
|
/*
|
|
/*
|
|
|
* Creating Configuartion Register as mentioned in the datasheet: https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/22226a.pdf
|
|
* Creating Configuartion Register as mentioned in the datasheet: https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/22226a.pdf
|
|
|
* Under section 5.2 Configuration Register
|
|
* Under section 5.2 Configuration Register
|
|
@@ -116,31 +109,24 @@ static uint8_t construct_config_byte(ADC_Params *params) {
|
|
|
* I2C*/
|
|
* I2C*/
|
|
|
|
|
|
|
|
static bool adc_configure(uint8_t slot_id, ADC_Params *params) {
|
|
static bool adc_configure(uint8_t slot_id, ADC_Params *params) {
|
|
|
- /*printf("Configuring for channel: %d\n", params->channel);
|
|
|
|
|
- printf("Configuring for resolution: %d\n", params->resolution);
|
|
|
|
|
- printf("Configuring for gain: %d\n", params->gain);
|
|
|
|
|
- printf("Continuous or Single: %d\n", params->continuous);
|
|
|
|
|
- */
|
|
|
|
|
- uint8_t config_byte = construct_config_byte(params);
|
|
|
|
|
- printf("Config Byte: 0x%02X\n", config_byte);
|
|
|
|
|
|
|
+ controllerTxPackage.packet[0] = construct_config_byte(params);
|
|
|
|
|
+ printf("Config Byte: 0x%02X\n", controllerTxPackage.packet[0]);
|
|
|
// Wait for I2C Bus to be Free**
|
|
// Wait for I2C Bus to be Free**
|
|
|
while (DL_I2C_getControllerStatus(I2C_controller_INST) &
|
|
while (DL_I2C_getControllerStatus(I2C_controller_INST) &
|
|
|
DL_I2C_CONTROLLER_STATUS_BUSY_BUS)
|
|
DL_I2C_CONTROLLER_STATUS_BUSY_BUS)
|
|
|
;
|
|
;
|
|
|
- if(config_byte == 0xFF){
|
|
|
|
|
|
|
+ if(controllerTxPackage.packet[0] == 0xFF){
|
|
|
printf("[ADC] Unable to send config bytes\n");
|
|
printf("[ADC] Unable to send config bytes\n");
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
- // Prepare TX Buffer:
|
|
|
|
|
- gTxPacket[0] = config_byte;
|
|
|
|
|
- gTxADClen = 1;
|
|
|
|
|
- gTxADCcount = 0;
|
|
|
|
|
- gTxComplete = false;
|
|
|
|
|
- i2c_hal.write(ADC_TARGET_BASE_ADDRESS, gTxPacket, gTxADClen);
|
|
|
|
|
- while(!gTxComplete);
|
|
|
|
|
- printf("ADC Config:: gTxADClen: %d, gTxADCcount: %d\n", gTxADClen, gTxADCcount);
|
|
|
|
|
|
|
+ // Prepare TX Buffer
|
|
|
|
|
+ controllerTxPackage.len = 1;
|
|
|
|
|
+ controllerTxPackage.count = 0;
|
|
|
|
|
+ controllerTxPackage.complete = false;
|
|
|
|
|
+ i2c_hal.write(ADC_TARGET_BASE_ADDRESS);
|
|
|
|
|
+
|
|
|
|
|
+ while(!controllerTxPackage.complete);
|
|
|
return true;
|
|
return true;
|
|
|
- //return i2c_hal.write(ADC_TARGET_BASE_ADDRESS + slot_id, &config_byte, 1);
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -157,22 +143,18 @@ Conversion mode, writing this bit to “1” initiates a new conversion.
|
|
|
|
|
|
|
|
static bool adc_is_ready(uint8_t slot_id, ADC_Params *params) {
|
|
static bool adc_is_ready(uint8_t slot_id, ADC_Params *params) {
|
|
|
uint8_t adc_address = ADC_TARGET_BASE_ADDRESS + slot_id;
|
|
uint8_t adc_address = ADC_TARGET_BASE_ADDRESS + slot_id;
|
|
|
- gRxADClen = 3;
|
|
|
|
|
- gRxADCcount = 0;
|
|
|
|
|
- gRxComplete = false;
|
|
|
|
|
|
|
+ controllerRxPackage.len = 3;
|
|
|
|
|
+ controllerRxPackage.count = 0;
|
|
|
|
|
+ controllerRxPackage.complete = false;
|
|
|
|
|
|
|
|
- gRxPacket[0] = 0;
|
|
|
|
|
- gRxPacket[1] = 0;
|
|
|
|
|
- gRxPacket[2] = 0;
|
|
|
|
|
-
|
|
|
|
|
- i2c_hal.read(adc_address, gRxADClen);
|
|
|
|
|
|
|
+ i2c_hal.read(adc_address);
|
|
|
//i2c_hal.read(ADC_TARGET_BASE_ADDRESS + slot_id, 3);
|
|
//i2c_hal.read(ADC_TARGET_BASE_ADDRESS + slot_id, 3);
|
|
|
// Ready bit is bit 7
|
|
// Ready bit is bit 7
|
|
|
- while(!gRxComplete);
|
|
|
|
|
- uint8_t config_adc_byte = gRxPacket[2];
|
|
|
|
|
|
|
+ while(!controllerRxPackage.complete);
|
|
|
|
|
+ uint8_t config_adc_byte = controllerRxPackage.packet[2];
|
|
|
bool ready = (config_adc_byte & 0x80) == 1;
|
|
bool ready = (config_adc_byte & 0x80) == 1;
|
|
|
- printf("Bytes: 0x%02X 0x%02X 0x%02X (%d %d %d)\n", gRxPacket[0], gRxPacket[1], gRxPacket[2], gRxPacket[0], gRxPacket[1], gRxPacket[2]);
|
|
|
|
|
- printf("ADC Ready:: gRxADClen: %d, gRxADCcount: %d ready? %d\n", gRxADClen, gRxADCcount, ready);
|
|
|
|
|
|
|
+ printf("Bytes: 0x%02X 0x%02X 0x%02X (%d %d %d)\n", controllerRxPackage.packet[0], controllerRxPackage.packet[1], controllerRxPackage.packet[2], controllerRxPackage.packet[0], controllerRxPackage.packet[1], controllerRxPackage.packet[2]);
|
|
|
|
|
+ printf("ADC Ready:: gRxADClen: %d, gRxADCcount: %d ready? %d\n", controllerRxPackage.len, controllerRxPackage.count, ready);
|
|
|
return ready;
|
|
return ready;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -182,21 +164,17 @@ static int16_t read_adc_raw_data(uint8_t slot_id, ADC_Params *params) {
|
|
|
// Buffer for ADC data (MSB, LSB, Config Byte)
|
|
// Buffer for ADC data (MSB, LSB, Config Byte)
|
|
|
int16_t raw_adc = 0;
|
|
int16_t raw_adc = 0;
|
|
|
|
|
|
|
|
- gRxADClen = 3;
|
|
|
|
|
- gRxADCcount = 0;
|
|
|
|
|
- gRxComplete = false;
|
|
|
|
|
-
|
|
|
|
|
- gRxPacket[0] = 0;
|
|
|
|
|
- gRxPacket[1] = 0;
|
|
|
|
|
- gRxPacket[2] = 0;
|
|
|
|
|
|
|
+ controllerRxPackage.len = 3;
|
|
|
|
|
+ controllerRxPackage.count = 0;
|
|
|
|
|
+ controllerRxPackage.complete = false;
|
|
|
|
|
|
|
|
- i2c_hal.read(ADC_TARGET_BASE_ADDRESS + slot_id, gRxADClen);
|
|
|
|
|
- while(!gRxComplete);
|
|
|
|
|
- printf("ADC Read:: gRxADClen: %d, gRxADCcount: %d\n", gRxADClen, gRxADCcount);
|
|
|
|
|
- printf("Bytes: 0x%02X 0x%02X 0x%02X (%d %d %d)\n", gRxPacket[0], gRxPacket[1], gRxPacket[2], gRxPacket[0], gRxPacket[1], gRxPacket[2]);
|
|
|
|
|
- uint8_t msb = gRxPacket[0];
|
|
|
|
|
- uint8_t lsb = gRxPacket[1];
|
|
|
|
|
- uint8_t config_adc_byte = gRxPacket[2];
|
|
|
|
|
|
|
+ i2c_hal.read(ADC_TARGET_BASE_ADDRESS + slot_id);
|
|
|
|
|
+ while(!controllerRxPackage.complete);
|
|
|
|
|
+ printf("ADC Read:: gRxADClen: %d, gRxADCcount: %d\n", controllerRxPackage.len, controllerRxPackage.count);
|
|
|
|
|
+ printf("Bytes: 0x%02X 0x%02X 0x%02X (%d %d %d)\n", controllerRxPackage.packet[0], controllerRxPackage.packet[1], controllerRxPackage.packet[2], controllerRxPackage.packet[0], controllerRxPackage.packet[1], controllerRxPackage.packet[2]);
|
|
|
|
|
+ uint8_t msb = controllerRxPackage.packet[0];
|
|
|
|
|
+ uint8_t lsb = controllerRxPackage.packet[1];
|
|
|
|
|
+ uint8_t config_adc_byte = controllerRxPackage.packet[2];
|
|
|
|
|
|
|
|
if (params->resolution == 12) {
|
|
if (params->resolution == 12) {
|
|
|
raw_adc = ((msb & 0b00001111) << 8) | lsb;
|
|
raw_adc = ((msb & 0b00001111) << 8) | lsb;
|