AD5245_ATY.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /**
  2. * @file AD5245_ATY.c
  3. *
  4. * @param Project DEVICE_GENERAL_ATY_LIB
  5. *
  6. * @author ATY
  7. *
  8. * @copyright
  9. * - Copyright 2017 - 2026 MZ-ATY
  10. * - This code follows:
  11. * - MZ-ATY Various Contents Joint Statement -
  12. * <a href="https://mengze.top/MZ-ATY_VCJS">
  13. * https://mengze.top/MZ-ATY_VCJS</a>
  14. * - CC 4.0 BY-NC-SA -
  15. * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
  16. * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
  17. * - Your use will be deemed to have accepted the terms of this statement.
  18. *
  19. * @brief functions of AD5245 for C platform
  20. *
  21. * @version
  22. * - 1_01_220927 > ATY
  23. * -# Preliminary version, first Release
  24. * - 1_02_231229 > ATY
  25. * -# add multy addr and channel
  26. * - 1_01_240111 > ATY
  27. * -# add lock
  28. ********************************************************************************
  29. */
  30. #ifndef __AD5245_ATY_C
  31. #define __AD5245_ATY_C
  32. #include "AD5245_ATY.h"
  33. /******************************* For user *************************************/
  34. /******************************************************************************/
  35. /**
  36. * @brief set AD5245 value
  37. *
  38. * @param value value of resistor
  39. * @param dev device
  40. * @return uint8_t
  41. */
  42. uint8_t AD5245_SetValue(uint8_t value, struct AD5245_ATY_Dev* dev)
  43. {
  44. uint8_t errCode = 0;
  45. uint8_t data_t[2] = {0};
  46. __ATY_LOCK(dev);
  47. // data_t[1] = value;
  48. data_t[1] = (0xFF - value);
  49. if(dev->addr != 0x2C && dev->addr != 0x2D)
  50. dev->addr = (0x2C | dev->ad0);
  51. errCode = dev->i2cProcess(dev->addr, data_t, 2, __ATY_RW_W);
  52. if(dev->debugEnable == 1){
  53. dev->LOG("\r\nAD5245 %02X ResSet: %03d | %d Ohm", dev->addr, value, (uint16_t)(((0xFF - value) * 1.0 * 10.0 / 256.0) * 1000));
  54. dev->LOG("\r\nAD5245 %02X set : %03d | %03d", dev->addr, data_t[0], data_t[1]);
  55. }
  56. __ATY_UNLOCK(dev);
  57. return errCode;
  58. }
  59. /**
  60. * @brief get AD5245 value
  61. *
  62. * @param value value of resistor
  63. * @param dev device
  64. * @return uint8_t
  65. */
  66. uint8_t AD5245_GetValue(uint8_t* value, struct AD5245_ATY_Dev* dev)
  67. {
  68. uint8_t errCode = 0;
  69. uint8_t data_t[2] = {0};
  70. __ATY_LOCK(dev);
  71. if(dev->addr != 0x2C && dev->addr != 0x2D)
  72. dev->addr = (0x2C | dev->ad0);
  73. errCode = dev->i2cProcess(dev->addr, data_t, 2, __ATY_RW_R);
  74. *value = data_t[1];
  75. if(dev->debugEnable == 1)
  76. dev->LOG("\r\nAD5245 %02X receive: %03d | %03d", dev->addr, data_t[0], data_t[1]);
  77. __ATY_UNLOCK(dev);
  78. return errCode;
  79. }
  80. #endif /* __AD5245_ATY_C */
  81. /************************************ etc *************************************/
  82. /* init */
  83. // uint8_t AD5245_1_I2C(uint8_t addr, uint8_t* data_t, uint8_t len, uint8_t rw){
  84. // if(rw == __ATY_RW_W)
  85. // return (uint8_t)HAL_I2C_Master_Transmit(&hi2c1, (addr << 1 | 0), data_t, len, 1000);
  86. // else if(rw == __ATY_RW_R)
  87. // return (uint8_t)HAL_I2C_Master_Receive(&hi2c1, (addr << 1 | 1), data_t, len, 1000);
  88. // }
  89. // struct AD5245_ATY_Dev AD5245_ATY_t_1 = {
  90. // .addr = AD5245_ADDRESS,
  91. // .i2cProcess = AD5245_1_I2C,
  92. // .lock = __ATY_UNLOCKED
  93. // };
  94. /* use */
  95. // AD5245_SetValue(0xF0, &AD5245_ATY_t_1);
  96. // AD5245_GetValue(&getValue, &AD5245_ATY_t_1);
  97. /******************************************************************************/
  98. /******************************** End Of File *********************************/