Files
balance-board/inc/ads1256.h
T

56 lines
1.4 KiB
C

#pragma once
#include <stdint.h>
/* sensor.c 切换通道时需要此寄存器地址 */
#define ADS1256_REG_MUX 0x01
/**
* @brief 初始化 ADS1256:配置 GPIO/SPI,复位芯片,写入寄存器,自校准。
* @return 0 成功,负 errno 失败。
*/
int ads1256_init(void);
/**
* @brief 等待 DRDY 拉低(转换结果可读),带超时保护。
* @param timeout_ms 超时时间(毫秒)。
* @return 0 成功,-ETIMEDOUT 超时。
*/
int ads1256_wait_drdy(uint16_t timeout_ms);
/**
* @brief 向 ADS1256 写单个寄存器。
* @param reg 目标寄存器地址。
* @param val 要写入的值。
*/
void ads1256_write_reg(uint8_t reg, uint8_t val);
/**
* @brief 从 ADS1256 读单个寄存器。
* @param reg 目标寄存器地址。
* @return 寄存器值。
*/
uint8_t ads1256_read_reg(uint8_t reg);
/**
* @brief 发送 SYNC + WAKEUP 命令,触发一次同步采样。
*/
void ads1256_sync_wakeup(void);
/**
* @brief 硬件复位 ADS1256(通过 RESET 引脚),等待复位后自校准完成。
* @return 0 成功,-ETIMEDOUT 芯片无响应。
*/
int ads1256_hwreset(void);
/**
* @brief 读取当前 24 位转换结果,符号扩展为 int32_t。
* @return ADC 原始值。
*/
int32_t ads1256_read_data(void);
/**
* @brief 发送单字节命令到 ADS1256。
* @param cmd 命令字。
*/
void ads1256_write_cmd(uint8_t cmd);