From fcf403b2ebb52eb6abb6680e710f159fa696603b Mon Sep 17 00:00:00 2001 From: Alberto Nidasio <alberto.nidasio@skywarder.eu> Date: Sat, 1 Jul 2023 17:14:15 +0200 Subject: [PATCH] [ADS131] Fixed channel numbers and better defined constants --- src/shared/sensors/ADS131M04/ADS131M04.cpp | 18 +++++---------- src/shared/sensors/ADS131M04/ADS131M04.h | 15 +++++++------ src/shared/sensors/ADS131M08/ADS131M08.cpp | 15 ++----------- src/shared/sensors/ADS131M08/ADS131M08.h | 26 ++++++++++++---------- 4 files changed, 29 insertions(+), 45 deletions(-) diff --git a/src/shared/sensors/ADS131M04/ADS131M04.cpp b/src/shared/sensors/ADS131M04/ADS131M04.cpp index 646466586..ab9cebda4 100644 --- a/src/shared/sensors/ADS131M04/ADS131M04.cpp +++ b/src/shared/sensors/ADS131M04/ADS131M04.cpp @@ -38,14 +38,7 @@ ADS131M04::ADS131M04(SPIBusInterface &bus, miosix::GpioPin cs, { } -ADS131M04::ADS131M04(SPISlave spiSlave) : spiSlave(spiSlave) -{ - // Reset the configuration - channelsPGAGain[0] = PGA::PGA_1; - channelsPGAGain[1] = PGA::PGA_1; - channelsPGAGain[2] = PGA::PGA_1; - channelsPGAGain[3] = PGA::PGA_1; -} +ADS131M04::ADS131M04(SPISlave spiSlave) : spiSlave(spiSlave) {} SPIBusConfig ADS131M04::getDefaultSPIConfig() { @@ -89,7 +82,7 @@ bool ADS131M04::reset() uint16_t response = data[0] << 8 | data[1]; // Check for the correct response - if (response != 0xFF24) + if (response != RESET_CMD_RESPONSE) { lastError = SensorErrors::COMMAND_FAILED; LOG_ERR(logger, "Reset command failed, response was {:X}", response); @@ -148,10 +141,9 @@ void ADS131M04::setChannelPGA(Channel channel, PGA gain) { channelsPGAGain[static_cast<int>(channel)] = gain; - changeRegister(Registers::REG_GAIN, - static_cast<uint16_t>(gain) - << (static_cast<int>(channel) * 4), - REG_GAIN_PGAGAIN0 << (static_cast<int>(channel) * 4)); + int shift = static_cast<int>(channel) * 4; + changeRegister(Registers::REG_GAIN, static_cast<uint16_t>(gain) << shift, + REG_GAIN_PGAGAIN0 << shift); } void ADS131M04::setChannelOffset(Channel channel, uint32_t offset) diff --git a/src/shared/sensors/ADS131M04/ADS131M04.h b/src/shared/sensors/ADS131M04/ADS131M04.h index c2857a4f8..4f4615ac1 100644 --- a/src/shared/sensors/ADS131M04/ADS131M04.h +++ b/src/shared/sensors/ADS131M04/ADS131M04.h @@ -248,17 +248,18 @@ private: WREG = 0x6000 }; + SPISlave spiSlave; + + PGA channelsPGAGain[4] = {PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, PGA::PGA_1}; + + PrintLogger logger = Logging::getLogger("ads131m04"); + + static constexpr uint16_t RESET_CMD_RESPONSE = 0xFF24; + ///< Digit value in mV for each pga configurations const float PGA_LSB_SIZE[8] = {143.0511e-9, 71.5256e-9, 35.7628e-9, 17.8814e-9, 8.9407e-9, 4.4703e-9, 2.2352e-9, 1.1176e-9}; - - PGA channelsPGAGain[4] = {PGA::PGA_1}; - -protected: - SPISlave spiSlave; - - PrintLogger logger = Logging::getLogger("ads131m04"); }; namespace ADS131M04RegisterBitMasks diff --git a/src/shared/sensors/ADS131M08/ADS131M08.cpp b/src/shared/sensors/ADS131M08/ADS131M08.cpp index 9db582e2c..4b926068b 100644 --- a/src/shared/sensors/ADS131M08/ADS131M08.cpp +++ b/src/shared/sensors/ADS131M08/ADS131M08.cpp @@ -38,18 +38,7 @@ ADS131M08::ADS131M08(SPIBusInterface &bus, miosix::GpioPin cs, { } -ADS131M08::ADS131M08(SPISlave spiSlave) : spiSlave(spiSlave) -{ - // Reset the configuration - channelsPGAGain[0] = PGA::PGA_1; - channelsPGAGain[1] = PGA::PGA_1; - channelsPGAGain[2] = PGA::PGA_1; - channelsPGAGain[3] = PGA::PGA_1; - channelsPGAGain[4] = PGA::PGA_1; - channelsPGAGain[5] = PGA::PGA_1; - channelsPGAGain[6] = PGA::PGA_1; - channelsPGAGain[7] = PGA::PGA_1; -} +ADS131M08::ADS131M08(SPISlave spiSlave) : spiSlave(spiSlave) {} SPIBusConfig ADS131M08::getDefaultSPIConfig() { @@ -93,7 +82,7 @@ bool ADS131M08::reset() uint16_t response = data[0] << 8 | data[1]; // Check for the correct response - if (response != 0xFF28) + if (response != RESET_CMD_RESPONSE) { lastError = SensorErrors::COMMAND_FAILED; LOG_ERR(logger, "Reset command failed, response was {:X}", response); diff --git a/src/shared/sensors/ADS131M08/ADS131M08.h b/src/shared/sensors/ADS131M08/ADS131M08.h index 6dca0801f..374288a80 100644 --- a/src/shared/sensors/ADS131M08/ADS131M08.h +++ b/src/shared/sensors/ADS131M08/ADS131M08.h @@ -34,7 +34,7 @@ namespace Boardcore /** * @brief Driver for ADS131M08 8 simultaneous channels adc. * - * The ADS131M08 is a four-channel, simultaneously-sampling, 24-bit, + * The ADS131M08 is an eight-channel, simultaneously-sampling, 24-bit, * delta-sigma (ΔΣ), analog-to-digital converter (ADC). The individual ADC * channels can be independently configured depending on the sensor input. A * low-noise, programmable gain amplifier (PGA) provides gains ranging from 1 @@ -114,10 +114,10 @@ public: CHANNEL_1 = 1, CHANNEL_2 = 2, CHANNEL_3 = 3, - CHANNEL_4 = 3, - CHANNEL_5 = 3, - CHANNEL_6 = 3, - CHANNEL_7 = 3 + CHANNEL_4 = 4, + CHANNEL_5 = 5, + CHANNEL_6 = 6, + CHANNEL_7 = 7 }; enum class Input : uint8_t @@ -273,17 +273,19 @@ private: WREG = 0x6000 }; + SPISlave spiSlave; + + PGA channelsPGAGain[8] = {PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, + PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, PGA::PGA_1}; + + PrintLogger logger = Logging::getLogger("ads131m08"); + + static constexpr uint16_t RESET_CMD_RESPONSE = 0xFF28; + ///< Digit value in mV for each pga configurations const float PGA_LSB_SIZE[8] = {143.0511e-9, 71.5256e-9, 35.7628e-9, 17.8814e-9, 8.9407e-9, 4.4703e-9, 2.2352e-9, 1.1176e-9}; - - PGA channelsPGAGain[8] = {PGA::PGA_1}; - -protected: - SPISlave spiSlave; - - PrintLogger logger = Logging::getLogger("ads131m08"); }; namespace ADS131M08RegisterBitMasks -- GitLab