MT6816_ATY.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * @file MT6816_ATY.h
  3. *
  4. * @param Project DEVICE_DRIVER_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 MT6816 magnetic encoder for C platform
  20. *
  21. * @version
  22. * - 1_01_251222 > ATY
  23. * -# Preliminary version, first Release
  24. ********************************************************************************
  25. */
  26. #ifndef __MT6816_ATY_H
  27. #define __MT6816_ATY_H
  28. #include "INCLUDE_ATY.h"
  29. /******************************* For user *************************************/
  30. /******************************************************************************/
  31. struct MT6816_ATY_Dev{
  32. void (*nssSet)(uint8_t level);
  33. uint8_t (*spiProcess)(uint8_t* data_t, uint16_t len, uint8_t rw);
  34. uint16_t angleValue;
  35. float angle;
  36. float angleLast;
  37. float angleStart;
  38. float angleTotal;
  39. uint32_t turnCount;
  40. uint8_t start;
  41. uint8_t error;
  42. uint16_t zeroPoint;
  43. uint8_t angleReverseDir;
  44. uint8_t lock;
  45. };
  46. // MT6816 Register Addresses
  47. #define MT6816_REG_ANGLE_13_6 0x03
  48. #define MT6816_REG_ANGLE_5_0 0x04
  49. #define MT6816_REG_ANGLE_OVER_SPEED 0x05
  50. #define MT6816_PARITY_CHECK_MASK 0x01
  51. #define MT6816_NO_MAG_WARNING_MASK 0x02
  52. #define MT6816_OVER_SPEED_MASK 0x08
  53. uint8_t MT6816_ParityCheck(struct MT6816_ATY_Dev* dev, uint16_t data);
  54. uint8_t MT6816_ErrorCheck(struct MT6816_ATY_Dev* dev, uint8_t* data);
  55. uint8_t MT6816_ReadAngleBase(struct MT6816_ATY_Dev* dev);
  56. uint8_t MT6816_ReadAngleFull(struct MT6816_ATY_Dev* dev);
  57. uint16_t MT6816_SetZeroPoint(struct MT6816_ATY_Dev* dev);
  58. float MT6816_CalculateAngle(struct MT6816_ATY_Dev* dev, uint16_t angle);
  59. float MT6816_CalculateAngleReal(struct MT6816_ATY_Dev* dev, uint16_t angle);
  60. uint32_t MT6816_TurnCount(struct MT6816_ATY_Dev* dev);
  61. uint32_t MT6816_TurnCountOffset(struct MT6816_ATY_Dev* dev);
  62. void MT6816_TurnCountOffsetStart(struct MT6816_ATY_Dev* dev, uint8_t dir);
  63. void MT6816_TurnCountOffsetStop(struct MT6816_ATY_Dev* dev);
  64. #endif /* __MT6816_ATY_H */
  65. /******************************** End Of File *********************************/