/** * @file AD5245_ATY.c * * @param Project DEVICE_GENERAL_ATY_LIB * * @author ATY * * @copyright * - Copyright 2017 - 2025 MZ-ATY * - This code follows: * - MZ-ATY Various Contents Joint Statement - * * https://mengze.top/MZ-ATY_VCJS * - CC 4.0 BY-NC-SA - * * https://creativecommons.org/licenses/by-nc-sa/4.0/ * - Your use will be deemed to have accepted the terms of this statement. * * @brief Familiar functions of AD5245 for all embedded device * * @version * - 1_01_220927 > ATY * -# Preliminary version, first Release * - 1_02_231229 > ATY * -# add multy addr and channel * - 1_01_240111 > ATY * -# add lock ******************************************************************************** */ #ifndef __AD5245_ATY_C #define __AD5245_ATY_C #include "AD5245_ATY.h" /******************************* For user *************************************/ /******************************************************************************/ /** * @brief set AD5245 value * * @param value value of resistor * @param dev device * @return uint8_t */ uint8_t AD5245_SetValue(uint8_t value, struct AD5245_ATY_Dev* dev) { uint8_t errCode = 0; uint8_t data_t[2] = {0}; __ATY_LOCK(dev); // data_t[1] = value; data_t[1] = (0xFF - value); if(dev->addr != 0x2C && dev->addr != 0x2D) dev->addr = (0x2C | dev->ad0); errCode = dev->i2cProcess(dev->addr, data_t, 2, _ATY_RW_W); if(dev->debugEnable == 1){ dev->LOG("\r\nAD5245 %02X ResSet: %03d | %d Ohm", dev->addr, value, (uint16_t)(((0xFF - value) * 1.0 * 10.0 / 256.0) * 1000)); dev->LOG("\r\nAD5245 %02X set : %03d | %03d", dev->addr, data_t[0], data_t[1]); } __ATY_UNLOCK(dev); return errCode; } /** * @brief get AD5245 value * * @param value value of resistor * @param dev device * @return uint8_t */ uint8_t AD5245_GetValue(uint8_t* value, struct AD5245_ATY_Dev* dev) { uint8_t errCode = 0; uint8_t data_t[2] = {0}; __ATY_LOCK(dev); if(dev->addr != 0x2C && dev->addr != 0x2D) dev->addr = (0x2C | dev->ad0); errCode = dev->i2cProcess(dev->addr, data_t, 2, _ATY_RW_R); *value = data_t[1]; if(dev->debugEnable == 1) dev->LOG("\r\nAD5245 %02X receive: %03d | %03d", dev->addr, data_t[0], data_t[1]); __ATY_UNLOCK(dev); return errCode; } #endif /* __AD5245_ATY_C */ /************************************ etc *************************************/ // void LOG_ALL(uint8_t* str){ printf((const char*)str); } /* init */ // uint8_t AD5245_1_I2C(uint8_t addr, uint8_t* data_t, uint8_t len, uint8_t rw){ // if(rw == _ATY_RW_W) // return (uint8_t)HAL_I2C_Master_Transmit(&hi2c1, (addr << 1 | 0), data_t, len, 1000); // else if(rw == _ATY_RW_R) // return (uint8_t)HAL_I2C_Master_Receive(&hi2c1, (addr << 1 | 1), data_t, len, 1000); // } // struct AD5245_ATY_Dev AD5245_ATY_t_1 = { // .addr = AD5245_ADDRESS, // .i2cProcess = AD5245_1_I2C, // .lock = _ATY_UNLOCKED, // .debugEnable = 0, // .LOG = printf // }; /* use */ // AD5245_SetValue(0xF0, &AD5245_ATY_t_1); // AD5245_GetValue(&getValue, &AD5245_ATY_t_1); /******************************************************************************/ /******************************** End Of File *********************************/