上一篇介绍了I2C总线的使用,在这一篇我续写ADC使用,PSOC4100SMAX的ADC使用也是比较容易上手的,
- 配置时钟Peripheral-Clocks配置
- Peripherals配置
-
- Vref选择:PSOC的参考电压选择很灵活
这里简单介绍一下BandGap Reference,其原理是利用具有正温度系数的电压与具有负温度系数电压相结合的电路,抵消温度的影响,实现温漂很低的参考电压,PSOC4100S MAX的参考电压在1.188~1.212 V之间,典型值 1.2V,通常使用内置的参考电压已经能获得较好的性能,此外,还可以根据采样速率选择是否需要滤波电容,或外部VREF或1/2 VDDA,VDDA。
-
-
- 同时扫描的通道数量
-
-
- 注入通道
这个用于硬件偶尔扫描一个插入通道,这个通道不计算在通道数量里面
-
-
- 开启升压电路
当MCU供电电压低于2.7V时需勾选此项,而当MCU供电电压高于4.0V时,此选项失效
-
-
- 采样速率
-
-
- 阀值检测
这里可以设置不同的中断触发条件,设置这个窗口值,由ADC硬件进行数值比较,可以大幅减少MCU的参与处理时间,对高速率采样和低功耗时特别有用
-
-
- 采样设置
-
-
- 通道模式配置,单端或差分输入模式
-
-
- 平均值使能,阀值中断使能以及饱和中断使能
饱和中断使能后,如果该通道的采样值等于相应分辨率下转化结果的下限值或上限值时,使能该选项可触发饱和中断。例如 12 位分辨率下得到的转换结果为 0x000 或者 0xFFF。
-
-
- 引脚映射
-
-
- 启用运算放大器
- 配置信号路由
切换到Analog-Routing
点击
图标,进入路由编辑界面
选择要编辑的路由节点,点击
cy_rslt_t result;
/*初始化 OPAMP0 */
result = Cy_CTB_Init(CTBM0, &pass_0_ctb_0_config);
if (result != CY_CTB_SUCCESS)
{
CY_ASSERT(0);
}
/*使能 Opamp0*/
Cy_CTB_Enable(CTBM0);
result = Cy_SAR_Init(SAR0, &pass_0_sar_0_config);
if (result != CY_SAR_SUCCESS)
{
CY_ASSERT(0);
}
/* 使能 SAR ADC */
Cy_SAR_Enable(SAR0);
-
- 读ADC通道值
/* 开始扫描 */
Cy_SAR_StartConvert(SAR0, CY_SAR_START_CONVERT_SINGLE_SHOT);
/*等待结束 */
Cy_SAR_IsEndConversion(SAR0, CY_SAR_WAIT_FOR_RESULT);
/* 获取通数0数据 */
adcResult0 = Cy_SAR_GetResult16(SAR0, 0);
/* 获取通道1数据 */
adcResult1 = Cy_SAR_GetResult16(SAR0, 1);
……
PSOC4100S Max的ADC模块功能丰富,操作简易,还有强大的路由功能,运放增益可选1倍或10倍。接下来,我继续介绍电容触摸的操作,敬请期待!