[技术问答] 关于ADC 差分输入(Differential input)问题

[复制链接]
 楼主| 两只袜子 发表于 2025-2-21 23:00 | 显示全部楼层 |阅读模式
各位专家你好,目前使用M487JIDAE
想使用ADC差分输入去讀取音源線訊號
参考TRM的代码设定 但是读取出来的值有点奇怪
ADC clock 、GPIO mode的设定看起来没问题
使用PB0 PB1
//---------------------------------------------------------------
下面是我ADC初始化的配置
void        EADC_Init()
{               
SYS_ResetModule(EADC_RST);      

EADC_Open(EADC, EADC_CTL_DIFFEN_DIFFERENTIAL);

EADC_ConfigSampleModule(EADC, 0, EADC_SOFTWARE_TRIGGER, 0);

EADC_CLR_INT_FLAG(EADC, EADC_STATUS2_ADIF0_Msk);

EADC_ENABLE_INT(EADC, BIT0);

EADC_ENABLE_SAMPLE_MODULE_INT(EADC, 0, BIT0);
}

//---------------------------------------------------------------
跟ADC读取函式

uint16_t        Get_ADC_VAL()
{
uint16_t vol=0;

EADC_START_CONV(EADC, BIT0);

while (EADC_GET_INT_FLAG(EADC, BIT0) == 0);

vol = EADC_GET_CONV_DATA(EADC, 0);

EADC_CLR_INT_FLAG(EADC, BIT0);

return        vol;
}

//---------------------------------------------------------------
输入测试电压
V+:3.32V    V-:     0V       vol:3.32V  (0xFFF)
V+:3.32V    V-:1.66V       vol:2.49V   (0xC05)
V+:1.66V    V-:1.66V       vol:1.66V   (0x805)
V+:1.66V    V-:    0V        vol:2.49V  (0xC05)

看起來像single-end mode 读取出来的值有点奇怪
不知有没有参考的代码和电路能够解决我的问题
yhu1983 发表于 2025-7-11 16:09 | 显示全部楼层
你的计算公式不对哦。你用的单端输入的公式在计算Vi= (adc-2048)/4096 * 2 *3.3
另外输入数据也不太合适,差分输入电压共模在Vref/2左右不超过
微信截图_20250711155412.png
逆鳞风暴 发表于 2025-7-12 15:26 | 显示全部楼层
看起来你的代码配置是正确的,但是读取的值确实有些异常。你可以尝试检查一下你的硬件连接,确保PB0和PB1的连接没有问题。另外,也可以尝试使用其他的ADC通道来测试,看看是否是通道的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2122

主题

8117

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部

2122

主题

8117

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部