本节主要介绍eCos中stm32的ADC驱动及其应用编程。在eCos中,已经实现了stm32的ADC驱动。但在stm3210e_eval模板中,你会发现ADC驱动配置项是灰色的,也就是不能配置。

所以,我们的任务很简单:在eCos图形界面中根据板子硬件实现来配置stm32的ADC驱动(包括如何使能配置项)和编写一个应用实例(读取ADC的值,并在串口打印出来)。

配置stm32的ADC驱动

首先,在ecos.db的target中加入2个ADC相关包(分别是:CYGPKG_IO_ADC和CYGPKG_DEVS_ADC_CORTEXM_STM32),如下图灰色段:

image

打开eCos图形配置工具,菜单:Build—>Packages,左边窗口找到Generic ADC support,点击Add按钮,把其加入到右边窗口,如下图所示:

image

加入后,你会发现ST STM32 ADC device driver配置项会跑到I/O sub-system配置项下面去了,如下图所示:

image

这时候,你就可以根据你板子的硬件,对stm32的ADC进行配置了。我的配置如下:

  • 使能ADC1的配置;
  • 使能ADC1的ADC channel 14,用于读取精密可调电阻的电压值;
  • 使能ADC1的ADC channel 16,用于读取芯片内部温度传感器的温度值;
  • 其它保持默认配置即可。

ADC应用编程

ADC设备名称

应用程序使用eCos提供的设备IO(DEVIO)接口来访问ADC设备,即lookup()—>read()。在ADC驱动中,每个ADC通道对应一个设备名称,如下图所示:

image

ADC采样电压的计算

stm32F103ZE是12bit的模拟数字转换模块,因此,采样的电压的计算公式:

ADC_sameple * Vref / 4095, 其中:

  • Vref:ADC的参考电压,在安富莱开发板上,使用的是3.3V;
  • ADC_sameple:ADC采样数据值,即cyg_io_read()函数读取出来的数据,为cyg_adc_sample_t数据类型,这个数据类型需包含头文件:#include <cyg/io/adc.h> /* for cyg_adc_sample_t data type */

CPU温度计算公式

看STM32的参考手册和数据手册:

image

image

在编程中,我都是使用的典型值。

应用示例

eCos stm32 ADC驱动带有一个应用示例,详见源文件:adc1.c

应用问题

在ADC应用中,我遇到了一个问题:只要我在eCos图形配置工具中打开了ADC的任何一个通道,则不能生成正常的bin格式映像文件(但可生成正常的srec格式映像文件),如果不打开ADC任何一个通道,则可以输出正常的bin格式文件。

由于内容有点多,所以关于这个问题的解决,就放在下节来说明了。

» 文章出处: reille博客—http://velep.com , 如果没有特别声明,文章均为reille博客原创作品
» 郑重声明: 原创作品未经允许不得转载,如需转载请联系reille#qq.com(#换成@)
分享到:

 Leave a Reply

(必须)

(我会替您保密的)(必须)

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.

   
© 2012 velep.com | reille blog | 管理| 粤ICP备15065318号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量