branch to test I2C

Dependencies:   ADBMS2950

Committer:
sgarg2
Date:
Mon May 24 02:38:00 2021 +0000
Revision:
9:0a4828d32e76
Parent:
6:5d29fdcbae72
Add I2C test for EEPROM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dpandit1988 1:94a3e8fe5e25 1 /**
dpandit1988 1:94a3e8fe5e25 2 ********************************************************************************
dpandit1988 1:94a3e8fe5e25 3 *
dpandit1988 1:94a3e8fe5e25 4 * @file: print_result.c
dpandit1988 1:94a3e8fe5e25 5 *
dpandit1988 1:94a3e8fe5e25 6 * @brief: This file contains the print result function implementation.
dpandit1988 1:94a3e8fe5e25 7 *
dpandit1988 1:94a3e8fe5e25 8 * @details:
dpandit1988 1:94a3e8fe5e25 9 *
dpandit1988 1:94a3e8fe5e25 10 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 11 Copyright(c) 2020 Analog Devices, Inc. All Rights Reserved. This software is
dpandit1988 1:94a3e8fe5e25 12 proprietary & confidential to Analog Devices, Inc. and its licensors. By using
dpandit1988 1:94a3e8fe5e25 13 this software you agree to the terms of the associated Analog Devices License
dpandit1988 1:94a3e8fe5e25 14 Agreement.
dpandit1988 1:94a3e8fe5e25 15 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 16 */
dpandit1988 1:94a3e8fe5e25 17 /*! \addtogroup Main
dpandit1988 1:94a3e8fe5e25 18 * @{
dpandit1988 1:94a3e8fe5e25 19 */
dpandit1988 1:94a3e8fe5e25 20
dpandit1988 1:94a3e8fe5e25 21 /*! \addtogroup Print_Result
dpandit1988 1:94a3e8fe5e25 22 * @{
dpandit1988 1:94a3e8fe5e25 23 */
dpandit1988 1:94a3e8fe5e25 24
dpandit1988 1:94a3e8fe5e25 25 #include "application.h"
dpandit1988 1:94a3e8fe5e25 26 #ifdef MBED
dpandit1988 1:94a3e8fe5e25 27 extern Serial pc;
dpandit1988 1:94a3e8fe5e25 28 /**
dpandit1988 1:94a3e8fe5e25 29 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 30 * Function: printWriteConfig
dpandit1988 1:94a3e8fe5e25 31 * @brief Print write config A/B result.
dpandit1988 1:94a3e8fe5e25 32 *
dpandit1988 1:94a3e8fe5e25 33 * @details This function Print write config result into terminal.
dpandit1988 1:94a3e8fe5e25 34 *
dpandit1988 1:94a3e8fe5e25 35 * Parameters:
dpandit1988 1:94a3e8fe5e25 36 * @param [in] tIC Total IC
dpandit1988 1:94a3e8fe5e25 37 *
dpandit1988 1:94a3e8fe5e25 38 * @param [in] *IC cell_asic stucture pointer
dpandit1988 1:94a3e8fe5e25 39 *
dpandit1988 1:94a3e8fe5e25 40 * @param [in] type Enum type of resistor
dpandit1988 1:94a3e8fe5e25 41 *
dpandit1988 1:94a3e8fe5e25 42 * @param [in] grp Enum type of resistor group
dpandit1988 1:94a3e8fe5e25 43 *
dpandit1988 1:94a3e8fe5e25 44 * @return None
dpandit1988 1:94a3e8fe5e25 45 *
dpandit1988 1:94a3e8fe5e25 46 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 47 */
dpandit1988 1:94a3e8fe5e25 48 void printWriteConfig(uint8_t tIC, cell_asic *IC, TYPE type, GRP grp)
dpandit1988 1:94a3e8fe5e25 49 {
dpandit1988 1:94a3e8fe5e25 50 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 51 {
dpandit1988 1:94a3e8fe5e25 52 pc.printf("IC%d:\n",(ic+1));
dpandit1988 1:94a3e8fe5e25 53 if(type == Config)
dpandit1988 1:94a3e8fe5e25 54 {
dpandit1988 1:94a3e8fe5e25 55 if(grp == A)
dpandit1988 1:94a3e8fe5e25 56 {
dpandit1988 1:94a3e8fe5e25 57 pc.printf("Write Config A:\n");
dpandit1988 1:94a3e8fe5e25 58 pc.printf("0x%X, ", IC[ic].configa.tx_data[0]);
dpandit1988 1:94a3e8fe5e25 59 pc.printf("0x%X, ", IC[ic].configa.tx_data[1]);
dpandit1988 1:94a3e8fe5e25 60 pc.printf("0x%X, ", IC[ic].configa.tx_data[2]);
dpandit1988 1:94a3e8fe5e25 61 pc.printf("0x%X, ", IC[ic].configa.tx_data[3]);
dpandit1988 1:94a3e8fe5e25 62 pc.printf("0x%X, ", IC[ic].configa.tx_data[4]);
dpandit1988 1:94a3e8fe5e25 63 pc.printf("0x%X\n\n", IC[ic].configa.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 64 }
dpandit1988 1:94a3e8fe5e25 65 else if(grp == B)
dpandit1988 1:94a3e8fe5e25 66 {
dpandit1988 1:94a3e8fe5e25 67 pc.printf("Write Config B:\n");
dpandit1988 1:94a3e8fe5e25 68 pc.printf("0x%X, ", IC[ic].configb.tx_data[0]);
dpandit1988 1:94a3e8fe5e25 69 pc.printf("0x%X, ", IC[ic].configb.tx_data[1]);
dpandit1988 1:94a3e8fe5e25 70 pc.printf("0x%X, ", IC[ic].configb.tx_data[2]);
dpandit1988 1:94a3e8fe5e25 71 pc.printf("0x%X, ", IC[ic].configb.tx_data[3]);
dpandit1988 1:94a3e8fe5e25 72 pc.printf("0x%X, ", IC[ic].configb.tx_data[4]);
dpandit1988 1:94a3e8fe5e25 73 pc.printf("0x%X\n\n", IC[ic].configb.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 74 }
dpandit1988 1:94a3e8fe5e25 75 else if(grp == ALL_GRP)
dpandit1988 1:94a3e8fe5e25 76 {
dpandit1988 1:94a3e8fe5e25 77 pc.printf("Write Config A:\n");
dpandit1988 1:94a3e8fe5e25 78 pc.printf("0x%X, ", IC[ic].configa.tx_data[0]);
dpandit1988 1:94a3e8fe5e25 79 pc.printf("0x%X, ", IC[ic].configa.tx_data[1]);
dpandit1988 1:94a3e8fe5e25 80 pc.printf("0x%X, ", IC[ic].configa.tx_data[2]);
dpandit1988 1:94a3e8fe5e25 81 pc.printf("0x%X, ", IC[ic].configa.tx_data[3]);
dpandit1988 1:94a3e8fe5e25 82 pc.printf("0x%X, ", IC[ic].configa.tx_data[4]);
dpandit1988 1:94a3e8fe5e25 83 pc.printf("0x%X\n\n", IC[ic].configa.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 84
dpandit1988 1:94a3e8fe5e25 85 pc.printf("Write Config B:\n");
dpandit1988 1:94a3e8fe5e25 86 pc.printf("0x%X, ", IC[ic].configb.tx_data[0]);
dpandit1988 1:94a3e8fe5e25 87 pc.printf("0x%X, ", IC[ic].configb.tx_data[1]);
dpandit1988 1:94a3e8fe5e25 88 pc.printf("0x%X, ", IC[ic].configb.tx_data[2]);
dpandit1988 1:94a3e8fe5e25 89 pc.printf("0x%X, ", IC[ic].configb.tx_data[3]);
dpandit1988 1:94a3e8fe5e25 90 pc.printf("0x%X, ", IC[ic].configb.tx_data[4]);
dpandit1988 1:94a3e8fe5e25 91 pc.printf("0x%X\n\n", IC[ic].configb.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 92 }
dpandit1988 1:94a3e8fe5e25 93 else{ pc.printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 94 }
dpandit1988 1:94a3e8fe5e25 95 }
dpandit1988 1:94a3e8fe5e25 96 }
dpandit1988 1:94a3e8fe5e25 97
dpandit1988 1:94a3e8fe5e25 98 /**
dpandit1988 1:94a3e8fe5e25 99 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 100 * Function: printReadConfig
dpandit1988 1:94a3e8fe5e25 101 * @brief Print Read config A/B result.
dpandit1988 1:94a3e8fe5e25 102 *
dpandit1988 1:94a3e8fe5e25 103 * @details This function Print read config result into IAR I/O terminal.
dpandit1988 1:94a3e8fe5e25 104 *
dpandit1988 1:94a3e8fe5e25 105 * Parameters:
dpandit1988 1:94a3e8fe5e25 106 * @param [in] tIC Total IC
dpandit1988 1:94a3e8fe5e25 107 *
dpandit1988 1:94a3e8fe5e25 108 * @param [in] *ic cell_asic stucture pointer
dpandit1988 1:94a3e8fe5e25 109 *
dpandit1988 1:94a3e8fe5e25 110 * @param [in] TYPE Enum type of resistor
dpandit1988 1:94a3e8fe5e25 111 *
dpandit1988 1:94a3e8fe5e25 112 * @param [in] GRP Enum type of resistor group
dpandit1988 1:94a3e8fe5e25 113 *
dpandit1988 1:94a3e8fe5e25 114 * @return None
dpandit1988 1:94a3e8fe5e25 115 *
dpandit1988 1:94a3e8fe5e25 116 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 117 */
dpandit1988 1:94a3e8fe5e25 118 void printReadConfig(uint8_t tIC, cell_asic *IC, TYPE type, GRP grp)
dpandit1988 1:94a3e8fe5e25 119 {
dpandit1988 1:94a3e8fe5e25 120 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 121 {
dpandit1988 1:94a3e8fe5e25 122 pc.printf("IC%d:\n",(ic+1));
dpandit1988 1:94a3e8fe5e25 123 if(type == Config)
dpandit1988 1:94a3e8fe5e25 124 {
dpandit1988 1:94a3e8fe5e25 125 if(grp == A)
dpandit1988 1:94a3e8fe5e25 126 {
dpandit1988 1:94a3e8fe5e25 127 pc.printf("Read Config A:\n");
dpandit1988 1:94a3e8fe5e25 128 pc.printf("0x%X, ", IC[ic].configa.rx_data[0]);
dpandit1988 1:94a3e8fe5e25 129 pc.printf("0x%X, ", IC[ic].configa.rx_data[1]);
dpandit1988 1:94a3e8fe5e25 130 pc.printf("0x%X, ", IC[ic].configa.rx_data[2]);
dpandit1988 1:94a3e8fe5e25 131 pc.printf("0x%X, ", IC[ic].configa.rx_data[3]);
dpandit1988 1:94a3e8fe5e25 132 pc.printf("0x%X, ", IC[ic].configa.rx_data[4]);
dpandit1988 1:94a3e8fe5e25 133 pc.printf("0x%X, ", IC[ic].configa.rx_data[5]);
dpandit1988 1:94a3e8fe5e25 134 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 1:94a3e8fe5e25 135 pc.printf("PECError:%d\n\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 1:94a3e8fe5e25 136 }
dpandit1988 1:94a3e8fe5e25 137 else if(grp == B)
dpandit1988 1:94a3e8fe5e25 138 {
dpandit1988 1:94a3e8fe5e25 139 pc.printf("Read Config B:\n");
dpandit1988 1:94a3e8fe5e25 140 pc.printf("0x%X, ", IC[ic].configb.rx_data[0]);
dpandit1988 1:94a3e8fe5e25 141 pc.printf("0x%X, ", IC[ic].configb.rx_data[1]);
dpandit1988 1:94a3e8fe5e25 142 pc.printf("0x%X, ", IC[ic].configb.rx_data[2]);
dpandit1988 1:94a3e8fe5e25 143 pc.printf("0x%X, ", IC[ic].configb.rx_data[3]);
dpandit1988 1:94a3e8fe5e25 144 pc.printf("0x%X, ", IC[ic].configb.rx_data[4]);
dpandit1988 1:94a3e8fe5e25 145 pc.printf("0x%X, ", IC[ic].configb.rx_data[5]);
dpandit1988 1:94a3e8fe5e25 146 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 1:94a3e8fe5e25 147 pc.printf("PECError:%d\n\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 1:94a3e8fe5e25 148 }
dpandit1988 1:94a3e8fe5e25 149 else if(grp == ALL_GRP)
dpandit1988 1:94a3e8fe5e25 150 {
dpandit1988 1:94a3e8fe5e25 151 pc.printf("Read Config A:\n");
dpandit1988 1:94a3e8fe5e25 152 pc.printf("0x%X, ", IC[ic].configa.rx_data[0]);
dpandit1988 1:94a3e8fe5e25 153 pc.printf("0x%X, ", IC[ic].configa.rx_data[1]);
dpandit1988 1:94a3e8fe5e25 154 pc.printf("0x%X, ", IC[ic].configa.rx_data[2]);
dpandit1988 1:94a3e8fe5e25 155 pc.printf("0x%X, ", IC[ic].configa.rx_data[3]);
dpandit1988 1:94a3e8fe5e25 156 pc.printf("0x%X, ", IC[ic].configa.rx_data[4]);
dpandit1988 1:94a3e8fe5e25 157 pc.printf("0x%X, ", IC[ic].configa.rx_data[5]);
dpandit1988 1:94a3e8fe5e25 158 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 1:94a3e8fe5e25 159 pc.printf("PECError:%d\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 1:94a3e8fe5e25 160
dpandit1988 1:94a3e8fe5e25 161 pc.printf("Read Config B:\n");
dpandit1988 1:94a3e8fe5e25 162 pc.printf("0x%X, ", IC[ic].configb.rx_data[0]);
dpandit1988 1:94a3e8fe5e25 163 pc.printf("0x%X, ", IC[ic].configb.rx_data[1]);
dpandit1988 1:94a3e8fe5e25 164 pc.printf("0x%X, ", IC[ic].configb.rx_data[2]);
dpandit1988 1:94a3e8fe5e25 165 pc.printf("0x%X, ", IC[ic].configb.rx_data[3]);
dpandit1988 1:94a3e8fe5e25 166 pc.printf("0x%X, ", IC[ic].configb.rx_data[4]);
dpandit1988 1:94a3e8fe5e25 167 pc.printf("0x%X, ", IC[ic].configb.rx_data[5]);
dpandit1988 1:94a3e8fe5e25 168 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 1:94a3e8fe5e25 169 pc.printf("PECError:%d\n\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 1:94a3e8fe5e25 170 }
dpandit1988 1:94a3e8fe5e25 171 else{ pc.printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 172 }
dpandit1988 1:94a3e8fe5e25 173 }
dpandit1988 1:94a3e8fe5e25 174 }
dpandit1988 1:94a3e8fe5e25 175
dpandit1988 1:94a3e8fe5e25 176 /**
dpandit1988 1:94a3e8fe5e25 177 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 178 * Function: PrintDeviceSID
dpandit1988 1:94a3e8fe5e25 179 * @brief Print Device SID.
dpandit1988 1:94a3e8fe5e25 180 *
dpandit1988 1:94a3e8fe5e25 181 * @details This function Print Device SID into IAR I/O terminal.
dpandit1988 1:94a3e8fe5e25 182 *
dpandit1988 1:94a3e8fe5e25 183 * Parameters:
dpandit1988 1:94a3e8fe5e25 184 * @param [in] tIC Total IC
dpandit1988 1:94a3e8fe5e25 185 *
dpandit1988 1:94a3e8fe5e25 186 * @param [in] *IC cell_asic stucture pointer
dpandit1988 1:94a3e8fe5e25 187 *
dpandit1988 1:94a3e8fe5e25 188 * @param [in] type Enum type of resistor
dpandit1988 1:94a3e8fe5e25 189 *
dpandit1988 1:94a3e8fe5e25 190 * @return None
dpandit1988 1:94a3e8fe5e25 191 *
dpandit1988 1:94a3e8fe5e25 192 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 193 */
dpandit1988 1:94a3e8fe5e25 194 void printDeviceSID(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 1:94a3e8fe5e25 195 {
dpandit1988 1:94a3e8fe5e25 196 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 197 {
dpandit1988 1:94a3e8fe5e25 198 pc.printf("IC%d:\n",(ic+1));
dpandit1988 1:94a3e8fe5e25 199 if(type == SID)
dpandit1988 1:94a3e8fe5e25 200 {
dpandit1988 1:94a3e8fe5e25 201 pc.printf("Read Device SID:\n");
dpandit1988 1:94a3e8fe5e25 202 pc.printf("0x%X, ", IC[ic].sid.sid[0]);
dpandit1988 1:94a3e8fe5e25 203 pc.printf("0x%X, ", IC[ic].sid.sid[1]);
dpandit1988 1:94a3e8fe5e25 204 pc.printf("0x%X, ", IC[ic].sid.sid[2]);
dpandit1988 1:94a3e8fe5e25 205 pc.printf("0x%X, ", IC[ic].sid.sid[3]);
dpandit1988 1:94a3e8fe5e25 206 pc.printf("0x%X, ", IC[ic].sid.sid[4]);
dpandit1988 1:94a3e8fe5e25 207 pc.printf("0x%X, ", IC[ic].sid.sid[5]);
dpandit1988 1:94a3e8fe5e25 208 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 1:94a3e8fe5e25 209 pc.printf("PECError:%d\n\n",IC[ic].cccrc.sid_pec);
dpandit1988 1:94a3e8fe5e25 210 }
dpandit1988 1:94a3e8fe5e25 211 else{ pc.printf("Wrong Register Type Select\n"); }
dpandit1988 1:94a3e8fe5e25 212 }
dpandit1988 1:94a3e8fe5e25 213 }
dpandit1988 1:94a3e8fe5e25 214
dpandit1988 1:94a3e8fe5e25 215 /**
dpandit1988 1:94a3e8fe5e25 216 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 217 * Function: printWriteCommData
dpandit1988 1:94a3e8fe5e25 218 * @brief Print Write Comm data.
dpandit1988 1:94a3e8fe5e25 219 *
dpandit1988 1:94a3e8fe5e25 220 * @details This function Print write comm data.
dpandit1988 1:94a3e8fe5e25 221 *
dpandit1988 1:94a3e8fe5e25 222 * Parameters:
dpandit1988 1:94a3e8fe5e25 223 * @param [in] tIC Total IC
dpandit1988 1:94a3e8fe5e25 224 *
dpandit1988 1:94a3e8fe5e25 225 * @param [in] *IC cell_asic stucture pointer
dpandit1988 1:94a3e8fe5e25 226 *
dpandit1988 1:94a3e8fe5e25 227 * @param [in] type Enum type of resistor
dpandit1988 1:94a3e8fe5e25 228 *
dpandit1988 1:94a3e8fe5e25 229 * @return None
dpandit1988 1:94a3e8fe5e25 230 *
dpandit1988 1:94a3e8fe5e25 231 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 232 */
dpandit1988 1:94a3e8fe5e25 233 void printWriteCommData(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 1:94a3e8fe5e25 234 {
dpandit1988 1:94a3e8fe5e25 235 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 236 {
dpandit1988 1:94a3e8fe5e25 237 pc.printf("IC%d:\n",(ic+1));
dpandit1988 1:94a3e8fe5e25 238 if(type == Comm)
dpandit1988 1:94a3e8fe5e25 239 {
dpandit1988 1:94a3e8fe5e25 240 pc.printf("Write Comm Data:\n");
dpandit1988 1:94a3e8fe5e25 241 pc.printf("0x%X, ", IC[ic].com.tx_data[0]);
dpandit1988 1:94a3e8fe5e25 242 pc.printf("0x%X, ", IC[ic].com.tx_data[1]);
dpandit1988 1:94a3e8fe5e25 243 pc.printf("0x%X, ", IC[ic].com.tx_data[2]);
dpandit1988 1:94a3e8fe5e25 244 pc.printf("0x%X, ", IC[ic].com.tx_data[3]);
dpandit1988 1:94a3e8fe5e25 245 pc.printf("0x%X, ", IC[ic].com.tx_data[4]);
dpandit1988 1:94a3e8fe5e25 246 pc.printf("0x%X\n\n", IC[ic].com.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 247 }
dpandit1988 1:94a3e8fe5e25 248 else{ pc.printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 249 }
dpandit1988 1:94a3e8fe5e25 250 }
dpandit1988 1:94a3e8fe5e25 251
dpandit1988 1:94a3e8fe5e25 252 /**
dpandit1988 1:94a3e8fe5e25 253 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 254 * Function: printReadCommData
dpandit1988 1:94a3e8fe5e25 255 * @brief Print Read Comm Data.
dpandit1988 1:94a3e8fe5e25 256 *
dpandit1988 1:94a3e8fe5e25 257 * @details This function print read comm data.
dpandit1988 1:94a3e8fe5e25 258 *
dpandit1988 1:94a3e8fe5e25 259 * Parameters:
dpandit1988 1:94a3e8fe5e25 260 * @param [in] tIC Total IC
dpandit1988 1:94a3e8fe5e25 261 *
dpandit1988 1:94a3e8fe5e25 262 * @param [in] *IC cell_asic stucture pointer
dpandit1988 1:94a3e8fe5e25 263 *
dpandit1988 1:94a3e8fe5e25 264 * @param [in] type Enum type of resistor
dpandit1988 1:94a3e8fe5e25 265 *
dpandit1988 1:94a3e8fe5e25 266 * @return None
dpandit1988 1:94a3e8fe5e25 267 *
dpandit1988 1:94a3e8fe5e25 268 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 269 */
dpandit1988 1:94a3e8fe5e25 270 void printReadCommData(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 1:94a3e8fe5e25 271 {
dpandit1988 1:94a3e8fe5e25 272 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 273 {
dpandit1988 1:94a3e8fe5e25 274 pc.printf("IC%d:\n",(ic+1));
dpandit1988 1:94a3e8fe5e25 275 if(type == Comm)
dpandit1988 1:94a3e8fe5e25 276 {
dpandit1988 1:94a3e8fe5e25 277 pc.printf("Read Comm Data:\n");
dpandit1988 1:94a3e8fe5e25 278 pc.printf("ICOM0:0x%X, ", IC[ic].rx_comm.icomm[0]);
dpandit1988 1:94a3e8fe5e25 279 pc.printf("ICOM1:0x%X, ", IC[ic].rx_comm.icomm[1]);
dpandit1988 1:94a3e8fe5e25 280 pc.printf("ICOM2:0x%X\n", IC[ic].rx_comm.icomm[2]);
dpandit1988 1:94a3e8fe5e25 281 pc.printf("FCOM0:0x%X, ", IC[ic].rx_comm.fcomm[0]);
dpandit1988 1:94a3e8fe5e25 282 pc.printf("FCOM1:0x%X, ", IC[ic].rx_comm.fcomm[1]);
dpandit1988 1:94a3e8fe5e25 283 pc.printf("FCOM2:0x%X\n", IC[ic].rx_comm.fcomm[2]);
dpandit1988 1:94a3e8fe5e25 284 pc.printf("DATA0:0x%X, ", IC[ic].rx_comm.data[0]);
dpandit1988 1:94a3e8fe5e25 285 pc.printf("DATA1:0x%X, ", IC[ic].rx_comm.data[1]);
dpandit1988 1:94a3e8fe5e25 286 pc.printf("DATA2:0x%X\n", IC[ic].rx_comm.data[2]);
dpandit1988 1:94a3e8fe5e25 287 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 1:94a3e8fe5e25 288 pc.printf("PECError:%d\n\n",IC[ic].cccrc.comm_pec);
dpandit1988 1:94a3e8fe5e25 289 }
dpandit1988 1:94a3e8fe5e25 290 else{ pc.printf("Wrong Register Type Select\n"); }
dpandit1988 1:94a3e8fe5e25 291 }
dpandit1988 1:94a3e8fe5e25 292 }
dpandit1988 1:94a3e8fe5e25 293
dpandit1988 1:94a3e8fe5e25 294 /**
dpandit1988 1:94a3e8fe5e25 295 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 296 * Function: printCr
dpandit1988 1:94a3e8fe5e25 297 * @brief Print Current Result.
dpandit1988 1:94a3e8fe5e25 298 *
dpandit1988 1:94a3e8fe5e25 299 * @details This function Print current result into terminal.
dpandit1988 1:94a3e8fe5e25 300 *
dpandit1988 1:94a3e8fe5e25 301 * Parameters:
dpandit1988 1:94a3e8fe5e25 302 * @param [in] tIC Total IC
dpandit1988 1:94a3e8fe5e25 303 *
dpandit1988 1:94a3e8fe5e25 304 * @param [in] *ic cell_asic stucture pointer
dpandit1988 1:94a3e8fe5e25 305 *
dpandit1988 1:94a3e8fe5e25 306 * @return None
dpandit1988 1:94a3e8fe5e25 307 *
dpandit1988 1:94a3e8fe5e25 308 *******************************************************************************
dpandit1988 1:94a3e8fe5e25 309 */
dpandit1988 1:94a3e8fe5e25 310 void printCr(uint8_t tIC, cell_asic *IC)
dpandit1988 1:94a3e8fe5e25 311 {
dpandit1988 1:94a3e8fe5e25 312 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 313 {
dpandit1988 1:94a3e8fe5e25 314 pc.printf("IC%d:\n",(ic+1));
dpandit1988 1:94a3e8fe5e25 315 pc.printf("Read Current:\n");
dpandit1988 6:5d29fdcbae72 316 pc.printf("I1:%fmV, ", getCurrent(IC[ic].i.i1));
dpandit1988 6:5d29fdcbae72 317 pc.printf("I2:%fmV\n", getCurrent(IC[ic].i.i2));
dpandit1988 1:94a3e8fe5e25 318 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 1:94a3e8fe5e25 319 pc.printf("PECError:%d\n\n",IC[ic].cccrc.cr_pec);
dpandit1988 1:94a3e8fe5e25 320 }
dpandit1988 1:94a3e8fe5e25 321 }
dpandit1988 1:94a3e8fe5e25 322
dpandit1988 6:5d29fdcbae72 323 /**
dpandit1988 6:5d29fdcbae72 324 *******************************************************************************
dpandit1988 6:5d29fdcbae72 325 * Function: printVoltages
dpandit1988 6:5d29fdcbae72 326 * @brief Print Voltages.
dpandit1988 6:5d29fdcbae72 327 *
dpandit1988 6:5d29fdcbae72 328 * @details This function Print Voltages into terminal.
dpandit1988 6:5d29fdcbae72 329 *
dpandit1988 6:5d29fdcbae72 330 * Parameters:
dpandit1988 6:5d29fdcbae72 331 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 332 *
dpandit1988 6:5d29fdcbae72 333 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 334 *
dpandit1988 6:5d29fdcbae72 335 * @param [in] type Enum type of resistor group
dpandit1988 6:5d29fdcbae72 336 *
dpandit1988 6:5d29fdcbae72 337 * @return None
dpandit1988 6:5d29fdcbae72 338 *
dpandit1988 6:5d29fdcbae72 339 *******************************************************************************
dpandit1988 6:5d29fdcbae72 340 */
dpandit1988 6:5d29fdcbae72 341 void printVoltage(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 6:5d29fdcbae72 342 {
dpandit1988 6:5d29fdcbae72 343 float voltage;
dpandit1988 6:5d29fdcbae72 344 uint16_t temp;
dpandit1988 6:5d29fdcbae72 345 uint8_t channel;
dpandit1988 6:5d29fdcbae72 346 uint8_t flag = 0;
dpandit1988 6:5d29fdcbae72 347 if((type == Vr)){channel = VR_SIZE;}
dpandit1988 6:5d29fdcbae72 348 else if((type == Vrx)){channel = VRX_SIZE;}
dpandit1988 6:5d29fdcbae72 349 else if (type == Rvr){ channel = RVR_SIZE;}
dpandit1988 6:5d29fdcbae72 350 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 351 {
dpandit1988 6:5d29fdcbae72 352 pc.printf("IC%d: \n",(ic+1));
dpandit1988 6:5d29fdcbae72 353 for(uint8_t index = 0; index < channel; index++)
dpandit1988 1:94a3e8fe5e25 354 {
dpandit1988 6:5d29fdcbae72 355 if(type == Vr){ temp = IC[ic].vr.v_codes[index];}
dpandit1988 6:5d29fdcbae72 356 else if(type == Vrx){ temp = IC[ic].vrx.vx_codes[index]; }
dpandit1988 6:5d29fdcbae72 357 else if(type == Rvr){ temp = IC[ic].rvr.redv_codes[index]; }
dpandit1988 6:5d29fdcbae72 358 voltage = getVoltage(temp);
dpandit1988 6:5d29fdcbae72 359 if(type == Vr)
dpandit1988 1:94a3e8fe5e25 360 {
dpandit1988 6:5d29fdcbae72 361 if(index == 8)
dpandit1988 6:5d29fdcbae72 362 {
dpandit1988 6:5d29fdcbae72 363 pc.printf("VREF2A = %7.4fV \n", voltage);
dpandit1988 6:5d29fdcbae72 364 flag = 1;
dpandit1988 6:5d29fdcbae72 365 }
dpandit1988 6:5d29fdcbae72 366 else if(index == (channel-1))
dpandit1988 1:94a3e8fe5e25 367 {
dpandit1988 6:5d29fdcbae72 368 pc.printf("VREF2B = %7.4fV \n", voltage);
dpandit1988 6:5d29fdcbae72 369 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 370 pc.printf("PECError:%d",IC[ic].cccrc.vr_pec);
dpandit1988 6:5d29fdcbae72 371 }
dpandit1988 6:5d29fdcbae72 372 else
dpandit1988 6:5d29fdcbae72 373 {
dpandit1988 6:5d29fdcbae72 374 if(flag == 1)
dpandit1988 1:94a3e8fe5e25 375 {
dpandit1988 6:5d29fdcbae72 376 pc.printf("V%2d = %7.4fV \n", index, voltage);
dpandit1988 1:94a3e8fe5e25 377 }
dpandit1988 6:5d29fdcbae72 378 else{pc.printf("V%2d = %7.4fV \n",(index+1), voltage);}
dpandit1988 1:94a3e8fe5e25 379 }
dpandit1988 6:5d29fdcbae72 380 }
dpandit1988 6:5d29fdcbae72 381 else if(type == Vrx)
dpandit1988 6:5d29fdcbae72 382 {
dpandit1988 6:5d29fdcbae72 383 if(index == 4){pc.printf("VREF2A = %7.4fV \n", voltage);}
dpandit1988 6:5d29fdcbae72 384 else if(index == (channel-1))
dpandit1988 1:94a3e8fe5e25 385 {
dpandit1988 6:5d29fdcbae72 386 pc.printf("VREF2B = %7.4fV \n", voltage);
dpandit1988 6:5d29fdcbae72 387 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 388 pc.printf("PECError:%d",IC[ic].cccrc.vrx_pec);
dpandit1988 1:94a3e8fe5e25 389 }
dpandit1988 6:5d29fdcbae72 390 else{pc.printf("V%2d = %7.4fV \n",(index+7), voltage);}
dpandit1988 6:5d29fdcbae72 391 }
dpandit1988 6:5d29fdcbae72 392 else if(type == Rvr)
dpandit1988 6:5d29fdcbae72 393 {
dpandit1988 6:5d29fdcbae72 394 pc.printf("V%dR=%fV \n",(index+1), voltage);
dpandit1988 6:5d29fdcbae72 395 if(index == (channel-1))
dpandit1988 1:94a3e8fe5e25 396 {
dpandit1988 6:5d29fdcbae72 397 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 398 pc.printf("PECError:%d",IC[ic].cccrc.rvr_pec);
dpandit1988 1:94a3e8fe5e25 399 }
dpandit1988 1:94a3e8fe5e25 400 }
dpandit1988 6:5d29fdcbae72 401 else{pc.printf("Wrong Register Group Select\n");}
dpandit1988 1:94a3e8fe5e25 402 }
dpandit1988 6:5d29fdcbae72 403 pc.printf("\n\n");
dpandit1988 1:94a3e8fe5e25 404 }
dpandit1988 6:5d29fdcbae72 405 }
dpandit1988 6:5d29fdcbae72 406
dpandit1988 6:5d29fdcbae72 407 /**
dpandit1988 6:5d29fdcbae72 408 *******************************************************************************
dpandit1988 6:5d29fdcbae72 409 * Function: printVbat
dpandit1988 6:5d29fdcbae72 410 * @brief Print VBAT Result.
dpandit1988 6:5d29fdcbae72 411 *
dpandit1988 6:5d29fdcbae72 412 * @details This function Print the VBAT result into terminal.
dpandit1988 6:5d29fdcbae72 413 *
dpandit1988 6:5d29fdcbae72 414 * Parameters:
dpandit1988 6:5d29fdcbae72 415 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 416 *
dpandit1988 6:5d29fdcbae72 417 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 418 *
dpandit1988 6:5d29fdcbae72 419 * @return None
dpandit1988 6:5d29fdcbae72 420 *
dpandit1988 6:5d29fdcbae72 421 *******************************************************************************
dpandit1988 6:5d29fdcbae72 422 */
dpandit1988 6:5d29fdcbae72 423 void printVbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 424 {
dpandit1988 6:5d29fdcbae72 425 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 426 {
dpandit1988 6:5d29fdcbae72 427 pc.printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 428 pc.printf("Read VBAT:\n");
dpandit1988 6:5d29fdcbae72 429 pc.printf("VBAT1: %fV, ", getVoltage(IC[ic].vbat.vbat1));
dpandit1988 6:5d29fdcbae72 430 pc.printf("VBAT2: %fV, ", getVoltage(IC[ic].vbat.vbat2));
dpandit1988 6:5d29fdcbae72 431 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 432 pc.printf("PECError:%d\n\n",IC[ic].cccrc.vbat_pec);
dpandit1988 6:5d29fdcbae72 433 }
dpandit1988 6:5d29fdcbae72 434 }
dpandit1988 1:94a3e8fe5e25 435
dpandit1988 6:5d29fdcbae72 436 /**
dpandit1988 6:5d29fdcbae72 437 *******************************************************************************
dpandit1988 6:5d29fdcbae72 438 * Function: printIvbat
dpandit1988 6:5d29fdcbae72 439 * @brief Print IVBAT result.
dpandit1988 6:5d29fdcbae72 440 *
dpandit1988 6:5d29fdcbae72 441 * @details This function Print the IVBAT result into terminal.
dpandit1988 6:5d29fdcbae72 442 *
dpandit1988 6:5d29fdcbae72 443 * Parameters:
dpandit1988 6:5d29fdcbae72 444 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 445 *
dpandit1988 6:5d29fdcbae72 446 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 447 *
dpandit1988 6:5d29fdcbae72 448 * @return None
dpandit1988 6:5d29fdcbae72 449 *
dpandit1988 6:5d29fdcbae72 450 *******************************************************************************
dpandit1988 6:5d29fdcbae72 451 */
dpandit1988 6:5d29fdcbae72 452 void printIvbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 453 {
dpandit1988 6:5d29fdcbae72 454 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 455 {
dpandit1988 6:5d29fdcbae72 456 pc.printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 457 pc.printf("Read IVBAT:\n");
dpandit1988 6:5d29fdcbae72 458 pc.printf("I1:%fmV, ", getCurrent(IC[ic].ivbat.i1));
dpandit1988 6:5d29fdcbae72 459 pc.printf("VBAT1%fV, ", getVoltage(IC[ic].ivbat.vbat1));
dpandit1988 6:5d29fdcbae72 460 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 461 pc.printf("PECError:%d\n\n",IC[ic].cccrc.ivbat_pec);
dpandit1988 1:94a3e8fe5e25 462 }
dpandit1988 6:5d29fdcbae72 463 }
dpandit1988 6:5d29fdcbae72 464
dpandit1988 6:5d29fdcbae72 465 /**
dpandit1988 6:5d29fdcbae72 466 *******************************************************************************
dpandit1988 6:5d29fdcbae72 467 * Function: printAvgVbat
dpandit1988 6:5d29fdcbae72 468 * @brief Print AVGVBAT result.
dpandit1988 6:5d29fdcbae72 469 *
dpandit1988 6:5d29fdcbae72 470 * @details This function Print the avgvbat result into terminal.
dpandit1988 6:5d29fdcbae72 471 *
dpandit1988 6:5d29fdcbae72 472 * Parameters:
dpandit1988 6:5d29fdcbae72 473 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 474 *
dpandit1988 6:5d29fdcbae72 475 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 476 *
dpandit1988 6:5d29fdcbae72 477 * @return None
dpandit1988 6:5d29fdcbae72 478 *
dpandit1988 6:5d29fdcbae72 479 *******************************************************************************
dpandit1988 6:5d29fdcbae72 480 */
dpandit1988 6:5d29fdcbae72 481 void printAvgVbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 482 {
dpandit1988 6:5d29fdcbae72 483 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 484 {
dpandit1988 6:5d29fdcbae72 485 pc.printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 486 pc.printf("Read AvgVbat:\n");
dpandit1988 6:5d29fdcbae72 487 pc.printf("VB1AVG:%fV, ", getAvgVbat(IC[ic].vbavg.vb1avg));
dpandit1988 6:5d29fdcbae72 488 pc.printf("VB2AVG:%fV, ", getAvgVbat(IC[ic].vbavg.vb2avg));
dpandit1988 6:5d29fdcbae72 489 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 490 pc.printf("PECError:%d\n\n",IC[ic].cccrc.avgvbat_pec);
dpandit1988 6:5d29fdcbae72 491 }
dpandit1988 6:5d29fdcbae72 492 }
dpandit1988 6:5d29fdcbae72 493
dpandit1988 6:5d29fdcbae72 494 /**
dpandit1988 6:5d29fdcbae72 495 *******************************************************************************
dpandit1988 6:5d29fdcbae72 496 * Function: printAvgIVbat
dpandit1988 6:5d29fdcbae72 497 * @brief Print AVGIVBAT result.
dpandit1988 6:5d29fdcbae72 498 *
dpandit1988 6:5d29fdcbae72 499 * @details This function Print the avgivbat result into terminal.
dpandit1988 6:5d29fdcbae72 500 *
dpandit1988 6:5d29fdcbae72 501 * Parameters:
dpandit1988 6:5d29fdcbae72 502 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 503 *
dpandit1988 6:5d29fdcbae72 504 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 505 *
dpandit1988 6:5d29fdcbae72 506 * @return None
dpandit1988 6:5d29fdcbae72 507 *
dpandit1988 6:5d29fdcbae72 508 *******************************************************************************
dpandit1988 6:5d29fdcbae72 509 */
dpandit1988 6:5d29fdcbae72 510 void printAvgIVbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 511 {
dpandit1988 6:5d29fdcbae72 512 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 513 {
dpandit1988 6:5d29fdcbae72 514 pc.printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 515 pc.printf("Read AvgIVbat:\n");
dpandit1988 6:5d29fdcbae72 516 pc.printf("I1AVG:%fmV, ", getAvgCurrent(IC[ic].i_vbavg.i1avg));
dpandit1988 6:5d29fdcbae72 517 pc.printf("VB1AVG%fV, ", getAvgVbat(IC[ic].i_vbavg.vb1avg));
dpandit1988 6:5d29fdcbae72 518 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 519 pc.printf("PECError:%d\n\n",IC[ic].cccrc.avgivbat_pec);
dpandit1988 6:5d29fdcbae72 520 }
dpandit1988 6:5d29fdcbae72 521 }
dpandit1988 1:94a3e8fe5e25 522
dpandit1988 6:5d29fdcbae72 523 /**
dpandit1988 6:5d29fdcbae72 524 *******************************************************************************
dpandit1988 6:5d29fdcbae72 525 * Function: printAvgCr
dpandit1988 6:5d29fdcbae72 526 * @brief Print IAVG result.
dpandit1988 6:5d29fdcbae72 527 *
dpandit1988 6:5d29fdcbae72 528 * @details This function Print the iavg result into terminal.
dpandit1988 6:5d29fdcbae72 529 *
dpandit1988 6:5d29fdcbae72 530 * Parameters:
dpandit1988 6:5d29fdcbae72 531 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 532 *
dpandit1988 6:5d29fdcbae72 533 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 534 *
dpandit1988 6:5d29fdcbae72 535 * @return None
dpandit1988 6:5d29fdcbae72 536 *
dpandit1988 6:5d29fdcbae72 537 *******************************************************************************
dpandit1988 6:5d29fdcbae72 538 */
dpandit1988 6:5d29fdcbae72 539 void printAvgCr(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 540 {
dpandit1988 6:5d29fdcbae72 541 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 542 {
dpandit1988 6:5d29fdcbae72 543 pc.printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 544 pc.printf("Read AvgCr:\n");
dpandit1988 6:5d29fdcbae72 545 pc.printf("I1AVG:%fmV, ", getAvgCurrent(IC[ic].iavg.i1avg));
dpandit1988 6:5d29fdcbae72 546 pc.printf("I2AVG:%fmV, ", getAvgCurrent(IC[ic].iavg.i2avg));
dpandit1988 6:5d29fdcbae72 547 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 548 pc.printf("PECError:%d\n\n",IC[ic].cccrc.avgcr_pec);
dpandit1988 1:94a3e8fe5e25 549 }
dpandit1988 6:5d29fdcbae72 550 }
dpandit1988 1:94a3e8fe5e25 551
dpandit1988 6:5d29fdcbae72 552 /**
dpandit1988 6:5d29fdcbae72 553 *******************************************************************************
dpandit1988 6:5d29fdcbae72 554 * Function: printOc
dpandit1988 6:5d29fdcbae72 555 * @brief Print OC result.
dpandit1988 6:5d29fdcbae72 556 *
dpandit1988 6:5d29fdcbae72 557 * @details This function Print the oc result into terminal.
dpandit1988 6:5d29fdcbae72 558 *
dpandit1988 6:5d29fdcbae72 559 * Parameters:
dpandit1988 6:5d29fdcbae72 560 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 561 *
dpandit1988 6:5d29fdcbae72 562 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 563 *
dpandit1988 6:5d29fdcbae72 564 * @return None
dpandit1988 6:5d29fdcbae72 565 *
dpandit1988 6:5d29fdcbae72 566 *******************************************************************************
dpandit1988 6:5d29fdcbae72 567 */
dpandit1988 6:5d29fdcbae72 568 void printOc(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 569 {
dpandit1988 6:5d29fdcbae72 570 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 571 {
dpandit1988 6:5d29fdcbae72 572 pc.printf("Read OCR:\n");
dpandit1988 6:5d29fdcbae72 573 pc.printf("OC1R: %fmV, ", getOverCurrent(IC[ic].oc.oc1r));
dpandit1988 6:5d29fdcbae72 574 pc.printf("OC2R: %fmV, ", getOverCurrent(IC[ic].oc.oc2r));
dpandit1988 6:5d29fdcbae72 575 pc.printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 576 pc.printf("PECError:%d\n\n",IC[ic].cccrc.oc_pec);
dpandit1988 1:94a3e8fe5e25 577 }
dpandit1988 6:5d29fdcbae72 578 }
dpandit1988 6:5d29fdcbae72 579
dpandit1988 6:5d29fdcbae72 580 /**
dpandit1988 6:5d29fdcbae72 581 *******************************************************************************
dpandit1988 6:5d29fdcbae72 582 * Function: PrintStatus
dpandit1988 6:5d29fdcbae72 583 * @brief Print status reg. result.
dpandit1988 6:5d29fdcbae72 584 *
dpandit1988 6:5d29fdcbae72 585 * @details This function Print status result into terminal.
dpandit1988 6:5d29fdcbae72 586 *
dpandit1988 6:5d29fdcbae72 587 * Parameters:
dpandit1988 6:5d29fdcbae72 588 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 589 *
dpandit1988 6:5d29fdcbae72 590 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 591 *
dpandit1988 6:5d29fdcbae72 592 * @param [in] type Enum type of resistor
dpandit1988 6:5d29fdcbae72 593 *
dpandit1988 6:5d29fdcbae72 594 * @param [in] grp Enum type of resistor group
dpandit1988 6:5d29fdcbae72 595 *
dpandit1988 6:5d29fdcbae72 596 * @return None
dpandit1988 6:5d29fdcbae72 597 *
dpandit1988 6:5d29fdcbae72 598 *******************************************************************************
dpandit1988 6:5d29fdcbae72 599 */
dpandit1988 1:94a3e8fe5e25 600
dpandit1988 6:5d29fdcbae72 601 void printStatus(uint8_t tIC, cell_asic *IC, TYPE type, GRP grp)
dpandit1988 6:5d29fdcbae72 602 {
dpandit1988 6:5d29fdcbae72 603 float voltage;
dpandit1988 6:5d29fdcbae72 604 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 605 {
dpandit1988 6:5d29fdcbae72 606 pc.printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 607 if(type == Status)
dpandit1988 1:94a3e8fe5e25 608 {
dpandit1988 6:5d29fdcbae72 609 if(grp == A)
dpandit1988 6:5d29fdcbae72 610 {
dpandit1988 6:5d29fdcbae72 611 pc.printf("Status A:\n");
dpandit1988 6:5d29fdcbae72 612 voltage = getVoltage(IC[ic].stata.vref1p25);
dpandit1988 6:5d29fdcbae72 613 pc.printf("VREF1P25:%fV, ", voltage);
dpandit1988 6:5d29fdcbae72 614 pc.printf("ITMP:%f°C, ", (((IC[ic].stata.itmp * 150e-6 )+ 1.5)/0.0075)-273);
dpandit1988 6:5d29fdcbae72 615 voltage = getVoltage(IC[ic].stata.vreg2);
dpandit1988 6:5d29fdcbae72 616 pc.printf("VREG2:%fV\n", (voltage + 1.5));
dpandit1988 6:5d29fdcbae72 617 pc.printf("CCount:%d, ",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 618 pc.printf("PECError:%d\n\n",IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 619 }
dpandit1988 6:5d29fdcbae72 620 else if(grp == B)
dpandit1988 6:5d29fdcbae72 621 {
dpandit1988 6:5d29fdcbae72 622 pc.printf("Status B:\n");
dpandit1988 6:5d29fdcbae72 623 pc.printf("OC1MIN:0x%X, ", IC[ic].statb.oc1min);
dpandit1988 6:5d29fdcbae72 624 pc.printf("OC1MAX:0x%X, ", IC[ic].statb.oc1max);
dpandit1988 6:5d29fdcbae72 625 pc.printf("OC2MIN:0x%X, ", IC[ic].statb.oc2min);
dpandit1988 6:5d29fdcbae72 626 pc.printf("OC2MAX:0x%X\n", IC[ic].statb.oc2max);
dpandit1988 6:5d29fdcbae72 627 pc.printf("CCount:%d, ",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 628 pc.printf("PECError:%d\n\n",IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 629 }
dpandit1988 6:5d29fdcbae72 630 else if(grp == C)
dpandit1988 6:5d29fdcbae72 631 {
dpandit1988 6:5d29fdcbae72 632 pc.printf("Status C:\n");
dpandit1988 6:5d29fdcbae72 633 pc.printf("OC1A:0x%X, ", IC[ic].statc.oc1a);
dpandit1988 6:5d29fdcbae72 634 pc.printf("~OC1A:0x%X, ", IC[ic].statc.oc1a_inv);
dpandit1988 6:5d29fdcbae72 635 pc.printf("OC2A:0x%X, ", IC[ic].statc.oc2a);
dpandit1988 6:5d29fdcbae72 636 pc.printf("~OC2A:0x%X, ", IC[ic].statc.oc2a_inv);
dpandit1988 6:5d29fdcbae72 637 pc.printf("CT:0x%X, ", IC[ic].statc.ct);
dpandit1988 6:5d29fdcbae72 638 pc.printf("CTS:0x%X\n", IC[ic].statc.cts);
dpandit1988 6:5d29fdcbae72 639
dpandit1988 6:5d29fdcbae72 640 pc.printf("VA_OV:0x%X, ", IC[ic].statc.va_ov);
dpandit1988 6:5d29fdcbae72 641 pc.printf("VA_UV:0x%X ", IC[ic].statc.va_uv);
dpandit1988 6:5d29fdcbae72 642 pc.printf("VD_OV:0x%X, ", IC[ic].statc.vd_ov);
dpandit1988 6:5d29fdcbae72 643 pc.printf("VD_UV:0x%X, ", IC[ic].statc.vd_uv);
dpandit1988 6:5d29fdcbae72 644 pc.printf("OTP1_ED:0x%X, ", IC[ic].statc.otp1_ed);
dpandit1988 6:5d29fdcbae72 645 pc.printf("OTP1_MED:0x%X, ", IC[ic].statc.otp1_med);
dpandit1988 6:5d29fdcbae72 646 pc.printf("OTP2_ED:0x%X, ", IC[ic].statc.otp2_ed);
dpandit1988 6:5d29fdcbae72 647 pc.printf("OTP2_MED:0x%X\n", IC[ic].statc.otp2_med);
dpandit1988 6:5d29fdcbae72 648
dpandit1988 6:5d29fdcbae72 649 pc.printf("VDE:0x%X, ", IC[ic].statc.vde);
dpandit1988 6:5d29fdcbae72 650 pc.printf("VDE1:0x%X, ", IC[ic].statc.vdel);
dpandit1988 6:5d29fdcbae72 651 pc.printf("INSYNC:0x%X, ", IC[ic].statc.insync);
dpandit1988 6:5d29fdcbae72 652 pc.printf("SPIFLT:0x%X, ", IC[ic].statc.spiflt);
dpandit1988 6:5d29fdcbae72 653 pc.printf("SLEEP:0x%X, ", IC[ic].statc.sleep);
dpandit1988 6:5d29fdcbae72 654 pc.printf("THSD:0x%X, ", IC[ic].statc.thsd);
dpandit1988 6:5d29fdcbae72 655 pc.printf("TMODCHK:0x%X, ", IC[ic].statc.tmodchk);
dpandit1988 6:5d29fdcbae72 656 pc.printf("OSCCHK:0x%X\n", IC[ic].statc.oscchk);
dpandit1988 1:94a3e8fe5e25 657
dpandit1988 6:5d29fdcbae72 658 pc.printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 659 pc.printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 660 }
dpandit1988 6:5d29fdcbae72 661 else if(grp == D)
dpandit1988 6:5d29fdcbae72 662 {
dpandit1988 6:5d29fdcbae72 663 pc.printf("Status D:\n");
dpandit1988 6:5d29fdcbae72 664 pc.printf("OC_CNTR:0x%X, ", IC[ic].statd.oc_cntr);
dpandit1988 6:5d29fdcbae72 665 pc.printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 666 pc.printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 667 }
dpandit1988 6:5d29fdcbae72 668 else if(grp == E)
dpandit1988 6:5d29fdcbae72 669 {
dpandit1988 6:5d29fdcbae72 670 pc.printf("Status E:\n");
dpandit1988 6:5d29fdcbae72 671 pc.printf("GPIO:0x%X, ", IC[ic].state.gpio);
dpandit1988 6:5d29fdcbae72 672 pc.printf("GPO:0x%X, ", IC[ic].state.gpo);
dpandit1988 6:5d29fdcbae72 673 pc.printf("REV_ID:0x%X\n", IC[ic].state.rev);
dpandit1988 6:5d29fdcbae72 674 pc.printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 675 pc.printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 676 }
dpandit1988 6:5d29fdcbae72 677 else if(grp == ALL_GRP)
dpandit1988 6:5d29fdcbae72 678 {
dpandit1988 6:5d29fdcbae72 679 pc.printf("Status A:\n");
dpandit1988 6:5d29fdcbae72 680 voltage = getVoltage(IC[ic].stata.vref1p25);
dpandit1988 6:5d29fdcbae72 681 pc.printf("VREF1P25:%fV, ", voltage);
dpandit1988 6:5d29fdcbae72 682 pc.printf("ITMP:%f°C, ", (((IC[ic].stata.itmp * 150e-6 )+ 1.5)/0.0075)-273);
dpandit1988 6:5d29fdcbae72 683 voltage = getVoltage(IC[ic].stata.vreg2);
dpandit1988 6:5d29fdcbae72 684 pc.printf("VREG2:%fV\n", (voltage + 1.5));
dpandit1988 6:5d29fdcbae72 685
dpandit1988 6:5d29fdcbae72 686 pc.printf("Status B:\n");
dpandit1988 6:5d29fdcbae72 687 pc.printf("OC1MIN:0x%X, ", IC[ic].statb.oc1min);
dpandit1988 6:5d29fdcbae72 688 pc.printf("OC1MAX:0x%X, ", IC[ic].statb.oc1max);
dpandit1988 6:5d29fdcbae72 689 pc.printf("OC2MIN:0x%X, ", IC[ic].statb.oc2min);
dpandit1988 6:5d29fdcbae72 690 pc.printf("OC2MAX:0x%X\n", IC[ic].statb.oc2max);
dpandit1988 1:94a3e8fe5e25 691
dpandit1988 6:5d29fdcbae72 692 pc.printf("Status C:\n");
dpandit1988 6:5d29fdcbae72 693 pc.printf("OC1A:0x%X, ", IC[ic].statc.oc1a);
dpandit1988 6:5d29fdcbae72 694 pc.printf("~OC1A:0x%X, ", IC[ic].statc.oc1a_inv);
dpandit1988 6:5d29fdcbae72 695 pc.printf("OC2A:0x%X, ", IC[ic].statc.oc2a);
dpandit1988 6:5d29fdcbae72 696 pc.printf("~OC2A:0x%X, ", IC[ic].statc.oc2a_inv);
dpandit1988 6:5d29fdcbae72 697 pc.printf("CT:0x%X, ", IC[ic].statc.ct);
dpandit1988 6:5d29fdcbae72 698 pc.printf("CTS:0x%X\n", IC[ic].statc.cts);
dpandit1988 6:5d29fdcbae72 699 pc.printf("VA_OV:0x%X, ", IC[ic].statc.va_ov);
dpandit1988 6:5d29fdcbae72 700 pc.printf("VA_UV:0x%X ", IC[ic].statc.va_uv);
dpandit1988 6:5d29fdcbae72 701 pc.printf("VD_OV:0x%X, ", IC[ic].statc.vd_ov);
dpandit1988 6:5d29fdcbae72 702 pc.printf("VD_UV:0x%X, ", IC[ic].statc.vd_uv);
dpandit1988 6:5d29fdcbae72 703 pc.printf("OTP1_ED:0x%X, ", IC[ic].statc.otp1_ed);
dpandit1988 6:5d29fdcbae72 704 pc.printf("OTP1_MED:0x%X, ", IC[ic].statc.otp1_med);
dpandit1988 6:5d29fdcbae72 705 pc.printf("OTP2_ED:0x%X, ", IC[ic].statc.otp2_ed);
dpandit1988 6:5d29fdcbae72 706 pc.printf("OTP2_MED:0x%X\n", IC[ic].statc.otp2_med);
dpandit1988 6:5d29fdcbae72 707 pc.printf("VDE:0x%X, ", IC[ic].statc.vde);
dpandit1988 6:5d29fdcbae72 708 pc.printf("VDE1:0x%X, ", IC[ic].statc.vdel);
dpandit1988 6:5d29fdcbae72 709 pc.printf("INSYNC:0x%X, ", IC[ic].statc.insync);
dpandit1988 6:5d29fdcbae72 710 pc.printf("SPIFLT:0x%X, ", IC[ic].statc.spiflt);
dpandit1988 6:5d29fdcbae72 711 pc.printf("SLEEP:0x%X, ", IC[ic].statc.sleep);
dpandit1988 6:5d29fdcbae72 712 pc.printf("THSD:0x%X, ", IC[ic].statc.thsd);
dpandit1988 6:5d29fdcbae72 713 pc.printf("TMODCHK:0x%X, ", IC[ic].statc.tmodchk);
dpandit1988 6:5d29fdcbae72 714 pc.printf("OSCCHK:0x%X\n", IC[ic].statc.oscchk);
dpandit1988 6:5d29fdcbae72 715
dpandit1988 6:5d29fdcbae72 716 pc.printf("Status D:\n");
dpandit1988 6:5d29fdcbae72 717 pc.printf("OC_CNTR:0x%X\n", IC[ic].statd.oc_cntr);
dpandit1988 6:5d29fdcbae72 718
dpandit1988 6:5d29fdcbae72 719 pc.printf("Status E:\n");
dpandit1988 6:5d29fdcbae72 720 pc.printf("GPIO:0x%X, ", IC[ic].state.gpio);
dpandit1988 6:5d29fdcbae72 721 pc.printf("GPO:0x%X, ", IC[ic].state.gpo);
dpandit1988 6:5d29fdcbae72 722 pc.printf("REV_ID:0x%X\n", IC[ic].state.rev);
dpandit1988 6:5d29fdcbae72 723 pc.printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 724 pc.printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 725 }
dpandit1988 6:5d29fdcbae72 726 else{ pc.printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 727 }
dpandit1988 1:94a3e8fe5e25 728 }
dpandit1988 6:5d29fdcbae72 729 }
dpandit1988 1:94a3e8fe5e25 730
dpandit1988 6:5d29fdcbae72 731 /**
dpandit1988 6:5d29fdcbae72 732 *******************************************************************************
dpandit1988 6:5d29fdcbae72 733 * Function: printMenu
dpandit1988 6:5d29fdcbae72 734 * @brief Print Command Menu.
dpandit1988 6:5d29fdcbae72 735 *
dpandit1988 6:5d29fdcbae72 736 * @details This function print all command menu.
dpandit1988 6:5d29fdcbae72 737 *
dpandit1988 6:5d29fdcbae72 738 * @return None
dpandit1988 6:5d29fdcbae72 739 *
dpandit1988 6:5d29fdcbae72 740 *******************************************************************************
dpandit1988 6:5d29fdcbae72 741 */
dpandit1988 6:5d29fdcbae72 742 void printMenu()
dpandit1988 6:5d29fdcbae72 743 {
dpandit1988 6:5d29fdcbae72 744 pc.printf("List of ADBMS2950 Command:\n");
dpandit1988 6:5d29fdcbae72 745 pc.printf("Write and Read Configuration: 1 |Read Device SID: 26 \n");
dpandit1988 6:5d29fdcbae72 746 pc.printf("Read Configuration: 2 |Soft Reset: 27 \n");
dpandit1988 6:5d29fdcbae72 747 pc.printf("Start ADI1 Conversion(Single Shot): 3 |Reset cmd counter: 28 \n");
dpandit1988 6:5d29fdcbae72 748 pc.printf("Start ADI2 Conversion(Single Shot): 4 |SNAP(Stop Reg. updates): 29 \n");
dpandit1988 6:5d29fdcbae72 749 pc.printf("Start ADI1 Conversion(Continuous): 5 |UNSNAP(Resume Reg. updates): 30 \n");
dpandit1988 6:5d29fdcbae72 750 pc.printf("Start ADI2 Conversion(Continuous): 6 |Set Reset GPO Pins: 31 \n");
dpandit1988 6:5d29fdcbae72 751 pc.printf("Start ADI1 Redundant Conversion(Single Shot): 7 |GPIO SPI Write to Slave: 32 \n");
dpandit1988 6:5d29fdcbae72 752 pc.printf("Start ADI1 Redundant Conversion(Continuous): 8 |GPIO SPI Read from Slave: 33 \n");
sgarg2 9:0a4828d32e76 753 pc.printf("Read CR, VBAT & IVBAT Registers(Single Shot): 9 |GPIO I2C Write/Read to Slave: 34 \n");
sgarg2 9:0a4828d32e76 754 pc.printf("Read CR, VBAT & IVBAT Registers(Continuous): 10 | \n");
dpandit1988 6:5d29fdcbae72 755 pc.printf("Read Overcurrent ADC Register(Single Shot): 11 | \n");
dpandit1988 6:5d29fdcbae72 756 pc.printf("Read Overcurrent ADC Register(Continuous): 12 | \n");
dpandit1988 6:5d29fdcbae72 757 pc.printf("Read Average CR, VBAT & IVBAT Registers(Single Shot): 13 | \n");
dpandit1988 6:5d29fdcbae72 758 pc.printf("Read Average CR, VBAT & IVBAT Registers(Continuous): 14 | \n");
dpandit1988 6:5d29fdcbae72 759 pc.printf("Read All CR and VBAT Voltage Registers(Single Shot): 15 | \n");
dpandit1988 6:5d29fdcbae72 760 pc.printf("Read All CR and VBAT Voltage Registers(Continuous): 16 | \n");
dpandit1988 6:5d29fdcbae72 761 pc.printf("Start ADV All Channel Conversion: 17 | \n");
dpandit1988 6:5d29fdcbae72 762 pc.printf("Read All VR Registers(RDV commands): 18 | \n");
dpandit1988 6:5d29fdcbae72 763 pc.printf("Read All RVR Registers(RDRVA & RDRVB commands): 19 | \n");
dpandit1988 6:5d29fdcbae72 764 pc.printf("Read All VR & RVR Registers(RDV, RDRVA & RDRVB commands): 20 | \n");
dpandit1988 6:5d29fdcbae72 765 pc.printf("Read Voltage Registers(RDAUXC & RDAUXD commands)(NA): 21 | \n");
dpandit1988 6:5d29fdcbae72 766 pc.printf("Start ADAUX All Channel Conversion: 22 | \n");
dpandit1988 6:5d29fdcbae72 767 pc.printf("Read ADAUX Measurement: 23 | \n");
dpandit1988 6:5d29fdcbae72 768 pc.printf("Read Status C Register: 24 | \n");
dpandit1988 6:5d29fdcbae72 769 pc.printf("Read All Status Registers: 25 | \n");
dpandit1988 1:94a3e8fe5e25 770
dpandit1988 6:5d29fdcbae72 771 pc.printf("\n");
dpandit1988 6:5d29fdcbae72 772 pc.printf("Print '0' for menu\n");
dpandit1988 6:5d29fdcbae72 773 pc.printf("Please enter command: \n");
dpandit1988 6:5d29fdcbae72 774 pc.printf("\n\n");
dpandit1988 6:5d29fdcbae72 775 }
dpandit1988 1:94a3e8fe5e25 776 #else /* IAR */
dpandit1988 1:94a3e8fe5e25 777
dpandit1988 6:5d29fdcbae72 778 /**
dpandit1988 6:5d29fdcbae72 779 *******************************************************************************
dpandit1988 6:5d29fdcbae72 780 * Function: printWriteConfig
dpandit1988 6:5d29fdcbae72 781 * @brief Print write config A/B result.
dpandit1988 6:5d29fdcbae72 782 *
dpandit1988 6:5d29fdcbae72 783 * @details This function Print write config result into terminal.
dpandit1988 6:5d29fdcbae72 784 *
dpandit1988 6:5d29fdcbae72 785 * Parameters:
dpandit1988 6:5d29fdcbae72 786 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 787 *
dpandit1988 6:5d29fdcbae72 788 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 789 *
dpandit1988 6:5d29fdcbae72 790 * @param [in] type Enum type of resistor
dpandit1988 6:5d29fdcbae72 791 *
dpandit1988 6:5d29fdcbae72 792 * @param [in] grp Enum type of resistor group
dpandit1988 6:5d29fdcbae72 793 *
dpandit1988 6:5d29fdcbae72 794 * @return None
dpandit1988 6:5d29fdcbae72 795 *
dpandit1988 6:5d29fdcbae72 796 *******************************************************************************
dpandit1988 6:5d29fdcbae72 797 */
dpandit1988 6:5d29fdcbae72 798 void printWriteConfig(uint8_t tIC, cell_asic *IC, TYPE type, GRP grp)
dpandit1988 6:5d29fdcbae72 799 {
dpandit1988 6:5d29fdcbae72 800 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 801 {
dpandit1988 6:5d29fdcbae72 802 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 803 if(type == Config)
dpandit1988 1:94a3e8fe5e25 804 {
dpandit1988 6:5d29fdcbae72 805 if(grp == A)
dpandit1988 1:94a3e8fe5e25 806 {
dpandit1988 6:5d29fdcbae72 807 printf("Write Config A:\n");
dpandit1988 6:5d29fdcbae72 808 printf("0x%X, ", IC[ic].configa.tx_data[0]);
dpandit1988 6:5d29fdcbae72 809 printf("0x%X, ", IC[ic].configa.tx_data[1]);
dpandit1988 6:5d29fdcbae72 810 printf("0x%X, ", IC[ic].configa.tx_data[2]);
dpandit1988 6:5d29fdcbae72 811 printf("0x%X, ", IC[ic].configa.tx_data[3]);
dpandit1988 6:5d29fdcbae72 812 printf("0x%X, ", IC[ic].configa.tx_data[4]);
dpandit1988 6:5d29fdcbae72 813 printf("0x%X\n\n", IC[ic].configa.tx_data[5]);
dpandit1988 6:5d29fdcbae72 814 }
dpandit1988 6:5d29fdcbae72 815 else if(grp == B)
dpandit1988 6:5d29fdcbae72 816 {
dpandit1988 6:5d29fdcbae72 817 printf("Write Config B:\n");
dpandit1988 6:5d29fdcbae72 818 printf("0x%X, ", IC[ic].configb.tx_data[0]);
dpandit1988 6:5d29fdcbae72 819 printf("0x%X, ", IC[ic].configb.tx_data[1]);
dpandit1988 6:5d29fdcbae72 820 printf("0x%X, ", IC[ic].configb.tx_data[2]);
dpandit1988 6:5d29fdcbae72 821 printf("0x%X, ", IC[ic].configb.tx_data[3]);
dpandit1988 6:5d29fdcbae72 822 printf("0x%X, ", IC[ic].configb.tx_data[4]);
dpandit1988 6:5d29fdcbae72 823 printf("0x%X\n\n", IC[ic].configb.tx_data[5]);
dpandit1988 6:5d29fdcbae72 824 }
dpandit1988 6:5d29fdcbae72 825 else if(grp == ALL_GRP)
dpandit1988 6:5d29fdcbae72 826 {
dpandit1988 6:5d29fdcbae72 827 printf("Write Config A:\n");
dpandit1988 6:5d29fdcbae72 828 printf("0x%X, ", IC[ic].configa.tx_data[0]);
dpandit1988 6:5d29fdcbae72 829 printf("0x%X, ", IC[ic].configa.tx_data[1]);
dpandit1988 6:5d29fdcbae72 830 printf("0x%X, ", IC[ic].configa.tx_data[2]);
dpandit1988 6:5d29fdcbae72 831 printf("0x%X, ", IC[ic].configa.tx_data[3]);
dpandit1988 6:5d29fdcbae72 832 printf("0x%X, ", IC[ic].configa.tx_data[4]);
dpandit1988 6:5d29fdcbae72 833 printf("0x%X\n\n", IC[ic].configa.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 834
dpandit1988 6:5d29fdcbae72 835 printf("Write Config B:\n");
dpandit1988 6:5d29fdcbae72 836 printf("0x%X, ", IC[ic].configb.tx_data[0]);
dpandit1988 6:5d29fdcbae72 837 printf("0x%X, ", IC[ic].configb.tx_data[1]);
dpandit1988 6:5d29fdcbae72 838 printf("0x%X, ", IC[ic].configb.tx_data[2]);
dpandit1988 6:5d29fdcbae72 839 printf("0x%X, ", IC[ic].configb.tx_data[3]);
dpandit1988 6:5d29fdcbae72 840 printf("0x%X, ", IC[ic].configb.tx_data[4]);
dpandit1988 6:5d29fdcbae72 841 printf("0x%X\n\n", IC[ic].configb.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 842 }
dpandit1988 6:5d29fdcbae72 843 else{ printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 844 }
dpandit1988 1:94a3e8fe5e25 845 }
dpandit1988 6:5d29fdcbae72 846 }
dpandit1988 1:94a3e8fe5e25 847
dpandit1988 6:5d29fdcbae72 848 /**
dpandit1988 6:5d29fdcbae72 849 *******************************************************************************
dpandit1988 6:5d29fdcbae72 850 * Function: printReadConfig
dpandit1988 6:5d29fdcbae72 851 * @brief Print Read config A/B result.
dpandit1988 6:5d29fdcbae72 852 *
dpandit1988 6:5d29fdcbae72 853 * @details This function Print read config result into IAR I/O terminal.
dpandit1988 6:5d29fdcbae72 854 *
dpandit1988 6:5d29fdcbae72 855 * Parameters:
dpandit1988 6:5d29fdcbae72 856 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 857 *
dpandit1988 6:5d29fdcbae72 858 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 859 *
dpandit1988 6:5d29fdcbae72 860 * @param [in] TYPE Enum type of resistor
dpandit1988 6:5d29fdcbae72 861 *
dpandit1988 6:5d29fdcbae72 862 * @param [in] GRP Enum type of resistor group
dpandit1988 6:5d29fdcbae72 863 *
dpandit1988 6:5d29fdcbae72 864 * @return None
dpandit1988 6:5d29fdcbae72 865 *
dpandit1988 6:5d29fdcbae72 866 *******************************************************************************
dpandit1988 6:5d29fdcbae72 867 */
dpandit1988 6:5d29fdcbae72 868 void printReadConfig(uint8_t tIC, cell_asic *IC, TYPE type, GRP grp)
dpandit1988 6:5d29fdcbae72 869 {
dpandit1988 6:5d29fdcbae72 870 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 871 {
dpandit1988 6:5d29fdcbae72 872 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 873 if(type == Config)
dpandit1988 1:94a3e8fe5e25 874 {
dpandit1988 6:5d29fdcbae72 875 if(grp == A)
dpandit1988 1:94a3e8fe5e25 876 {
dpandit1988 6:5d29fdcbae72 877 printf("Read Config A:\n");
dpandit1988 6:5d29fdcbae72 878 printf("0x%X, ", IC[ic].configa.rx_data[0]);
dpandit1988 6:5d29fdcbae72 879 printf("0x%X, ", IC[ic].configa.rx_data[1]);
dpandit1988 6:5d29fdcbae72 880 printf("0x%X, ", IC[ic].configa.rx_data[2]);
dpandit1988 6:5d29fdcbae72 881 printf("0x%X, ", IC[ic].configa.rx_data[3]);
dpandit1988 6:5d29fdcbae72 882 printf("0x%X, ", IC[ic].configa.rx_data[4]);
dpandit1988 6:5d29fdcbae72 883 printf("0x%X, ", IC[ic].configa.rx_data[5]);
dpandit1988 1:94a3e8fe5e25 884 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 885 printf("PECError:%d\n\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 1:94a3e8fe5e25 886 }
dpandit1988 6:5d29fdcbae72 887 else if(grp == B)
dpandit1988 6:5d29fdcbae72 888 {
dpandit1988 6:5d29fdcbae72 889 printf("Read Config B:\n");
dpandit1988 6:5d29fdcbae72 890 printf("0x%X, ", IC[ic].configb.rx_data[0]);
dpandit1988 6:5d29fdcbae72 891 printf("0x%X, ", IC[ic].configb.rx_data[1]);
dpandit1988 6:5d29fdcbae72 892 printf("0x%X, ", IC[ic].configb.rx_data[2]);
dpandit1988 6:5d29fdcbae72 893 printf("0x%X, ", IC[ic].configb.rx_data[3]);
dpandit1988 6:5d29fdcbae72 894 printf("0x%X, ", IC[ic].configb.rx_data[4]);
dpandit1988 6:5d29fdcbae72 895 printf("0x%X, ", IC[ic].configb.rx_data[5]);
dpandit1988 6:5d29fdcbae72 896 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 897 printf("PECError:%d\n\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 6:5d29fdcbae72 898 }
dpandit1988 6:5d29fdcbae72 899 else if(grp == ALL_GRP)
dpandit1988 6:5d29fdcbae72 900 {
dpandit1988 6:5d29fdcbae72 901 printf("Read Config A:\n");
dpandit1988 6:5d29fdcbae72 902 printf("0x%X, ", IC[ic].configa.rx_data[0]);
dpandit1988 6:5d29fdcbae72 903 printf("0x%X, ", IC[ic].configa.rx_data[1]);
dpandit1988 6:5d29fdcbae72 904 printf("0x%X, ", IC[ic].configa.rx_data[2]);
dpandit1988 6:5d29fdcbae72 905 printf("0x%X, ", IC[ic].configa.rx_data[3]);
dpandit1988 6:5d29fdcbae72 906 printf("0x%X, ", IC[ic].configa.rx_data[4]);
dpandit1988 6:5d29fdcbae72 907 printf("0x%X, ", IC[ic].configa.rx_data[5]);
dpandit1988 6:5d29fdcbae72 908 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 909 printf("PECError:%d\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 1:94a3e8fe5e25 910
dpandit1988 6:5d29fdcbae72 911 printf("Read Config B:\n");
dpandit1988 6:5d29fdcbae72 912 printf("0x%X, ", IC[ic].configb.rx_data[0]);
dpandit1988 6:5d29fdcbae72 913 printf("0x%X, ", IC[ic].configb.rx_data[1]);
dpandit1988 6:5d29fdcbae72 914 printf("0x%X, ", IC[ic].configb.rx_data[2]);
dpandit1988 6:5d29fdcbae72 915 printf("0x%X, ", IC[ic].configb.rx_data[3]);
dpandit1988 6:5d29fdcbae72 916 printf("0x%X, ", IC[ic].configb.rx_data[4]);
dpandit1988 6:5d29fdcbae72 917 printf("0x%X, ", IC[ic].configb.rx_data[5]);
dpandit1988 6:5d29fdcbae72 918 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 919 printf("PECError:%d\n\n",IC[ic].cccrc.cfgr_pec);
dpandit1988 1:94a3e8fe5e25 920 }
dpandit1988 1:94a3e8fe5e25 921 else{ printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 922 }
dpandit1988 1:94a3e8fe5e25 923 }
dpandit1988 6:5d29fdcbae72 924 }
dpandit1988 1:94a3e8fe5e25 925
dpandit1988 6:5d29fdcbae72 926 /**
dpandit1988 6:5d29fdcbae72 927 *******************************************************************************
dpandit1988 6:5d29fdcbae72 928 * Function: PrintDeviceSID
dpandit1988 6:5d29fdcbae72 929 * @brief Print Device SID.
dpandit1988 6:5d29fdcbae72 930 *
dpandit1988 6:5d29fdcbae72 931 * @details This function Print Device SID into IAR I/O terminal.
dpandit1988 6:5d29fdcbae72 932 *
dpandit1988 6:5d29fdcbae72 933 * Parameters:
dpandit1988 6:5d29fdcbae72 934 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 935 *
dpandit1988 6:5d29fdcbae72 936 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 937 *
dpandit1988 6:5d29fdcbae72 938 * @param [in] type Enum type of resistor
dpandit1988 6:5d29fdcbae72 939 *
dpandit1988 6:5d29fdcbae72 940 * @return None
dpandit1988 6:5d29fdcbae72 941 *
dpandit1988 6:5d29fdcbae72 942 *******************************************************************************
dpandit1988 6:5d29fdcbae72 943 */
dpandit1988 6:5d29fdcbae72 944 void printDeviceSID(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 6:5d29fdcbae72 945 {
dpandit1988 6:5d29fdcbae72 946 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 947 {
dpandit1988 6:5d29fdcbae72 948 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 949 if(type == SID)
dpandit1988 1:94a3e8fe5e25 950 {
dpandit1988 6:5d29fdcbae72 951 printf("Read Device SID:\n");
dpandit1988 6:5d29fdcbae72 952 printf("0x%X, ", IC[ic].sid.sid[0]);
dpandit1988 6:5d29fdcbae72 953 printf("0x%X, ", IC[ic].sid.sid[1]);
dpandit1988 6:5d29fdcbae72 954 printf("0x%X, ", IC[ic].sid.sid[2]);
dpandit1988 6:5d29fdcbae72 955 printf("0x%X, ", IC[ic].sid.sid[3]);
dpandit1988 6:5d29fdcbae72 956 printf("0x%X, ", IC[ic].sid.sid[4]);
dpandit1988 6:5d29fdcbae72 957 printf("0x%X, ", IC[ic].sid.sid[5]);
dpandit1988 6:5d29fdcbae72 958 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 959 printf("PECError:%d\n\n",IC[ic].cccrc.sid_pec);
dpandit1988 1:94a3e8fe5e25 960 }
dpandit1988 6:5d29fdcbae72 961 else{ printf("Wrong Register Type Select\n"); }
dpandit1988 1:94a3e8fe5e25 962 }
dpandit1988 6:5d29fdcbae72 963 }
dpandit1988 1:94a3e8fe5e25 964
dpandit1988 6:5d29fdcbae72 965 /**
dpandit1988 6:5d29fdcbae72 966 *******************************************************************************
dpandit1988 6:5d29fdcbae72 967 * Function: printWriteCommData
dpandit1988 6:5d29fdcbae72 968 * @brief Print Write Comm data.
dpandit1988 6:5d29fdcbae72 969 *
dpandit1988 6:5d29fdcbae72 970 * @details This function Print write comm data.
dpandit1988 6:5d29fdcbae72 971 *
dpandit1988 6:5d29fdcbae72 972 * Parameters:
dpandit1988 6:5d29fdcbae72 973 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 974 *
dpandit1988 6:5d29fdcbae72 975 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 976 *
dpandit1988 6:5d29fdcbae72 977 * @param [in] type Enum type of resistor
dpandit1988 6:5d29fdcbae72 978 *
dpandit1988 6:5d29fdcbae72 979 * @return None
dpandit1988 6:5d29fdcbae72 980 *
dpandit1988 6:5d29fdcbae72 981 *******************************************************************************
dpandit1988 6:5d29fdcbae72 982 */
dpandit1988 6:5d29fdcbae72 983 void printWriteCommData(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 6:5d29fdcbae72 984 {
dpandit1988 6:5d29fdcbae72 985 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 986 {
dpandit1988 6:5d29fdcbae72 987 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 988 if(type == Comm)
dpandit1988 1:94a3e8fe5e25 989 {
dpandit1988 6:5d29fdcbae72 990 printf("Write Comm Data:\n");
dpandit1988 6:5d29fdcbae72 991 printf("0x%X, ", IC[ic].com.tx_data[0]);
dpandit1988 6:5d29fdcbae72 992 printf("0x%X, ", IC[ic].com.tx_data[1]);
dpandit1988 6:5d29fdcbae72 993 printf("0x%X, ", IC[ic].com.tx_data[2]);
dpandit1988 6:5d29fdcbae72 994 printf("0x%X, ", IC[ic].com.tx_data[3]);
dpandit1988 6:5d29fdcbae72 995 printf("0x%X, ", IC[ic].com.tx_data[4]);
dpandit1988 6:5d29fdcbae72 996 printf("0x%X\n\n", IC[ic].com.tx_data[5]);
dpandit1988 1:94a3e8fe5e25 997 }
dpandit1988 6:5d29fdcbae72 998 else{ printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 999 }
dpandit1988 6:5d29fdcbae72 1000 }
dpandit1988 1:94a3e8fe5e25 1001
dpandit1988 6:5d29fdcbae72 1002 /**
dpandit1988 6:5d29fdcbae72 1003 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1004 * Function: printReadCommData
dpandit1988 6:5d29fdcbae72 1005 * @brief Print Read Comm Data.
dpandit1988 6:5d29fdcbae72 1006 *
dpandit1988 6:5d29fdcbae72 1007 * @details This function print read comm data.
dpandit1988 6:5d29fdcbae72 1008 *
dpandit1988 6:5d29fdcbae72 1009 * Parameters:
dpandit1988 6:5d29fdcbae72 1010 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1011 *
dpandit1988 6:5d29fdcbae72 1012 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1013 *
dpandit1988 6:5d29fdcbae72 1014 * @param [in] type Enum type of resistor
dpandit1988 6:5d29fdcbae72 1015 *
dpandit1988 6:5d29fdcbae72 1016 * @return None
dpandit1988 6:5d29fdcbae72 1017 *
dpandit1988 6:5d29fdcbae72 1018 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1019 */
dpandit1988 6:5d29fdcbae72 1020 void printReadCommData(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 6:5d29fdcbae72 1021 {
dpandit1988 6:5d29fdcbae72 1022 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 1023 {
dpandit1988 6:5d29fdcbae72 1024 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1025 if(type == Comm)
dpandit1988 1:94a3e8fe5e25 1026 {
dpandit1988 6:5d29fdcbae72 1027 printf("Read Comm Data:\n");
dpandit1988 6:5d29fdcbae72 1028 printf("ICOM0:0x%X, ", IC[ic].rx_comm.icomm[0]);
dpandit1988 6:5d29fdcbae72 1029 printf("ICOM1:0x%X, ", IC[ic].rx_comm.icomm[1]);
dpandit1988 6:5d29fdcbae72 1030 printf("ICOM2:0x%X\n", IC[ic].rx_comm.icomm[2]);
dpandit1988 6:5d29fdcbae72 1031 printf("FCOM0:0x%X, ", IC[ic].rx_comm.fcomm[0]);
dpandit1988 6:5d29fdcbae72 1032 printf("FCOM1:0x%X, ", IC[ic].rx_comm.fcomm[1]);
dpandit1988 6:5d29fdcbae72 1033 printf("FCOM2:0x%X\n", IC[ic].rx_comm.fcomm[2]);
dpandit1988 6:5d29fdcbae72 1034 printf("DATA0:0x%X, ", IC[ic].rx_comm.data[0]);
dpandit1988 6:5d29fdcbae72 1035 printf("DATA1:0x%X, ", IC[ic].rx_comm.data[1]);
dpandit1988 6:5d29fdcbae72 1036 printf("DATA2:0x%X\n", IC[ic].rx_comm.data[2]);
dpandit1988 6:5d29fdcbae72 1037 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1038 printf("PECError:%d\n\n",IC[ic].cccrc.comm_pec);
dpandit1988 6:5d29fdcbae72 1039 }
dpandit1988 6:5d29fdcbae72 1040 else{ printf("Wrong Register Type Select\n"); }
dpandit1988 6:5d29fdcbae72 1041 }
dpandit1988 6:5d29fdcbae72 1042 }
dpandit1988 6:5d29fdcbae72 1043
dpandit1988 6:5d29fdcbae72 1044 /**
dpandit1988 6:5d29fdcbae72 1045 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1046 * Function: printCr
dpandit1988 6:5d29fdcbae72 1047 * @brief Print Current Result.
dpandit1988 6:5d29fdcbae72 1048 *
dpandit1988 6:5d29fdcbae72 1049 * @details This function Print current result into terminal.
dpandit1988 6:5d29fdcbae72 1050 *
dpandit1988 6:5d29fdcbae72 1051 * Parameters:
dpandit1988 6:5d29fdcbae72 1052 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1053 *
dpandit1988 6:5d29fdcbae72 1054 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1055 *
dpandit1988 6:5d29fdcbae72 1056 * @return None
dpandit1988 6:5d29fdcbae72 1057 *
dpandit1988 6:5d29fdcbae72 1058 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1059 */
dpandit1988 6:5d29fdcbae72 1060 void printCr(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 1061 {
dpandit1988 6:5d29fdcbae72 1062 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 1063 {
dpandit1988 6:5d29fdcbae72 1064 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1065 printf("Read Current:\n");
dpandit1988 6:5d29fdcbae72 1066 printf("I1:%fmV, ", getCurrent(IC[ic].i.i1));
dpandit1988 6:5d29fdcbae72 1067 printf("I2:%fmV\n", getCurrent(IC[ic].i.i2));
dpandit1988 6:5d29fdcbae72 1068 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1069 printf("PECError:%d\n\n",IC[ic].cccrc.cr_pec);
dpandit1988 6:5d29fdcbae72 1070 }
dpandit1988 6:5d29fdcbae72 1071 }
dpandit1988 6:5d29fdcbae72 1072
dpandit1988 6:5d29fdcbae72 1073 /**
dpandit1988 6:5d29fdcbae72 1074 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1075 * Function: printVoltages
dpandit1988 6:5d29fdcbae72 1076 * @brief Print Voltages.
dpandit1988 6:5d29fdcbae72 1077 *
dpandit1988 6:5d29fdcbae72 1078 * @details This function Print Voltages into terminal.
dpandit1988 6:5d29fdcbae72 1079 *
dpandit1988 6:5d29fdcbae72 1080 * Parameters:
dpandit1988 6:5d29fdcbae72 1081 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1082 *
dpandit1988 6:5d29fdcbae72 1083 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1084 *
dpandit1988 6:5d29fdcbae72 1085 * @param [in] type Enum type of resistor group
dpandit1988 6:5d29fdcbae72 1086 *
dpandit1988 6:5d29fdcbae72 1087 * @return None
dpandit1988 6:5d29fdcbae72 1088 *
dpandit1988 6:5d29fdcbae72 1089 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1090 */
dpandit1988 6:5d29fdcbae72 1091 void printVoltage(uint8_t tIC, cell_asic *IC, TYPE type)
dpandit1988 6:5d29fdcbae72 1092 {
dpandit1988 6:5d29fdcbae72 1093 float voltage;
dpandit1988 6:5d29fdcbae72 1094 uint16_t temp;
dpandit1988 6:5d29fdcbae72 1095 uint8_t channel;
dpandit1988 6:5d29fdcbae72 1096 uint8_t flag = 0;
dpandit1988 6:5d29fdcbae72 1097 if((type == Vr)){channel = VR_SIZE;}
dpandit1988 6:5d29fdcbae72 1098 else if((type == Vrx)){channel = VRX_SIZE;}
dpandit1988 6:5d29fdcbae72 1099 else if (type == Rvr){ channel = RVR_SIZE;}
dpandit1988 6:5d29fdcbae72 1100 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 1101 {
dpandit1988 6:5d29fdcbae72 1102 printf("IC%d: \n",(ic+1));
dpandit1988 6:5d29fdcbae72 1103 for(uint8_t index = 0; index < channel; index++)
dpandit1988 6:5d29fdcbae72 1104 {
dpandit1988 6:5d29fdcbae72 1105 if(type == Vr){ temp = IC[ic].vr.v_codes[index];}
dpandit1988 6:5d29fdcbae72 1106 else if(type == Vrx){ temp = IC[ic].vrx.vx_codes[index]; }
dpandit1988 6:5d29fdcbae72 1107 else if(type == Rvr){ temp = IC[ic].rvr.redv_codes[index]; }
dpandit1988 6:5d29fdcbae72 1108 voltage = getVoltage(temp);
dpandit1988 6:5d29fdcbae72 1109 if(type == Vr)
dpandit1988 1:94a3e8fe5e25 1110 {
dpandit1988 6:5d29fdcbae72 1111 if(index == 8)
dpandit1988 1:94a3e8fe5e25 1112 {
dpandit1988 6:5d29fdcbae72 1113 printf("VREF2A = %7.4fV \n", voltage);
dpandit1988 6:5d29fdcbae72 1114 flag = 1;
dpandit1988 6:5d29fdcbae72 1115 }
dpandit1988 6:5d29fdcbae72 1116 else if(index == (channel-1))
dpandit1988 6:5d29fdcbae72 1117 {
dpandit1988 6:5d29fdcbae72 1118 printf("VREF2B = %7.4fV \n", voltage);
dpandit1988 6:5d29fdcbae72 1119 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1120 printf("PECError:%d",IC[ic].cccrc.vr_pec);
dpandit1988 6:5d29fdcbae72 1121 }
dpandit1988 6:5d29fdcbae72 1122 else
dpandit1988 6:5d29fdcbae72 1123 {
dpandit1988 6:5d29fdcbae72 1124 if(flag == 1)
dpandit1988 1:94a3e8fe5e25 1125 {
dpandit1988 6:5d29fdcbae72 1126 printf("V%2d = %7.4fV \n", index, voltage);
dpandit1988 1:94a3e8fe5e25 1127 }
dpandit1988 6:5d29fdcbae72 1128 else{printf("V%2d = %7.4fV \n",(index+1), voltage);}
dpandit1988 1:94a3e8fe5e25 1129 }
dpandit1988 6:5d29fdcbae72 1130 }
dpandit1988 6:5d29fdcbae72 1131 else if(type == Vrx)
dpandit1988 6:5d29fdcbae72 1132 {
dpandit1988 6:5d29fdcbae72 1133 if(index == 4){printf("VREF2A = %7.4fV \n", voltage);}
dpandit1988 6:5d29fdcbae72 1134 else if(index == (channel-1))
dpandit1988 6:5d29fdcbae72 1135 {
dpandit1988 6:5d29fdcbae72 1136 printf("VREF2B = %7.4fV \n", voltage);
dpandit1988 6:5d29fdcbae72 1137 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1138 printf("PECError:%d",IC[ic].cccrc.vrx_pec);
dpandit1988 6:5d29fdcbae72 1139 }
dpandit1988 6:5d29fdcbae72 1140 else{printf("V%2d = %7.4fV \n",(index+7), voltage);}
dpandit1988 1:94a3e8fe5e25 1141 }
dpandit1988 6:5d29fdcbae72 1142 else if(type == Rvr)
dpandit1988 6:5d29fdcbae72 1143 {
dpandit1988 6:5d29fdcbae72 1144 printf("V%dR=%fV \n",(index+1), voltage);
dpandit1988 6:5d29fdcbae72 1145 if(index == (channel-1))
dpandit1988 6:5d29fdcbae72 1146 {
dpandit1988 6:5d29fdcbae72 1147 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1148 printf("PECError:%d",IC[ic].cccrc.rvr_pec);
dpandit1988 6:5d29fdcbae72 1149 }
dpandit1988 6:5d29fdcbae72 1150 }
dpandit1988 6:5d29fdcbae72 1151 else{printf("Wrong Register Group Select\n");}
dpandit1988 1:94a3e8fe5e25 1152 }
dpandit1988 6:5d29fdcbae72 1153 printf("\n\n");
dpandit1988 1:94a3e8fe5e25 1154 }
dpandit1988 6:5d29fdcbae72 1155 }
dpandit1988 1:94a3e8fe5e25 1156
dpandit1988 6:5d29fdcbae72 1157 /**
dpandit1988 6:5d29fdcbae72 1158 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1159 * Function: printVbat
dpandit1988 6:5d29fdcbae72 1160 * @brief Print VBAT Result.
dpandit1988 6:5d29fdcbae72 1161 *
dpandit1988 6:5d29fdcbae72 1162 * @details This function Print the VBAT result into terminal.
dpandit1988 6:5d29fdcbae72 1163 *
dpandit1988 6:5d29fdcbae72 1164 * Parameters:
dpandit1988 6:5d29fdcbae72 1165 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1166 *
dpandit1988 6:5d29fdcbae72 1167 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1168 *
dpandit1988 6:5d29fdcbae72 1169 * @return None
dpandit1988 6:5d29fdcbae72 1170 *
dpandit1988 6:5d29fdcbae72 1171 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1172 */
dpandit1988 6:5d29fdcbae72 1173 void printVbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 1174 {
dpandit1988 6:5d29fdcbae72 1175 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 1176 {
dpandit1988 6:5d29fdcbae72 1177 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1178 printf("Read VBAT:\n");
dpandit1988 6:5d29fdcbae72 1179 printf("VBAT1: %fV, ", getVoltage(IC[ic].vbat.vbat1));
dpandit1988 6:5d29fdcbae72 1180 printf("VBAT2: %fV, ", getVoltage(IC[ic].vbat.vbat2));
dpandit1988 6:5d29fdcbae72 1181 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1182 printf("PECError:%d\n\n",IC[ic].cccrc.vbat_pec);
dpandit1988 6:5d29fdcbae72 1183 }
dpandit1988 6:5d29fdcbae72 1184 }
dpandit1988 6:5d29fdcbae72 1185
dpandit1988 6:5d29fdcbae72 1186 /**
dpandit1988 6:5d29fdcbae72 1187 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1188 * Function: printIvbat
dpandit1988 6:5d29fdcbae72 1189 * @brief Print IVBAT result.
dpandit1988 6:5d29fdcbae72 1190 *
dpandit1988 6:5d29fdcbae72 1191 * @details This function Print the IVBAT result into terminal.
dpandit1988 6:5d29fdcbae72 1192 *
dpandit1988 6:5d29fdcbae72 1193 * Parameters:
dpandit1988 6:5d29fdcbae72 1194 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1195 *
dpandit1988 6:5d29fdcbae72 1196 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1197 *
dpandit1988 6:5d29fdcbae72 1198 * @return None
dpandit1988 6:5d29fdcbae72 1199 *
dpandit1988 6:5d29fdcbae72 1200 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1201 */
dpandit1988 6:5d29fdcbae72 1202 void printIvbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 1203 {
dpandit1988 6:5d29fdcbae72 1204 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 1205 {
dpandit1988 6:5d29fdcbae72 1206 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1207 printf("Read IVBAT:\n");
dpandit1988 6:5d29fdcbae72 1208 printf("I1:%fmV, ", getCurrent(IC[ic].ivbat.i1));
dpandit1988 6:5d29fdcbae72 1209 printf("VBAT1%fV, ", getVoltage(IC[ic].ivbat.vbat1));
dpandit1988 6:5d29fdcbae72 1210 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1211 printf("PECError:%d\n\n",IC[ic].cccrc.ivbat_pec);
dpandit1988 1:94a3e8fe5e25 1212 }
dpandit1988 6:5d29fdcbae72 1213 }
dpandit1988 6:5d29fdcbae72 1214
dpandit1988 6:5d29fdcbae72 1215 /**
dpandit1988 6:5d29fdcbae72 1216 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1217 * Function: printAvgVbat
dpandit1988 6:5d29fdcbae72 1218 * @brief Print AVGVBAT result.
dpandit1988 6:5d29fdcbae72 1219 *
dpandit1988 6:5d29fdcbae72 1220 * @details This function Print the avgvbat result into terminal.
dpandit1988 6:5d29fdcbae72 1221 *
dpandit1988 6:5d29fdcbae72 1222 * Parameters:
dpandit1988 6:5d29fdcbae72 1223 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1224 *
dpandit1988 6:5d29fdcbae72 1225 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1226 *
dpandit1988 6:5d29fdcbae72 1227 * @return None
dpandit1988 6:5d29fdcbae72 1228 *
dpandit1988 6:5d29fdcbae72 1229 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1230 */
dpandit1988 6:5d29fdcbae72 1231 void printAvgVbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 1232 {
dpandit1988 6:5d29fdcbae72 1233 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 1234 {
dpandit1988 6:5d29fdcbae72 1235 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1236 printf("Read AvgVbat:\n");
dpandit1988 6:5d29fdcbae72 1237 printf("VB1AVG:%fV, ", getAvgVbat(IC[ic].vbavg.vb1avg));
dpandit1988 6:5d29fdcbae72 1238 printf("VB2AVG:%fV, ", getAvgVbat(IC[ic].vbavg.vb2avg));
dpandit1988 6:5d29fdcbae72 1239 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1240 printf("PECError:%d\n\n",IC[ic].cccrc.avgvbat_pec);
dpandit1988 6:5d29fdcbae72 1241 }
dpandit1988 6:5d29fdcbae72 1242 }
dpandit1988 1:94a3e8fe5e25 1243
dpandit1988 6:5d29fdcbae72 1244 /**
dpandit1988 6:5d29fdcbae72 1245 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1246 * Function: printAvgIVbat
dpandit1988 6:5d29fdcbae72 1247 * @brief Print AVGIVBAT result.
dpandit1988 6:5d29fdcbae72 1248 *
dpandit1988 6:5d29fdcbae72 1249 * @details This function Print the avgivbat result into terminal.
dpandit1988 6:5d29fdcbae72 1250 *
dpandit1988 6:5d29fdcbae72 1251 * Parameters:
dpandit1988 6:5d29fdcbae72 1252 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1253 *
dpandit1988 6:5d29fdcbae72 1254 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1255 *
dpandit1988 6:5d29fdcbae72 1256 * @return None
dpandit1988 6:5d29fdcbae72 1257 *
dpandit1988 6:5d29fdcbae72 1258 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1259 */
dpandit1988 6:5d29fdcbae72 1260 void printAvgIVbat(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 1261 {
dpandit1988 6:5d29fdcbae72 1262 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 1263 {
dpandit1988 6:5d29fdcbae72 1264 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1265 printf("Read AvgIVbat:\n");
dpandit1988 6:5d29fdcbae72 1266 printf("I1AVG:%fmV, ", getAvgCurrent(IC[ic].i_vbavg.i1avg));
dpandit1988 6:5d29fdcbae72 1267 printf("VB1AVG%fV, ", getAvgVbat(IC[ic].i_vbavg.vb1avg));
dpandit1988 6:5d29fdcbae72 1268 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1269 printf("PECError:%d\n\n",IC[ic].cccrc.avgivbat_pec);
dpandit1988 1:94a3e8fe5e25 1270 }
dpandit1988 6:5d29fdcbae72 1271 }
dpandit1988 6:5d29fdcbae72 1272
dpandit1988 6:5d29fdcbae72 1273 /**
dpandit1988 6:5d29fdcbae72 1274 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1275 * Function: printAvgCr
dpandit1988 6:5d29fdcbae72 1276 * @brief Print IAVG result.
dpandit1988 6:5d29fdcbae72 1277 *
dpandit1988 6:5d29fdcbae72 1278 * @details This function Print the iavg result into terminal.
dpandit1988 6:5d29fdcbae72 1279 *
dpandit1988 6:5d29fdcbae72 1280 * Parameters:
dpandit1988 6:5d29fdcbae72 1281 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1282 *
dpandit1988 6:5d29fdcbae72 1283 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1284 *
dpandit1988 6:5d29fdcbae72 1285 * @return None
dpandit1988 6:5d29fdcbae72 1286 *
dpandit1988 6:5d29fdcbae72 1287 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1288 */
dpandit1988 6:5d29fdcbae72 1289 void printAvgCr(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 1290 {
dpandit1988 6:5d29fdcbae72 1291 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 1292 {
dpandit1988 6:5d29fdcbae72 1293 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1294 printf("Read AvgCr:\n");
dpandit1988 6:5d29fdcbae72 1295 printf("I1AVG:%fmV, ", getAvgCurrent(IC[ic].iavg.i1avg));
dpandit1988 6:5d29fdcbae72 1296 printf("I2AVG:%fmV, ", getAvgCurrent(IC[ic].iavg.i2avg));
dpandit1988 6:5d29fdcbae72 1297 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1298 printf("PECError:%d\n\n",IC[ic].cccrc.avgcr_pec);
dpandit1988 6:5d29fdcbae72 1299 }
dpandit1988 6:5d29fdcbae72 1300 }
dpandit1988 1:94a3e8fe5e25 1301
dpandit1988 6:5d29fdcbae72 1302 /**
dpandit1988 6:5d29fdcbae72 1303 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1304 * Function: printOc
dpandit1988 6:5d29fdcbae72 1305 * @brief Print OC result.
dpandit1988 6:5d29fdcbae72 1306 *
dpandit1988 6:5d29fdcbae72 1307 * @details This function Print the oc result into terminal.
dpandit1988 6:5d29fdcbae72 1308 *
dpandit1988 6:5d29fdcbae72 1309 * Parameters:
dpandit1988 6:5d29fdcbae72 1310 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1311 *
dpandit1988 6:5d29fdcbae72 1312 * @param [in] *ic cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1313 *
dpandit1988 6:5d29fdcbae72 1314 * @return None
dpandit1988 6:5d29fdcbae72 1315 *
dpandit1988 6:5d29fdcbae72 1316 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1317 */
dpandit1988 6:5d29fdcbae72 1318 void printOc(uint8_t tIC, cell_asic *IC)
dpandit1988 6:5d29fdcbae72 1319 {
dpandit1988 6:5d29fdcbae72 1320 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 1:94a3e8fe5e25 1321 {
dpandit1988 6:5d29fdcbae72 1322 printf("Read OCR:\n");
dpandit1988 6:5d29fdcbae72 1323 printf("OC1R: %fmV, ", getOverCurrent(IC[ic].oc.oc1r));
dpandit1988 6:5d29fdcbae72 1324 printf("OC2R: %fmV, ", getOverCurrent(IC[ic].oc.oc2r));
dpandit1988 6:5d29fdcbae72 1325 printf("CCount:%d,",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1326 printf("PECError:%d\n\n",IC[ic].cccrc.oc_pec);
dpandit1988 6:5d29fdcbae72 1327 }
dpandit1988 6:5d29fdcbae72 1328 }
dpandit1988 6:5d29fdcbae72 1329
dpandit1988 6:5d29fdcbae72 1330 /**
dpandit1988 6:5d29fdcbae72 1331 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1332 * Function: PrintStatus
dpandit1988 6:5d29fdcbae72 1333 * @brief Print status reg. result.
dpandit1988 6:5d29fdcbae72 1334 *
dpandit1988 6:5d29fdcbae72 1335 * @details This function Print status result into terminal.
dpandit1988 6:5d29fdcbae72 1336 *
dpandit1988 6:5d29fdcbae72 1337 * Parameters:
dpandit1988 6:5d29fdcbae72 1338 * @param [in] tIC Total IC
dpandit1988 6:5d29fdcbae72 1339 *
dpandit1988 6:5d29fdcbae72 1340 * @param [in] *IC cell_asic stucture pointer
dpandit1988 6:5d29fdcbae72 1341 *
dpandit1988 6:5d29fdcbae72 1342 * @param [in] type Enum type of resistor
dpandit1988 6:5d29fdcbae72 1343 *
dpandit1988 6:5d29fdcbae72 1344 * @param [in] grp Enum type of resistor group
dpandit1988 6:5d29fdcbae72 1345 *
dpandit1988 6:5d29fdcbae72 1346 * @return None
dpandit1988 6:5d29fdcbae72 1347 *
dpandit1988 6:5d29fdcbae72 1348 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1349 */
dpandit1988 6:5d29fdcbae72 1350
dpandit1988 6:5d29fdcbae72 1351 void printStatus(uint8_t tIC, cell_asic *IC, TYPE type, GRP grp)
dpandit1988 6:5d29fdcbae72 1352 {
dpandit1988 6:5d29fdcbae72 1353 float voltage;
dpandit1988 6:5d29fdcbae72 1354 for(uint8_t ic = 0; ic < tIC; ic++)
dpandit1988 6:5d29fdcbae72 1355 {
dpandit1988 6:5d29fdcbae72 1356 printf("IC%d:\n",(ic+1));
dpandit1988 6:5d29fdcbae72 1357 if(type == Status)
dpandit1988 1:94a3e8fe5e25 1358 {
dpandit1988 6:5d29fdcbae72 1359 if(grp == A)
dpandit1988 6:5d29fdcbae72 1360 {
dpandit1988 6:5d29fdcbae72 1361 printf("Status A:\n");
dpandit1988 6:5d29fdcbae72 1362 voltage = getVoltage(IC[ic].stata.vref1p25);
dpandit1988 6:5d29fdcbae72 1363 printf("VREF1P25:%fV, ", voltage);
dpandit1988 6:5d29fdcbae72 1364 printf("ITMP:%f°C, ", (((IC[ic].stata.itmp * 150e-6 )+ 1.5)/0.0075)-273);
dpandit1988 6:5d29fdcbae72 1365 voltage = getVoltage(IC[ic].stata.vreg2);
dpandit1988 6:5d29fdcbae72 1366 printf("VREG2:%fV\n", (voltage + 1.5));
dpandit1988 6:5d29fdcbae72 1367 printf("CCount:%d, ",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1368 printf("PECError:%d\n\n",IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 1369 }
dpandit1988 6:5d29fdcbae72 1370 else if(grp == B)
dpandit1988 6:5d29fdcbae72 1371 {
dpandit1988 6:5d29fdcbae72 1372 printf("Status B:\n");
dpandit1988 6:5d29fdcbae72 1373 printf("OC1MIN:0x%X, ", IC[ic].statb.oc1min);
dpandit1988 6:5d29fdcbae72 1374 printf("OC1MAX:0x%X, ", IC[ic].statb.oc1max);
dpandit1988 6:5d29fdcbae72 1375 printf("OC2MIN:0x%X, ", IC[ic].statb.oc2min);
dpandit1988 6:5d29fdcbae72 1376 printf("OC2MAX:0x%X\n", IC[ic].statb.oc2max);
dpandit1988 6:5d29fdcbae72 1377 printf("CCount:%d, ",IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1378 printf("PECError:%d\n\n",IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 1379 }
dpandit1988 6:5d29fdcbae72 1380 else if(grp == C)
dpandit1988 6:5d29fdcbae72 1381 {
dpandit1988 6:5d29fdcbae72 1382 printf("Status C:\n");
dpandit1988 6:5d29fdcbae72 1383 printf("OC1A:0x%X, ", IC[ic].statc.oc1a);
dpandit1988 6:5d29fdcbae72 1384 printf("~OC1A:0x%X, ", IC[ic].statc.oc1a_inv);
dpandit1988 6:5d29fdcbae72 1385 printf("OC2A:0x%X, ", IC[ic].statc.oc2a);
dpandit1988 6:5d29fdcbae72 1386 printf("~OC2A:0x%X, ", IC[ic].statc.oc2a_inv);
dpandit1988 6:5d29fdcbae72 1387 printf("CT:0x%X, ", IC[ic].statc.ct);
dpandit1988 6:5d29fdcbae72 1388 printf("CTS:0x%X\n", IC[ic].statc.cts);
dpandit1988 1:94a3e8fe5e25 1389
dpandit1988 6:5d29fdcbae72 1390 printf("VA_OV:0x%X, ", IC[ic].statc.va_ov);
dpandit1988 6:5d29fdcbae72 1391 printf("VA_UV:0x%X ", IC[ic].statc.va_uv);
dpandit1988 6:5d29fdcbae72 1392 printf("VD_OV:0x%X, ", IC[ic].statc.vd_ov);
dpandit1988 6:5d29fdcbae72 1393 printf("VD_UV:0x%X, ", IC[ic].statc.vd_uv);
dpandit1988 6:5d29fdcbae72 1394 printf("OTP1_ED:0x%X, ", IC[ic].statc.otp1_ed);
dpandit1988 6:5d29fdcbae72 1395 printf("OTP1_MED:0x%X, ", IC[ic].statc.otp1_med);
dpandit1988 6:5d29fdcbae72 1396 printf("OTP2_ED:0x%X, ", IC[ic].statc.otp2_ed);
dpandit1988 6:5d29fdcbae72 1397 printf("OTP2_MED:0x%X\n", IC[ic].statc.otp2_med);
dpandit1988 6:5d29fdcbae72 1398
dpandit1988 6:5d29fdcbae72 1399 printf("VDE:0x%X, ", IC[ic].statc.vde);
dpandit1988 6:5d29fdcbae72 1400 printf("VDE1:0x%X, ", IC[ic].statc.vdel);
dpandit1988 6:5d29fdcbae72 1401 printf("INSYNC:0x%X, ", IC[ic].statc.insync);
dpandit1988 6:5d29fdcbae72 1402 printf("SPIFLT:0x%X, ", IC[ic].statc.spiflt);
dpandit1988 6:5d29fdcbae72 1403 printf("SLEEP:0x%X, ", IC[ic].statc.sleep);
dpandit1988 6:5d29fdcbae72 1404 printf("THSD:0x%X, ", IC[ic].statc.thsd);
dpandit1988 6:5d29fdcbae72 1405 printf("TMODCHK:0x%X, ", IC[ic].statc.tmodchk);
dpandit1988 6:5d29fdcbae72 1406 printf("OSCCHK:0x%X\n", IC[ic].statc.oscchk);
dpandit1988 1:94a3e8fe5e25 1407
dpandit1988 6:5d29fdcbae72 1408 printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1409 printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 1410 }
dpandit1988 6:5d29fdcbae72 1411 else if(grp == D)
dpandit1988 6:5d29fdcbae72 1412 {
dpandit1988 6:5d29fdcbae72 1413 printf("Status D:\n");
dpandit1988 6:5d29fdcbae72 1414 printf("OC_CNTR:0x%X, ", IC[ic].statd.oc_cntr);
dpandit1988 6:5d29fdcbae72 1415 printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1416 printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 1417 }
dpandit1988 6:5d29fdcbae72 1418 else if(grp == E)
dpandit1988 6:5d29fdcbae72 1419 {
dpandit1988 6:5d29fdcbae72 1420 printf("Status E:\n");
dpandit1988 6:5d29fdcbae72 1421 printf("GPIO:0x%X, ", IC[ic].state.gpio);
dpandit1988 6:5d29fdcbae72 1422 printf("GPO:0x%X, ", IC[ic].state.gpo);
dpandit1988 6:5d29fdcbae72 1423 printf("REV_ID:0x%X\n", IC[ic].state.rev);
dpandit1988 6:5d29fdcbae72 1424 printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1425 printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 1426 }
dpandit1988 6:5d29fdcbae72 1427 else if(grp == ALL_GRP)
dpandit1988 6:5d29fdcbae72 1428 {
dpandit1988 6:5d29fdcbae72 1429 printf("Status A:\n");
dpandit1988 6:5d29fdcbae72 1430 voltage = getVoltage(IC[ic].stata.vref1p25);
dpandit1988 6:5d29fdcbae72 1431 printf("VREF1P25:%fV, ", voltage);
dpandit1988 6:5d29fdcbae72 1432 printf("ITMP:%f°C, ", (((IC[ic].stata.itmp * 150e-6 )+ 1.5)/0.0075)-273);
dpandit1988 6:5d29fdcbae72 1433 voltage = getVoltage(IC[ic].stata.vreg2);
dpandit1988 6:5d29fdcbae72 1434 printf("VREG2:%fV\n", (voltage + 1.5));
dpandit1988 6:5d29fdcbae72 1435
dpandit1988 6:5d29fdcbae72 1436 printf("Status B:\n");
dpandit1988 6:5d29fdcbae72 1437 printf("OC1MIN:0x%X, ", IC[ic].statb.oc1min);
dpandit1988 6:5d29fdcbae72 1438 printf("OC1MAX:0x%X, ", IC[ic].statb.oc1max);
dpandit1988 6:5d29fdcbae72 1439 printf("OC2MIN:0x%X, ", IC[ic].statb.oc2min);
dpandit1988 6:5d29fdcbae72 1440 printf("OC2MAX:0x%X\n", IC[ic].statb.oc2max);
dpandit1988 6:5d29fdcbae72 1441
dpandit1988 6:5d29fdcbae72 1442 printf("Status C:\n");
dpandit1988 6:5d29fdcbae72 1443 printf("OC1A:0x%X, ", IC[ic].statc.oc1a);
dpandit1988 6:5d29fdcbae72 1444 printf("~OC1A:0x%X, ", IC[ic].statc.oc1a_inv);
dpandit1988 6:5d29fdcbae72 1445 printf("OC2A:0x%X, ", IC[ic].statc.oc2a);
dpandit1988 6:5d29fdcbae72 1446 printf("~OC2A:0x%X, ", IC[ic].statc.oc2a_inv);
dpandit1988 6:5d29fdcbae72 1447 printf("CT:0x%X, ", IC[ic].statc.ct);
dpandit1988 6:5d29fdcbae72 1448 printf("CTS:0x%X\n", IC[ic].statc.cts);
dpandit1988 6:5d29fdcbae72 1449 printf("VA_OV:0x%X, ", IC[ic].statc.va_ov);
dpandit1988 6:5d29fdcbae72 1450 printf("VA_UV:0x%X ", IC[ic].statc.va_uv);
dpandit1988 6:5d29fdcbae72 1451 printf("VD_OV:0x%X, ", IC[ic].statc.vd_ov);
dpandit1988 6:5d29fdcbae72 1452 printf("VD_UV:0x%X, ", IC[ic].statc.vd_uv);
dpandit1988 6:5d29fdcbae72 1453 printf("OTP1_ED:0x%X, ", IC[ic].statc.otp1_ed);
dpandit1988 6:5d29fdcbae72 1454 printf("OTP1_MED:0x%X, ", IC[ic].statc.otp1_med);
dpandit1988 6:5d29fdcbae72 1455 printf("OTP2_ED:0x%X, ", IC[ic].statc.otp2_ed);
dpandit1988 6:5d29fdcbae72 1456 printf("OTP2_MED:0x%X\n", IC[ic].statc.otp2_med);
dpandit1988 6:5d29fdcbae72 1457 printf("VDE:0x%X, ", IC[ic].statc.vde);
dpandit1988 6:5d29fdcbae72 1458 printf("VDE1:0x%X, ", IC[ic].statc.vdel);
dpandit1988 6:5d29fdcbae72 1459 printf("INSYNC:0x%X, ", IC[ic].statc.insync);
dpandit1988 6:5d29fdcbae72 1460 printf("SPIFLT:0x%X, ", IC[ic].statc.spiflt);
dpandit1988 6:5d29fdcbae72 1461 printf("SLEEP:0x%X, ", IC[ic].statc.sleep);
dpandit1988 6:5d29fdcbae72 1462 printf("THSD:0x%X, ", IC[ic].statc.thsd);
dpandit1988 6:5d29fdcbae72 1463 printf("TMODCHK:0x%X, ", IC[ic].statc.tmodchk);
dpandit1988 6:5d29fdcbae72 1464 printf("OSCCHK:0x%X\n", IC[ic].statc.oscchk);
dpandit1988 6:5d29fdcbae72 1465
dpandit1988 6:5d29fdcbae72 1466 printf("Status D:\n");
dpandit1988 6:5d29fdcbae72 1467 printf("OC_CNTR:0x%X\n", IC[ic].statd.oc_cntr);
dpandit1988 6:5d29fdcbae72 1468
dpandit1988 6:5d29fdcbae72 1469 printf("Status E:\n");
dpandit1988 6:5d29fdcbae72 1470 printf("GPIO:0x%X, ", IC[ic].state.gpio);
dpandit1988 6:5d29fdcbae72 1471 printf("GPO:0x%X, ", IC[ic].state.gpo);
dpandit1988 6:5d29fdcbae72 1472 printf("REV_ID:0x%X\n", IC[ic].state.rev);
dpandit1988 6:5d29fdcbae72 1473 printf("CCount:%d, ", IC[ic].cccrc.cmd_cntr);
dpandit1988 6:5d29fdcbae72 1474 printf("PECError:%d\n\n", IC[ic].cccrc.stat_pec);
dpandit1988 6:5d29fdcbae72 1475 }
dpandit1988 6:5d29fdcbae72 1476 else{ printf("Wrong Register Group Select\n"); }
dpandit1988 1:94a3e8fe5e25 1477 }
dpandit1988 1:94a3e8fe5e25 1478 }
dpandit1988 6:5d29fdcbae72 1479 }
dpandit1988 1:94a3e8fe5e25 1480
dpandit1988 6:5d29fdcbae72 1481 /**
dpandit1988 6:5d29fdcbae72 1482 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1483 * Function: printMenu
dpandit1988 6:5d29fdcbae72 1484 * @brief Print Command Menu.
dpandit1988 6:5d29fdcbae72 1485 *
dpandit1988 6:5d29fdcbae72 1486 * @details This function print all command menu.
dpandit1988 6:5d29fdcbae72 1487 *
dpandit1988 6:5d29fdcbae72 1488 * @return None
dpandit1988 6:5d29fdcbae72 1489 *
dpandit1988 6:5d29fdcbae72 1490 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1491 */
dpandit1988 6:5d29fdcbae72 1492 void printMenu()
dpandit1988 6:5d29fdcbae72 1493 {
dpandit1988 6:5d29fdcbae72 1494 printf("List of ADBMS2950 Command:\n");
dpandit1988 6:5d29fdcbae72 1495 printf("Write and Read Configuration: 1 |Read Device SID: 26 \n");
dpandit1988 6:5d29fdcbae72 1496 printf("Read Configuration: 2 |Soft Reset: 27 \n");
dpandit1988 6:5d29fdcbae72 1497 printf("Start ADI1 Conversion(Single Shot): 3 |Reset cmd counter: 28 \n");
dpandit1988 6:5d29fdcbae72 1498 printf("Start ADI2 Conversion(Single Shot): 4 |SNAP(Stop Reg. updates): 29 \n");
dpandit1988 6:5d29fdcbae72 1499 printf("Start ADI1 Conversion(Continuous): 5 |UNSNAP(Resume Reg. updates): 30 \n");
dpandit1988 6:5d29fdcbae72 1500 printf("Start ADI2 Conversion(Continuous): 6 |Set Reset GPO Pins: 31 \n");
dpandit1988 6:5d29fdcbae72 1501 printf("Start ADI1 Redundant Conversion(Single Shot): 7 |GPIO SPI Write to Slave: 32 \n");
dpandit1988 6:5d29fdcbae72 1502 printf("Start ADI1 Redundant Conversion(Continuous): 8 |GPIO SPI Read from Slave: 33 \n");
sgarg2 9:0a4828d32e76 1503 printf("Read CR, VBAT & IVBAT Registers(Single Shot): 9 |GPIO I2C Write/Read to Slave: 34 \n");
sgarg2 9:0a4828d32e76 1504 printf("Read CR, VBAT & IVBAT Registers(Continuous): 10 | \n");
dpandit1988 6:5d29fdcbae72 1505 printf("Read Overcurrent ADC Register(Single Shot): 11 | \n");
dpandit1988 6:5d29fdcbae72 1506 printf("Read Overcurrent ADC Register(Continuous): 12 | \n");
dpandit1988 6:5d29fdcbae72 1507 printf("Read Average CR, VBAT & IVBAT Registers(Single Shot): 13 | \n");
dpandit1988 6:5d29fdcbae72 1508 printf("Read Average CR, VBAT & IVBAT Registers(Continuous): 14 | \n");
dpandit1988 6:5d29fdcbae72 1509 printf("Read All CR and VBAT Voltage Registers(Single Shot): 15 | \n");
dpandit1988 6:5d29fdcbae72 1510 printf("Read All CR and VBAT Voltage Registers(Continuous): 16 | \n");
dpandit1988 6:5d29fdcbae72 1511 printf("Start ADV All Channel Conversion: 17 | \n");
dpandit1988 6:5d29fdcbae72 1512 printf("Read All VR Registers(RDV commands): 18 | \n");
dpandit1988 6:5d29fdcbae72 1513 printf("Read All RVR Registers(RDRVA & RDRVB commands): 19 | \n");
dpandit1988 6:5d29fdcbae72 1514 printf("Read All VR & RVR Registers(RDV, RDRVA & RDRVB commands): 20 | \n");
dpandit1988 6:5d29fdcbae72 1515 printf("Read Voltage Registers(RDAUXC & RDAUXD commands)(NA): 21 | \n");
dpandit1988 6:5d29fdcbae72 1516 printf("Start ADAUX All Channel Conversion: 22 | \n");
dpandit1988 6:5d29fdcbae72 1517 printf("Read ADAUX Measurement: 23 | \n");
dpandit1988 6:5d29fdcbae72 1518 printf("Read Status C Register: 24 | \n");
dpandit1988 6:5d29fdcbae72 1519 printf("Read All Status Registers: 25 | \n");
dpandit1988 1:94a3e8fe5e25 1520
dpandit1988 6:5d29fdcbae72 1521 printf("\n");
dpandit1988 6:5d29fdcbae72 1522 printf("Print '0' for menu\n");
dpandit1988 6:5d29fdcbae72 1523 printf("Please enter command: \n");
dpandit1988 6:5d29fdcbae72 1524 printf("\n\n");
dpandit1988 6:5d29fdcbae72 1525 }
dpandit1988 1:94a3e8fe5e25 1526 #endif /* MBED */
dpandit1988 1:94a3e8fe5e25 1527
dpandit1988 6:5d29fdcbae72 1528 /**
dpandit1988 6:5d29fdcbae72 1529 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1530 * Function: printMsg
dpandit1988 6:5d29fdcbae72 1531 * @brief Print Message.
dpandit1988 6:5d29fdcbae72 1532 *
dpandit1988 6:5d29fdcbae72 1533 * @details This function print message into terminal.
dpandit1988 6:5d29fdcbae72 1534 * Parameters:
dpandit1988 6:5d29fdcbae72 1535 * @param [in] msg Message string
dpandit1988 6:5d29fdcbae72 1536 *
dpandit1988 6:5d29fdcbae72 1537 * @return None
dpandit1988 6:5d29fdcbae72 1538 *
dpandit1988 6:5d29fdcbae72 1539 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1540 */
dpandit1988 6:5d29fdcbae72 1541 void printMsg(char *msg)
dpandit1988 6:5d29fdcbae72 1542 {
dpandit1988 1:94a3e8fe5e25 1543 #ifdef MBED
dpandit1988 6:5d29fdcbae72 1544 pc.printf("%s\n\n", msg);
dpandit1988 1:94a3e8fe5e25 1545 #else /* IAR */
dpandit1988 6:5d29fdcbae72 1546 printf("%s\n\n", msg);
dpandit1988 1:94a3e8fe5e25 1547 #endif /* MBED */
dpandit1988 6:5d29fdcbae72 1548 }
dpandit1988 6:5d29fdcbae72 1549
dpandit1988 6:5d29fdcbae72 1550 /**
dpandit1988 6:5d29fdcbae72 1551 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1552 * Function: printPollAdcConvTime
dpandit1988 6:5d29fdcbae72 1553 * @brief Print Poll adc conversion Time.
dpandit1988 6:5d29fdcbae72 1554 *
dpandit1988 6:5d29fdcbae72 1555 * @details This function print poll adc conversion Time.
dpandit1988 6:5d29fdcbae72 1556 *
dpandit1988 6:5d29fdcbae72 1557 * @return None
dpandit1988 6:5d29fdcbae72 1558 *
dpandit1988 6:5d29fdcbae72 1559 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1560 */
dpandit1988 6:5d29fdcbae72 1561 void printPollAdcConvTime(int count)
dpandit1988 6:5d29fdcbae72 1562 {
dpandit1988 6:5d29fdcbae72 1563 #ifdef MBED
dpandit1988 6:5d29fdcbae72 1564 pc.printf("Adc Conversion Time = %fms\n", (float)(count/1000.0));
dpandit1988 6:5d29fdcbae72 1565 #else /* IAR */
dpandit1988 6:5d29fdcbae72 1566 printf("Adc Conversion Time = %fms\n", (float)(count/64000.0));
dpandit1988 6:5d29fdcbae72 1567 #endif /* MBED */
dpandit1988 6:5d29fdcbae72 1568 }
dpandit1988 1:94a3e8fe5e25 1569
dpandit1988 6:5d29fdcbae72 1570 /**
dpandit1988 6:5d29fdcbae72 1571 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1572 * Function: printResultCount
dpandit1988 6:5d29fdcbae72 1573 * @brief Print Result Count.
dpandit1988 6:5d29fdcbae72 1574 *
dpandit1988 6:5d29fdcbae72 1575 * @details This function print the continuous measurment result count.
dpandit1988 6:5d29fdcbae72 1576 *
dpandit1988 6:5d29fdcbae72 1577 * @return None
dpandit1988 6:5d29fdcbae72 1578 *
dpandit1988 6:5d29fdcbae72 1579 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1580 */
dpandit1988 6:5d29fdcbae72 1581 void printResultCount(int count)
dpandit1988 6:5d29fdcbae72 1582 {
dpandit1988 1:94a3e8fe5e25 1583 #ifdef MBED
dpandit1988 6:5d29fdcbae72 1584 pc.printf("Result Count:%d\n", (count+1));
dpandit1988 1:94a3e8fe5e25 1585 #else /* IAR */
dpandit1988 6:5d29fdcbae72 1586 printf("Result Count:%d\n", (count+1));
dpandit1988 1:94a3e8fe5e25 1587 #endif /* MBED */
dpandit1988 6:5d29fdcbae72 1588 }
dpandit1988 1:94a3e8fe5e25 1589
dpandit1988 6:5d29fdcbae72 1590 /**
dpandit1988 6:5d29fdcbae72 1591 *******************************************************************************
sgarg2 9:0a4828d32e76 1592 * Function: print Data
sgarg2 9:0a4828d32e76 1593 * @brief Print Data.
sgarg2 9:0a4828d32e76 1594 *
sgarg2 9:0a4828d32e76 1595 * @details This function prints a Data of type int.
sgarg2 9:0a4828d32e76 1596 *
sgarg2 9:0a4828d32e76 1597 * @return None
sgarg2 9:0a4828d32e76 1598 *
sgarg2 9:0a4828d32e76 1599 *******************************************************************************
sgarg2 9:0a4828d32e76 1600 */
sgarg2 9:0a4828d32e76 1601 void printData(uint8_t data)
sgarg2 9:0a4828d32e76 1602 {
sgarg2 9:0a4828d32e76 1603 #ifdef MBED
sgarg2 9:0a4828d32e76 1604 pc.printf("Read Data:%d\n", data);
sgarg2 9:0a4828d32e76 1605 #else /* IAR */
sgarg2 9:0a4828d32e76 1606 printf("Read Data:%d\n", data);
sgarg2 9:0a4828d32e76 1607 #endif /* MBED */
sgarg2 9:0a4828d32e76 1608 }
sgarg2 9:0a4828d32e76 1609
sgarg2 9:0a4828d32e76 1610 /**
sgarg2 9:0a4828d32e76 1611 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1612 * Function: readUserInupt
dpandit1988 6:5d29fdcbae72 1613 * @brief Read command input & print into console.
dpandit1988 6:5d29fdcbae72 1614 *
dpandit1988 6:5d29fdcbae72 1615 * @details This function print the input command & print into console.
dpandit1988 6:5d29fdcbae72 1616 *
dpandit1988 6:5d29fdcbae72 1617 * @return None
dpandit1988 6:5d29fdcbae72 1618 *
dpandit1988 6:5d29fdcbae72 1619 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1620 */
dpandit1988 6:5d29fdcbae72 1621 void readUserInupt(int *user_command)
dpandit1988 6:5d29fdcbae72 1622 {
dpandit1988 6:5d29fdcbae72 1623 #ifdef MBED
dpandit1988 6:5d29fdcbae72 1624 pc.scanf("%d", user_command);
dpandit1988 6:5d29fdcbae72 1625 pc.printf("Enter cmd:%d\n", *user_command);
dpandit1988 6:5d29fdcbae72 1626 #else /* IAR */
dpandit1988 6:5d29fdcbae72 1627 scanf("%d", user_command);
dpandit1988 6:5d29fdcbae72 1628 printf("Enter cmd:%d\n", *user_command);
dpandit1988 6:5d29fdcbae72 1629 #endif /* MBED */
dpandit1988 6:5d29fdcbae72 1630 }
dpandit1988 1:94a3e8fe5e25 1631
dpandit1988 6:5d29fdcbae72 1632 /**
dpandit1988 6:5d29fdcbae72 1633 *******************************************************************************
sgarg2 9:0a4828d32e76 1634 * Function: readUserData
sgarg2 9:0a4828d32e76 1635 * @brief Read data byte & print into console.
sgarg2 9:0a4828d32e76 1636 *
sgarg2 9:0a4828d32e76 1637 * @return None
sgarg2 9:0a4828d32e76 1638 *
sgarg2 9:0a4828d32e76 1639 *******************************************************************************
sgarg2 9:0a4828d32e76 1640 */
sgarg2 9:0a4828d32e76 1641 void readUserData(uint8_t *data)
sgarg2 9:0a4828d32e76 1642 {
sgarg2 9:0a4828d32e76 1643 #ifdef MBED
sgarg2 9:0a4828d32e76 1644 pc.scanf("%d", data);
sgarg2 9:0a4828d32e76 1645 pc.printf("Entered data:%d\n", *data);
sgarg2 9:0a4828d32e76 1646 #else /* IAR */
sgarg2 9:0a4828d32e76 1647 scanf("%d", data);
sgarg2 9:0a4828d32e76 1648 printf("Entered data:%d\n", *data);
sgarg2 9:0a4828d32e76 1649 #endif /* MBED */
sgarg2 9:0a4828d32e76 1650 }
sgarg2 9:0a4828d32e76 1651
sgarg2 9:0a4828d32e76 1652 /**
sgarg2 9:0a4828d32e76 1653 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1654 * Function: getVoltage
dpandit1988 6:5d29fdcbae72 1655 * @brief Get Voltage with multiplication factor.
dpandit1988 6:5d29fdcbae72 1656 *
dpandit1988 6:5d29fdcbae72 1657 * @details This function calculates the voltage.
dpandit1988 6:5d29fdcbae72 1658 *
dpandit1988 6:5d29fdcbae72 1659 * Parameters:
dpandit1988 6:5d29fdcbae72 1660 * @param [in] data Register value(uint16_t)
dpandit1988 6:5d29fdcbae72 1661 *
dpandit1988 6:5d29fdcbae72 1662 * @return Voltage(float)
dpandit1988 6:5d29fdcbae72 1663 *
dpandit1988 6:5d29fdcbae72 1664 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1665 */
dpandit1988 6:5d29fdcbae72 1666 float getVoltage(int data)
dpandit1988 6:5d29fdcbae72 1667 {
dpandit1988 6:5d29fdcbae72 1668 float voltage;
dpandit1988 6:5d29fdcbae72 1669 voltage = 100e-6 * (int16_t)data; /* Interpreting as 16-bit to be sure of length so signed works */
dpandit1988 6:5d29fdcbae72 1670 return voltage;
dpandit1988 6:5d29fdcbae72 1671 }
dpandit1988 6:5d29fdcbae72 1672
dpandit1988 6:5d29fdcbae72 1673 /**
dpandit1988 6:5d29fdcbae72 1674 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1675 * Function: getCurrent
dpandit1988 6:5d29fdcbae72 1676 * @brief Get Current with multiplication factor.
dpandit1988 6:5d29fdcbae72 1677 *
dpandit1988 6:5d29fdcbae72 1678 * @details This function calculates the current.
dpandit1988 6:5d29fdcbae72 1679 *
dpandit1988 6:5d29fdcbae72 1680 * Parameters:
dpandit1988 6:5d29fdcbae72 1681 * @param [in] data Register value(uint32_t)
dpandit1988 6:5d29fdcbae72 1682 *
dpandit1988 6:5d29fdcbae72 1683 * @return Current(float)
dpandit1988 6:5d29fdcbae72 1684 *
dpandit1988 6:5d29fdcbae72 1685 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1686 */
dpandit1988 6:5d29fdcbae72 1687 float getCurrent(uint32_t data)
dpandit1988 6:5d29fdcbae72 1688 {
dpandit1988 6:5d29fdcbae72 1689 float current;
dpandit1988 6:5d29fdcbae72 1690 current = 1e-6 * ((int32_t)(data << (32-18)) >> (32-18));
dpandit1988 6:5d29fdcbae72 1691 return current;
dpandit1988 6:5d29fdcbae72 1692 }
dpandit1988 1:94a3e8fe5e25 1693
dpandit1988 6:5d29fdcbae72 1694 /**
dpandit1988 6:5d29fdcbae72 1695 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1696 * Function: getAvgCurrent
dpandit1988 6:5d29fdcbae72 1697 * @brief Get Average Current with multiplication factor.
dpandit1988 6:5d29fdcbae72 1698 *
dpandit1988 6:5d29fdcbae72 1699 * @details This function calculates the current.
dpandit1988 6:5d29fdcbae72 1700 *
dpandit1988 6:5d29fdcbae72 1701 * Parameters:
dpandit1988 6:5d29fdcbae72 1702 * @param [in] data Register value(uint32_t)
dpandit1988 6:5d29fdcbae72 1703 *
dpandit1988 6:5d29fdcbae72 1704 * @return Current(float)
dpandit1988 6:5d29fdcbae72 1705 *
dpandit1988 6:5d29fdcbae72 1706 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1707 */
dpandit1988 6:5d29fdcbae72 1708 float getAvgCurrent(uint32_t data)
dpandit1988 6:5d29fdcbae72 1709 {
dpandit1988 6:5d29fdcbae72 1710 float current;
dpandit1988 6:5d29fdcbae72 1711 current = 1e-6 * 0.125 * ((int32_t)(data << (32-24)) >> (32-24));
dpandit1988 6:5d29fdcbae72 1712 return current;
dpandit1988 6:5d29fdcbae72 1713 }
dpandit1988 1:94a3e8fe5e25 1714
dpandit1988 6:5d29fdcbae72 1715 /**
dpandit1988 6:5d29fdcbae72 1716 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1717 * Function: getAvgVbat
dpandit1988 6:5d29fdcbae72 1718 * @brief Get Average VBAT with multiplication factor.
dpandit1988 6:5d29fdcbae72 1719 *
dpandit1988 6:5d29fdcbae72 1720 * @details This function calculates the avg vbat.
dpandit1988 6:5d29fdcbae72 1721 *
dpandit1988 6:5d29fdcbae72 1722 * Parameters:
dpandit1988 6:5d29fdcbae72 1723 * @param [in] data Register value(uint32_t)
dpandit1988 6:5d29fdcbae72 1724 *
dpandit1988 6:5d29fdcbae72 1725 * @return Current(float)
dpandit1988 6:5d29fdcbae72 1726 *
dpandit1988 6:5d29fdcbae72 1727 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1728 */
dpandit1988 6:5d29fdcbae72 1729 float getAvgVbat(uint32_t data)
dpandit1988 6:5d29fdcbae72 1730 {
dpandit1988 6:5d29fdcbae72 1731 float avgvbat;
dpandit1988 6:5d29fdcbae72 1732 avgvbat = 100e-6 * 0.125 * ((int32_t)(data << (32-24)) >> (32-24));
dpandit1988 6:5d29fdcbae72 1733 return avgvbat;
dpandit1988 6:5d29fdcbae72 1734 }
dpandit1988 6:5d29fdcbae72 1735
dpandit1988 6:5d29fdcbae72 1736 /**
dpandit1988 6:5d29fdcbae72 1737 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1738 * Function: getOverCurrent
dpandit1988 6:5d29fdcbae72 1739 * @brief Get Over Current with multiplication factor.
dpandit1988 6:5d29fdcbae72 1740 *
dpandit1988 6:5d29fdcbae72 1741 * @details This function calculates the over current.
dpandit1988 6:5d29fdcbae72 1742 *
dpandit1988 6:5d29fdcbae72 1743 * Parameters:
dpandit1988 6:5d29fdcbae72 1744 * @param [in] data Register value(uint8_t)
dpandit1988 6:5d29fdcbae72 1745 *
dpandit1988 6:5d29fdcbae72 1746 * @return Current(float)
dpandit1988 6:5d29fdcbae72 1747 *
dpandit1988 6:5d29fdcbae72 1748 *******************************************************************************
dpandit1988 6:5d29fdcbae72 1749 */
dpandit1988 6:5d29fdcbae72 1750 float getOverCurrent(uint8_t data)
dpandit1988 6:5d29fdcbae72 1751 {
dpandit1988 6:5d29fdcbae72 1752 float over_current;
dpandit1988 6:5d29fdcbae72 1753 over_current = 0.005 * ((int8_t)(data << (8-7)) >> (8-7));
dpandit1988 6:5d29fdcbae72 1754 return over_current;
dpandit1988 6:5d29fdcbae72 1755 }
dpandit1988 1:94a3e8fe5e25 1756
dpandit1988 1:94a3e8fe5e25 1757 /** @}*/
dpandit1988 1:94a3e8fe5e25 1758 /** @}*/