【英飞凌PSOC 62S4 PIONEER KIT 测评】——ADC
根据手册PSOC 62S4 PIONEER KIT拥有两个12位2-Msps SAR ADC,可以同步采样,拥有差分和单端模式,16通道测序器,结果平均,深度睡眠操作(使用2 MHz或8MHz的时钟);内置一个内置温度传感器连接到ADC,可以使用cypress提供的软件功能将读数转换为温度,并进行校准和线性化。ADC最大时钟频率为36 MHz,在该频率下需要至少18个时钟周期来进行12位转换。有三个内部参考值可用于ADC参考电压:VDDA、VDDA/2和大约为1.2V的模拟参考值(AREF)。当使用VDDA/2或AREF作为参考时,外部旁路电容应连接到VREF引脚,以提高在有噪声条件下的性能。在采样的时候,每个通道的结果都被缓冲,只有在所有通道的完整扫描完成时,才可能触发中断,如果一个输入小于最小值和/或大于最大值,则可以设置一对范围寄存器来检测和引起一个中断。ADC的工作范围为1.71~3.6V。
根据官方文档,PSoC™6 HAL目前限制将任何GPIO引脚映射为ADC的输入。只有与ADC直接连接的引脚才能用作ADC的输入。P10_x是首选的GPIO引脚作为ADC的输入,因为它们直接连接到ADC。
二、主要API介绍
1.ADC初始化cyhal_adc_init()
注意:输入引脚参数只是表示要初始化哪个ADC。它实际上并不保留引脚或为其创建ADC通道。
- ADC配置cyhal_adc_configure()
其中,cyhal_adc_config_t结构体为
注意:如果正在进行扫描,可能会导致扫描被中断。
- 通道初始化cyhal_adc_channel_init_diff()
其中,cyhal_adc_channel_config_t结构体为
注意:(1)对于单通道,vminus设置为CYHAL_ADC_VNEG(NC)。
- 使用结果平均功能,其它配置在cyhal_adc_configure()配置。
- ADC事件使能cyhal_adc_enable_event()
其中,cyhal_adc_event_t枚举为
三、ADC简易程序
功能描述:将对环境光传感器和热敏电阻的采样值每隔500ms打印一次
代码描述:
- 将与P10_7相连的ADC初始化
- 通道0和通道1都不使用结果平均功能,最小采样时间为1us;通道0为单端采样,输入引脚为P10_7(与环境光传感器的输出相连);通道1为差分采样,输入引脚为P10_4(与热敏电阻的电源相连),参考引脚为P10_5(与热敏电阻的输出相连)
- 当异步读操作完成是产生中断
- ADC配置为不使用连续扫描,不使用结果平均,分辨率为12位
PS:
- 哪些引脚可以设置成ADC的输入引脚?我在数据手册中没有找到。有些引脚作为输入引脚进行通道初始话一直错误,不清楚是不是上面说的HAL进行的限制。
- 本来是想将ADC值转换成对应的光照值和温度值的,但是不清楚怎么转换。翻阅手册说是可以用cypress提供的软件功能将读数转换为温度,但不清楚怎么操作。
VID_20230408_215659