【英飞凌PSOC 62S4 PIONEER KIT 测评】——ADC
<div class='showpostmsg'><p><b>【</b><b>英飞凌PSOC 62S4 PIONEER KIT</b><b> 测评】——ADC</b></p><ul>
<li >基本介绍</li>
</ul>
<p >根据手册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。</p>
<p >根据官方文档,PSoC™6 HAL目前限制将任何GPIO引脚映射为ADC的输入。只有与ADC直接连接的引脚才能用作ADC的输入。P10_x是首选的GPIO引脚作为ADC的输入,因为它们直接连接到ADC。</p>
<p >二、主要API介绍</p>
<p >1.ADC初始化cyhal_adc_init()</p>
<p align="center" > </p>
<p >注意:输入引脚参数只是表示要初始化哪个ADC。它实际上并不保留引脚或为其创建ADC通道。</p>
<ol start="2">
<li >ADC配置cyhal_adc_configure()</li>
</ol>
<p align="center" > </p>
<p >其中,cyhal_adc_config_t结构体为</p>
<p align="center" > </p>
<p >注意:如果正在进行扫描,可能会导致扫描被中断。</p>
<ol start="3">
<li >通道初始化cyhal_adc_channel_init_diff()</li>
</ol>
<p align="center" > </p>
<p >其中,cyhal_adc_channel_config_t结构体为</p>
<p align="center" > </p>
<p >注意:(1)对于单通道,vminus设置为CYHAL_ADC_VNEG(NC)。</p>
<ol start="2">
<li >使用结果平均功能,其它配置在cyhal_adc_configure()配置。</li>
</ol>
<ol start="4">
<li >ADC事件使能cyhal_adc_enable_event()</li>
</ol>
<p align="center" > </p>
<p >其中,cyhal_adc_event_t枚举为</p>
<p align="center" > </p>
<p >三、ADC简易程序</p>
<p >功能描述:将对环境光传感器和热敏电阻的采样值每隔500ms打印一次</p>
<p >代码描述:</p>
<ol>
<li >将与P10_7相连的ADC初始化</li>
</ol>
<p align="center" > </p>
<ol start="2">
<li >通道0和通道1都不使用结果平均功能,最小采样时间为1us;通道0为单端采样,输入引脚为P10_7(与环境光传感器的输出相连);通道1为差分采样,输入引脚为P10_4(与热敏电阻的电源相连),参考引脚为P10_5(与热敏电阻的输出相连)</li>
</ol>
<p > </p>
<p > </p>
<ol start="3">
<li >当异步读操作完成是产生中断</li>
</ol>
<p align="center" > </p>
<ol start="4">
<li >ADC配置为不使用连续扫描,不使用结果平均,分辨率为12位</li>
</ol>
<p > </p>
<p align="center" > </p>
<p >PS:</p>
<ol>
<li >哪些引脚可以设置成ADC的输入引脚?我在数据手册中没有找到。有些引脚作为输入引脚进行通道初始话一直错误,不清楚是不是上面说的HAL进行的限制。</li>
<li >本来是想将ADC值转换成对应的光照值和温度值的,但是不清楚怎么转换。翻阅手册说是可以用cypress提供的软件功能将读数转换为温度,但不清楚怎么操作。</li>
</ol>
<p >e792d385658c3273bbcff5bb54fcff99<br />
</p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>ADC简易程序是官方提供的么</p>
<p>内置一个内置温度传感器连接到ADC,可以使用cypress提供的软件功能将读数转换为温度,并进行校准和线性化。ADC最大时钟频率为36 MHz,在该频率下需要至少18个时钟周期来进行12位转换。</p>
<p>内置的温度传感器,采样后跟工作环境相差大不大?能不能象msp430一样,经过较正,可以监测环境的温度?</p>
Jacktang 发表于 2023-4-9 16:49
ADC简易程序是官方提供的么
<p>在官方例程上进行了部分修改</p>
lugl4313820 发表于 2023-4-10 07:09
内置一个内置温度传感器连接到ADC,可以使用cypress提供的软件功能将读数转换为温度,并进行校准和线性化。 ...
<p>理论上是应该可以的,但不知道该怎么操作</p>
页:
[1]