ADS1299 采样率配置函数 - 优化后的多通道配置
{"title":"bool ADS1299_SetSamplerate(uint16_t Samplerate) { bool ret = EXIT_SUCCESS; uint8_t valset = 0; uint8_t valget = 0;
switch(Samplerate)
{
case 250:
valset = 0x96;
break;
case 500:
valset = 0x95;
break;
case 1000:
valset = 0x94;
break;
case 2000:
valset = 0x93;
break;
default:
valset = 0x94; //default 1kHz
break;
}
/* 尝试配置 */
ADS1299_WriteREG(SJ_CH1SET3,valset);
/* 回读一次 */
valget = ADS1299_ReadREG(SJ_CH1SET3);
if(valget!=valset)
ret = EXIT_FAILURE;
return ret;
} 若有3个SJ_CH1SET3寄存器(如SJ_CH1SET3 SJ_CH2SET3 SJ_CH3SET3) 如何连续配置3次 怎样改写代码内容:您可以将该函数修改为接受一个数组参数,其中包含3个寄存器的值。然后,使用一个循环来连续配置3次。以下是修改后的代码示例:
bool ADS1299_SetSamplerate(uint16_t Samplerate[])
{
bool ret = EXIT_SUCCESS;
uint8_t valget = 0;
for (int i = 0; i < 3; i++)
{
switch(Samplerate[i])
{
case 250:
ADS1299_WriteREG(SJ_CH1SET3 + i, 0x96);
break;
case 500:
ADS1299_WriteREG(SJ_CH1SET3 + i, 0x95);
break;
case 1000:
ADS1299_WriteREG(SJ_CH1SET3 + i, 0x94);
break;
case 2000:
ADS1299_WriteREG(SJ_CH1SET3 + i, 0x93);
break;
default:
ADS1299_WriteREG(SJ_CH1SET3 + i, 0x94); //default 1kHz
break;
}
/* 回读一次 */
valget = ADS1299_ReadREG(SJ_CH1SET3 + i);
if(valget != Samplerate[i])
{
ret = EXIT_FAILURE;
break;
}
}
return ret;
}
在这个修改后的函数中,使用一个循环来遍历3个寄存器,并根据输入的采样率值进行配置。在每次迭代中,将对应的寄存器值写入,并使用回读来验证是否成功配置。如果回读的值与期望的值不匹配,则将返回EXIT_FAILURE。
原文地址: https://www.cveoy.top/t/topic/qoK1 著作权归作者所有。请勿转载和采集!