MAX11410 high speed 24-bit Delta-Sigma ADC

Dependents:   MAX11410BOB_24bit_ADC MAX11410BOB_Serial_Tester

Revision:
10:7adee48a7f82
Parent:
9:06ca88952f1c
Child:
11:abde565b8497
--- a/MAX11410.cpp	Fri Jan 31 00:15:25 2020 +0000
+++ b/MAX11410.cpp	Tue Feb 11 01:32:24 2020 +0000
@@ -690,20 +690,20 @@
 //     SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
 //
 // @return 1 on success; 0 on failure
-uint8_t MAX11410::RegWrite(MAX11410_CMD_enum_t regAddress, uint32_t regData)
+uint8_t MAX11410::RegWrite(MAX11410_CMD_enum_t commandByte, uint32_t regData)
 {
     
     //----------------------------------------
-    // switch based on register address szie RegSize(regAddress)
-    regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
-    switch(RegSize(regAddress))
+    // switch based on register address szie RegSize(commandByte)
+    commandByte = (MAX11410_CMD_enum_t)((commandByte &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
+    switch(RegSize(commandByte))
     {
         case 8:  // 8-bit register size
             {
                 // SPI 16-bit transfer
                 // SPI MOSI = 0aaa_aaaa_dddd_dddd
                 // SPI MISO = xxxx_xxxx_xxxx_xxxx
-                int16_t mosiData16 = ((int16_t)regAddress << 8) | ((int16_t)regData & 0xFF);
+                int16_t mosiData16 = ((int16_t)commandByte << 8) | ((int16_t)regData & 0xFF);
                 SPIoutputCS(0);
                 SPIwrite16bits(mosiData16);
                 SPIoutputCS(1);
@@ -717,7 +717,7 @@
                 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
                 // SPI MOSI = 0aaa_aaaa_dddd_dddd_dddd_dddd_0000_0000
                 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
-                int32_t mosiData32 = ((int32_t)regAddress << 24) | (((int32_t)regData & 0xFFFF) << 8);
+                int32_t mosiData32 = ((int32_t)commandByte << 24) | (((int32_t)regData & 0xFFFF) << 8);
                 SPIoutputCS(0);
                 SPIreadWrite32bits(mosiData32);
                 SPIoutputCS(1);
@@ -728,7 +728,7 @@
                 // SPI 32-bit transfer
                 // SPI MOSI = 0aaa_aaaa_dddd_dddd_dddd_dddd_dddd_dddd
                 // SPI MISO = xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
-                int32_t mosiData32 = ((int32_t)regAddress << 24) | ((int32_t)regData & 0x00FFFFFF);
+                int32_t mosiData32 = ((int32_t)commandByte << 24) | ((int32_t)regData & 0x00FFFFFF);
                 SPIoutputCS(0);
                 SPIreadWrite32bits(mosiData32);
                 SPIoutputCS(1);
@@ -774,20 +774,20 @@
 //
 //
 // @return 1 on success; 0 on failure
-uint8_t MAX11410::RegRead(MAX11410_CMD_enum_t regAddress, uint32_t* ptrRegData)
+uint8_t MAX11410::RegRead(MAX11410_CMD_enum_t commandByte, uint32_t* ptrRegData)
 {
     
     //----------------------------------------
     // switch based on register address szie RegSize(regAddress)
-    regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
-    switch(RegSize(regAddress))
+    commandByte = (MAX11410_CMD_enum_t)((commandByte &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
+    switch(RegSize(commandByte))
     {
         case 8:  // 8-bit register size
             {
                 // SPI 16-bit transfer
                 // SPI MOSI = 1aaa_aaaa_0000_0000
                 // SPI MISO = xxxx_xxxx_dddd_dddd
-                int16_t mosiData16 = ((CMD_1aaa_aaaa_REGISTER_READ | (int16_t)regAddress) << 8) | ((int16_t)0);
+                int16_t mosiData16 = ((CMD_1aaa_aaaa_REGISTER_READ | (int16_t)commandByte) << 8) | ((int16_t)0);
                 SPIoutputCS(0);
                 int16_t misoData16 = SPIreadWrite16bits(mosiData16);
                 SPIoutputCS(1);
@@ -802,7 +802,7 @@
                 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd
                 // SPI MOSI = 1aaa_aaaa_0000_0000_0000_0000_0000_0000
                 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd_xxxx_xxxx
-                int32_t mosiData32 = ((CMD_1aaa_aaaa_REGISTER_READ | (int32_t)regAddress) << 24);
+                int32_t mosiData32 = ((CMD_1aaa_aaaa_REGISTER_READ | (int32_t)commandByte) << 24);
                 SPIoutputCS(0);
                 int32_t misoData32 = SPIreadWrite32bits(mosiData32);
                 SPIoutputCS(1);
@@ -814,7 +814,7 @@
                 // SPI 32-bit transfer
                 // SPI MOSI = 1aaa_aaaa_0000_0000_0000_0000_0000_0000
                 // SPI MISO = xxxx_xxxx_dddd_dddd_dddd_dddd_dddd_dddd
-                int32_t mosiData32 = ((CMD_1aaa_aaaa_REGISTER_READ | (int32_t)regAddress) << 24);
+                int32_t mosiData32 = ((CMD_1aaa_aaaa_REGISTER_READ | (int32_t)commandByte) << 24);
                 SPIoutputCS(0);
                 int32_t misoData32 = SPIreadWrite32bits(mosiData32);
                 SPIoutputCS(1);
@@ -832,13 +832,13 @@
 // Return the size of a MAX11410 register
 //
 // @return 8 for 8-bit, 16 for 16-bit, 24 for 24-bit, else 0 for undefined register size
-uint8_t MAX11410::RegSize(MAX11410_CMD_enum_t regAddress)
+uint8_t MAX11410::RegSize(MAX11410_CMD_enum_t commandByte)
 {
     
     //----------------------------------------
     // switch based on register address value regAddress
-    regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
-    switch(regAddress)
+    commandByte = (MAX11410_CMD_enum_t)((commandByte &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
+    switch(commandByte)
     {
         default:
             return 0;  // undefined register size
@@ -961,16 +961,40 @@
 }
 
 //----------------------------------------
+// Return the address field of a MAX11410 register
+//
+// @return register address field as given in datasheet
+uint8_t MAX11410::RegAddrOfCommand(MAX11410_CMD_enum_t commandByte)
+{
+    
+    //----------------------------------------
+    // extract register address value from command byte
+    return (uint8_t)((commandByte &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
+}
+
+//----------------------------------------
+// Test whether a command byte is a register read command
+//
+// @return true if command byte is a register read command
+uint8_t MAX11410::IsRegReadCommand(MAX11410_CMD_enum_t commandByte)
+{
+    
+    //----------------------------------------
+    // Test whether a command byte is a register read command
+    return (commandByte & CMD_1aaa_aaaa_REGISTER_READ) ? 1 : 0;
+}
+
+//----------------------------------------
 // Return the name of a MAX11410 register
 //
 // @return null-terminated constant C string containing register name or empty string
-const char* MAX11410::RegName(MAX11410_CMD_enum_t regAddress)
+const char* MAX11410::RegName(MAX11410_CMD_enum_t commandByte)
 {
     
     //----------------------------------------
     // switch based on register address value regAddress
-    regAddress = (MAX11410_CMD_enum_t)((regAddress &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
-    switch(regAddress)
+    commandByte = (MAX11410_CMD_enum_t)((commandByte &~ CMD_1aaa_aaaa_REGISTER_READ) & 0xFF);
+    switch(commandByte)
     {
         default:
             return "";  // undefined register