| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /**
- * @file hx710a.c
- *
- * @param Project DEVICE_GENERAL_ATY_LIB
- *
- * @author ATY
- *
- * @copyright
- * - Copyright 2017 - 2026 MZ-ATY
- * - This code follows:
- * - MZ-ATY Various Contents Joint Statement -
- * <a href="https://mengze.top/MZ-ATY_VCJS">
- * https://mengze.top/MZ-ATY_VCJS</a>
- * - CC 4.0 BY-NC-SA -
- * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
- * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
- * - Your use will be deemed to have accepted the terms of this statement.
- *
- * @brief functions of HX710A for C platform (Dev-style)
- *
- * @version
- * - 1_01_251112 > ATY
- * -# Add Dev-style interface aligned to LED_ATY; keep legacy APIs
- ********************************************************************************
- */
- #ifndef __HX710A_C
- #define __HX710A_C
- #include "hx710a.h"
- uint8_t HX710A_InitDev(struct HX710A_ATY_Dev* dev)
- {
- __ATY_LOCK(dev);
- if (dev->sckSet) dev->sckSet(__ATY_HL_H);
- if (dev->delay_ms) dev->delay_ms(2);
- if (dev->sckSet) dev->sckSet(__ATY_HL_L);
- if (dev->delay_ms) dev->delay_ms(2);
- if (dev->debugEnable == 1 && dev->LOG) dev->LOG("\r\nHX710A init done.");
- __ATY_UNLOCK(dev);
- return 0;
- }
- uint8_t HX710A_IsReadyDev(struct HX710A_ATY_Dev* dev)
- {
- return (dev->doutRead && dev->doutRead() == __ATY_HL_L) ? 1 : 0;
- }
- uint8_t HX710A_ReadRawDev(uint8_t p, uint32_t* raw, struct HX710A_ATY_Dev* dev)
- {
- __ATY_LOCK(dev);
- uint32_t data = 0;
- if (dev->sckSet) dev->sckSet(__ATY_HL_L);
- while (!HX710A_IsReadyDev(dev)) { /* wait ready */ }
- for (uint8_t i = 0; i < 24; i++) {
- if (dev->sckSet) dev->sckSet(__ATY_HL_H);
- data = (data << 1);
- if (dev->sckSet) dev->sckSet(__ATY_HL_L);
- if (dev->doutRead) data += dev->doutRead();
- }
- if (dev->sckSet) dev->sckSet(__ATY_HL_H);
- data = data ^ 0x800000; // sign bit adjust
- if (dev->sckSet) dev->sckSet(__ATY_HL_L);
- if (p == 1 || p == 2) {
- // internal temp select pulse
- if (dev->sckSet) dev->sckSet(__ATY_HL_H);
- if (dev->sckSet) dev->sckSet(__ATY_HL_L);
- }
- if (p == 2) {
- // 40Hz out select pulse
- if (dev->sckSet) dev->sckSet(__ATY_HL_H);
- if (dev->sckSet) dev->sckSet(__ATY_HL_L);
- }
- *raw = data;
- if (dev->debugEnable == 1 && dev->LOG) dev->LOG("\r\nHX710A read raw.");
- __ATY_UNLOCK(dev);
- return 0;
- }
- // No legacy APIs retained; use Dev-style interfaces only.
- #endif /* __HX710A_C */
- /******************************** End Of File *********************************/
|