` STM32自带一个或者两个ADC转换器,精度(12位)和速度(14M的ADC时钟)还不错,最快的情况下采样率能到1M左右,能满足一般情况下的应用。性能没问题,有问题的是配置复杂。。。 eBox将这些复杂的过程封装起来,留给用户超级简单的接口,让用户用起来舒服到家! eBox中ADC的特性:
(1)速度:ADC时钟采用eBox系统默认设置为RCC_PCLK2_Div6,即72/6=12Mhz,不可修改。每个通道的采样周期为ADC_Sampletime_28Cycles5,即28.5个ADC时钟周期完成一次采样;共开启了16个通道。使用规则顺序采样。由于使用了DMA所以也不会占用cpu资源(其实会占用一定的总线时间的,用于dma和cpu的总线仲裁)。 Tconv = (28.5+12.5)* (1/12Mhz)*16=(41周期/12Mhz)*16=3.4us*16=54.4us。此处说明ADC每个通道更新周期为54.4us,实际的采样率为18.4Khz左右。但是每个通道实际使用的时3.4us完成了一次转换。如果想提高采样率只能申请修改内核,发布特殊需求版本的lib。 (2)analog_read()的速度是不受限制的,可以高速循环调用,但是其值的更新最快速度为Tconv。 (3)精度:ADC精度采用eBox系统默认设置12位,不可修改。返回值最大为4095. 使用方法:
- #include "ebox.h"
- int16_t x;
- void setup()
- {
- ebox_init();
- uart1.begin(9600);
- PA7.mode(AIN);
- }
- int main(void)
- {
- setup();
- while(1)
- {
- x = analog_read(&PA7);
- uart1.printf("hex = %05d
- ",x);
- x = analog_read_voltage(&PA7);
- uart1.printf("val = %04dmv
- ",x);
- uart1.printf("==============
- ",x);
- delay_ms(1000);
- }
- }
复制代码
撸主,我没文化,别骗我好不好!!!这么假? 最新的源代码下载地址: https://github.com/eboxmaker/ebox_stm32
点击download zip下载源码,打开example->analog文件夹下面的文件。复制到main.cpp。
`
|