. Reverting Mbed firmware to support customers using ADMW1001 device firmware v82.25. 2. New Mbed firmware will be available when ADMW1001 device firmware is released to the public. 3. SPI speed is reduced to 700KHz 4.The program compiled and tested with device FW v82.25

Committer:
Vkadaba
Date:
Fri Mar 06 17:03:18 2020 +0000
Revision:
51:e013f4d2fb9a
Parent:
50:d84305e5e1c0
1. Reverting Mbed firmware to support customers using ADMW1001 device firmware v82.25.; 2. New Mbed firmware will be available when ADMW1001 device firmware is released to the public. ; 3. SPI speed is reduced to 700KHz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ADIJake 0:85855ecd3257 1 /*
Vkadaba 15:b5d57daeb7c0 2 Copyright 2019 (c) Analog Devices, Inc.
ADIJake 0:85855ecd3257 3
ADIJake 0:85855ecd3257 4 All rights reserved.
ADIJake 0:85855ecd3257 5
ADIJake 0:85855ecd3257 6 Redistribution and use in source and binary forms, with or without
ADIJake 0:85855ecd3257 7 modification, are permitted provided that the following conditions are met:
ADIJake 0:85855ecd3257 8 - Redistributions of source code must retain the above copyright
ADIJake 0:85855ecd3257 9 notice, this list of conditions and the following disclaimer.
ADIJake 0:85855ecd3257 10 - Redistributions in binary form must reproduce the above copyright
ADIJake 0:85855ecd3257 11 notice, this list of conditions and the following disclaimer in
ADIJake 0:85855ecd3257 12 the documentation and/or other materials provided with the
ADIJake 0:85855ecd3257 13 distribution.
ADIJake 0:85855ecd3257 14 - Neither the name of Analog Devices, Inc. nor the names of its
ADIJake 0:85855ecd3257 15 contributors may be used to endorse or promote products derived
ADIJake 0:85855ecd3257 16 from this software without specific prior written permission.
ADIJake 0:85855ecd3257 17 - The use of this software may or may not infringe the patent rights
ADIJake 0:85855ecd3257 18 of one or more patent holders. This license does not release you
ADIJake 0:85855ecd3257 19 from the requirement that you obtain separate licenses from these
ADIJake 0:85855ecd3257 20 patent holders to use this software.
ADIJake 0:85855ecd3257 21 - Use of the software either in source or binary form, must be run
ADIJake 0:85855ecd3257 22 on or directly connected to an Analog Devices Inc. component.
ADIJake 0:85855ecd3257 23
ADIJake 0:85855ecd3257 24 THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
ADIJake 0:85855ecd3257 25 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
ADIJake 0:85855ecd3257 26 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
ADIJake 0:85855ecd3257 27 IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
ADIJake 0:85855ecd3257 28 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
ADIJake 0:85855ecd3257 29 LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
ADIJake 0:85855ecd3257 30 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
ADIJake 0:85855ecd3257 31 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
ADIJake 0:85855ecd3257 32 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
ADIJake 0:85855ecd3257 33 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ADIJake 0:85855ecd3257 34
ADIJake 0:85855ecd3257 35 *****************************************************************************/
ADIJake 0:85855ecd3257 36 /*!
ADIJake 0:85855ecd3257 37 ******************************************************************************
ADIJake 0:85855ecd3257 38 * @file:
ADIJake 0:85855ecd3257 39 *-----------------------------------------------------------------------------
ADIJake 0:85855ecd3257 40 *
ADIJake 0:85855ecd3257 41 */
ADIJake 0:85855ecd3257 42 #include "mbed.h"
Vkadaba 5:0728bde67bdb 43 #include "admw_api.h"
Vkadaba 5:0728bde67bdb 44 #include "admw1001/admw1001_api.h"
Vkadaba 5:0728bde67bdb 45 #include "admw_log.h"
ADIJake 0:85855ecd3257 46 #include "common/utils.h"
ADIJake 0:85855ecd3257 47 #include "common/platform.h"
Vkadaba 14:266ab283b086 48 #include "admw1001/ADMW1001_REGISTERS.h"
Vkadaba 5:0728bde67bdb 49
Vkadaba 34:b60ee1e0af2b 50 extern ADMW_CONFIG thermocouple_typeK_cjc0_config;
Vkadaba 34:b60ee1e0af2b 51 extern ADMW_CONFIG thermocouple_typeT_cjc0_config;
Vkadaba 34:b60ee1e0af2b 52 extern ADMW_CONFIG thermocouple_typeJ_cjc0_config;
Vkadaba 34:b60ee1e0af2b 53 extern ADMW_CONFIG rtd_3w_pt100_config;
Vkadaba 34:b60ee1e0af2b 54 extern ADMW_CONFIG rtd_4w_config;
Vkadaba 34:b60ee1e0af2b 55 extern ADMW_CONFIG bridge_4w_load_cell_config;
Vkadaba 5:0728bde67bdb 56 extern ADMW_CONFIG multichannel_continuous_config;
Vkadaba 5:0728bde67bdb 57 extern ADMW_CONFIG multichannel_singlecycle_config;
Vkadaba 34:b60ee1e0af2b 58 extern ADMW_CONFIG i2c0_sensirionSHT3X_config;
Vkadaba 51:e013f4d2fb9a 59 /* Change the following pointer to select any of the configurations above */
Vkadaba 48:5731f1aa2c5a 60 static ADMW_CONFIG *pSelectedConfig = &thermocouple_typeK_cjc0_config;
ADIJake 0:85855ecd3257 61
Vkadaba 5:0728bde67bdb 62 static ADMW_CONNECTION connectionInfo = PLATFORM_CONNECTION_INFO;
ADIJake 0:85855ecd3257 63
Vkadaba 14:266ab283b086 64
ADIJake 0:85855ecd3257 65 int main()
ADIJake 0:85855ecd3257 66 {
Vkadaba 5:0728bde67bdb 67 ADMW_RESULT res;
Vkadaba 5:0728bde67bdb 68 ADMW_STATUS status;
Vkadaba 5:0728bde67bdb 69 ADMW_DEVICE_HANDLE hDevice;
Vkadaba 5:0728bde67bdb 70 ADMW_MEASUREMENT_MODE eMeasurementMode = ADMW_MEASUREMENT_MODE_NORMAL;
ADIJake 0:85855ecd3257 71 bool bDeviceReady;
Vkadaba 23:bb685f35b08b 72
ADIJake 0:85855ecd3257 73 /*
Vkadaba 19:09d58952b65d 74 * Open an ADMW1001 device instance.
ADIJake 0:85855ecd3257 75 */
Vkadaba 5:0728bde67bdb 76 res = admw_Open(0, &connectionInfo, &hDevice);
Vkadaba 23:bb685f35b08b 77 if (res != ADMW_SUCCESS) {
Vkadaba 5:0728bde67bdb 78 ADMW_LOG_ERROR("Failed to open device instance");
ADIJake 0:85855ecd3257 79 return res;
ADIJake 0:85855ecd3257 80 }
Vkadaba 23:bb685f35b08b 81
ADIJake 0:85855ecd3257 82 /*
Vkadaba 19:09d58952b65d 83 * Reset the given ADMW1001 device....
ADIJake 0:85855ecd3257 84 */
Vkadaba 19:09d58952b65d 85 ADMW_LOG_INFO("Resetting ADMW1001 device, please wait...");
Vkadaba 5:0728bde67bdb 86 res = admw_Reset(hDevice);
Vkadaba 23:bb685f35b08b 87 if (res != ADMW_SUCCESS) {
Vkadaba 5:0728bde67bdb 88 ADMW_LOG_ERROR("Failed to reset device");
ADIJake 0:85855ecd3257 89 return res;
ADIJake 0:85855ecd3257 90 }
ADIJake 0:85855ecd3257 91 /*
ADIJake 0:85855ecd3257 92 * ...and wait until the device is ready.
ADIJake 0:85855ecd3257 93 */
ADIJake 0:85855ecd3257 94 do {
ADIJake 0:85855ecd3257 95 wait_ms(100);
Vkadaba 5:0728bde67bdb 96 res = admw_GetDeviceReadyState(hDevice, &bDeviceReady);
Vkadaba 23:bb685f35b08b 97 if (res != ADMW_SUCCESS) {
Vkadaba 5:0728bde67bdb 98 ADMW_LOG_ERROR("Failed to get device ready-state");
ADIJake 0:85855ecd3257 99 return res;
ADIJake 0:85855ecd3257 100 }
ADIJake 0:85855ecd3257 101 } while (! bDeviceReady);
Vkadaba 19:09d58952b65d 102 ADMW_LOG_INFO("ADMW1001 device ready");
ADIJake 0:85855ecd3257 103 /*
ADIJake 0:85855ecd3257 104 * Write configuration settings to the device registers.
Vkadaba 5:0728bde67bdb 105 * Settings are not applied until admw_ApplyConfigUpdates() is called.
ADIJake 0:85855ecd3257 106 */
Vkadaba 5:0728bde67bdb 107 ADMW_LOG_INFO("Setting device configuration");
Vkadaba 5:0728bde67bdb 108 res = admw_SetConfig(hDevice, pSelectedConfig);
Vkadaba 23:bb685f35b08b 109 if (res != ADMW_SUCCESS) {
Vkadaba 5:0728bde67bdb 110 ADMW_LOG_ERROR("Failed to set device configuration");
ADIJake 0:85855ecd3257 111 return res;
ADIJake 0:85855ecd3257 112 }
Vkadaba 5:0728bde67bdb 113 res = admw_ApplyConfigUpdates(hDevice);
Vkadaba 23:bb685f35b08b 114 if (res != ADMW_SUCCESS) {
Vkadaba 5:0728bde67bdb 115 ADMW_LOG_ERROR("Failed to apply device configuration");
ADIJake 0:85855ecd3257 116 return res;
ADIJake 0:85855ecd3257 117 }
ADIJake 0:85855ecd3257 118 /*
ADIJake 0:85855ecd3257 119 * Check device status after updating the configuration
ADIJake 0:85855ecd3257 120 */
Vkadaba 5:0728bde67bdb 121 res = admw_GetStatus(hDevice, &status);
Vkadaba 51:e013f4d2fb9a 122 deviceInformation(hDevice);
Vkadaba 23:bb685f35b08b 123 if (res != ADMW_SUCCESS) {
Vkadaba 5:0728bde67bdb 124 ADMW_LOG_ERROR("Failed to retrieve device status");
ADIJake 0:85855ecd3257 125 return res;
ADIJake 0:85855ecd3257 126 }
ADIJake 0:85855ecd3257 127 if (status.deviceStatus &
Vkadaba 23:bb685f35b08b 128 (ADMW_DEVICE_STATUS_ERROR | ADMW_DEVICE_STATUS_ALERT)) {
ADIJake 0:85855ecd3257 129 utils_printStatus(&status);
ADIJake 0:85855ecd3257 130 }
ADIJake 0:85855ecd3257 131
ADIJake 0:85855ecd3257 132 /*
ADIJake 0:85855ecd3257 133 * Kick off the measurement cycle here
ADIJake 0:85855ecd3257 134 */
Vkadaba 5:0728bde67bdb 135 ADMW_LOG_INFO("Configuration completed, starting measurement cycles");
ADIJake 0:85855ecd3257 136 utils_runMeasurement(hDevice, eMeasurementMode);
ADIJake 0:85855ecd3257 137
ADIJake 0:85855ecd3257 138 /*
ADIJake 0:85855ecd3257 139 * Clean up and exit
ADIJake 0:85855ecd3257 140 */
Vkadaba 5:0728bde67bdb 141 res = admw_Close(hDevice);
Vkadaba 23:bb685f35b08b 142 if (res != ADMW_SUCCESS) {
Vkadaba 5:0728bde67bdb 143 ADMW_LOG_ERROR("Failed to close device instance");
ADIJake 0:85855ecd3257 144 return res;
ADIJake 0:85855ecd3257 145 }
ADIJake 0:85855ecd3257 146
ADIJake 0:85855ecd3257 147 return 0;
ADIJake 0:85855ecd3257 148 }
ADIJake 0:85855ecd3257 149