Ming104 发表于 2024-3-26 09:06:08

请问最新H7的ADS1256驱动支持差分扫描吗

请问最新H7的ADS1256驱动支持差分扫描吗,以前F4标准库的是在ADS1256_StartScan(uint8_t _ucScanMode)里填0和1选择,H7版本的是在哪里修改单端和差分呀

eric2013 发表于 2024-3-26 10:40:49

/*
*********************************************************************************************************
*        函 数 名: ADS1256_SetDiffChannal
*        功能说明: 配置差分通道号。多路复用。
*        形    参: _ch : 通道号,0-3;共4对
*        返 回 值: 8bit状态寄存器值的高4位
*********************************************************************************************************
*/
void ADS1256_SetDiffChannal(uint8_t _ch)
{
        /*
        Bits 7-4 PSEL3, PSEL2, PSEL1, PSEL0: Positive Input Channel (AINP) Select
                0000 = AIN0 (default)
                0001 = AIN1
                0010 = AIN2 (ADS1256 only)
                0011 = AIN3 (ADS1256 only)
                0100 = AIN4 (ADS1256 only)
                0101 = AIN5 (ADS1256 only)
                0110 = AIN6 (ADS1256 only)
                0111 = AIN7 (ADS1256 only)
                1xxx = AINCOM (when PSEL3 = 1, PSEL2, PSEL1, PSEL0 are “don’t care”)

                NOTE: When using an ADS1255 make sure to only select the available inputs.

        Bits 3-0 NSEL3, NSEL2, NSEL1, NSEL0: Negative Input Channel (AINN)Select
                0000 = AIN0
                0001 = AIN1 (default)
                0010 = AIN2 (ADS1256 only)
                0011 = AIN3 (ADS1256 only)
                0100 = AIN4 (ADS1256 only)
                0101 = AIN5 (ADS1256 only)
                0110 = AIN6 (ADS1256 only)
                0111 = AIN7 (ADS1256 only)
                1xxx = AINCOM (when NSEL3 = 1, NSEL2, NSEL1, NSEL0 are “don’t care”)
        */
        if (_ch == 0)
        {
                ADS1256_WriteReg(REG_MUX, (0 << 4) | 1);        /* 差分输入 AIN0, AIN1 */
        }
        else if (_ch == 1)
        {
                ADS1256_WriteReg(REG_MUX, (2 << 4) | 3);        /* 差分输入 AIN2, AIN3 */
        }
        else if (_ch == 2)
        {
                ADS1256_WriteReg(REG_MUX, (4 << 4) | 5);        /* 差分输入 AIN4, AIN5 */
        }
        else if (_ch == 3)
        {
                ADS1256_WriteReg(REG_MUX, (6 << 4) | 7);        /* 差分输入 AIN6, AIN7 */
        }
}

Ming104 发表于 2024-3-28 00:53:28

eric2013 发表于 2024-3-26 10:40
/*
**************************************************************************** ...

我想问下这个ADS1256_SetDiffChannal(uint8_t _ch)函数在哪里调用呀,是不是只要把ADS1256_ReadAdc 和 ADS1256_ISR中的ADS1256_SetChannal函数替换成ADS1256_SetDiffChannal(uint8_t _ch)就可以了

eric2013 发表于 2024-3-29 09:48:59

Ming104 发表于 2024-3-28 00:53
我想问下这个ADS1256_SetDiffChannal(uint8_t _ch)函数在哪里调用呀,是不是只要把ADS1256_ReadAdc 和 AD ...

对,是这样的。

Ming104 发表于 2024-4-16 11:46:11

eric2013 发表于 2024-3-29 09:48
对,是这样的。

你好,我再打扰你一下,我看到你的文章说1256最大速率是1000sps,意思是这个代码采样率最大就是1000sps吗,比如我用你的代码,配置成2000sps, ADS1256_CfgADC(ADS1256_GAIN_1, ADS1256_2000sps);实际采样率也只有1000sps吗?下面是原话:
93.4.7 ADS1256支持的采样率
ADS1256支持的采样率如下,这里特别注意,因为切换通道和读数据耗时 123微秒, 因此扫描中断模式工作时,最大速率 = DRATE_1000SPS。

页: [1]
查看完整版本: 请问最新H7的ADS1256驱动支持差分扫描吗