feat(gml670-v2): 添加二进制协议定义与 ADS1256 SPI 驱动
- protocol.h: CoP/Encoder/Resistance/Spotter/Heartbeat 帧定义, GML670 50kg ADC→kg 标定参数 - ads1256: SPI 命令模式驱动,BUFEN=1 解决高阻抗负载误差, 3750 SPS 平衡精度与采样率,SELFCAL + 寄存器回读校验 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#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 超时时间(毫秒)。
|
||||
*/
|
||||
void 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 引脚),等待复位后自校准完成。
|
||||
*/
|
||||
void 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);
|
||||
Reference in New Issue
Block a user