|
STM32F103CB,用AD采样,输入电压到了57mv才能读出数据00000001。57mv以下都是00000000。 用寄存器方式写的程序, 初始化: ADC1->SR = 0x0000; //初始化 ADC1->CR1 = 0x00000000; // ADC1->CR2 = 0x00000000; //ADC1 关闭 //ADC1->CR2 |= ADC_CR2_TSVREFE; //ADC1->CR2 |= ADC_CR2_CONT; //连续转换模式 //ADC1->CR2 |= ADC_CR2_DMA; //使用DMA ADC1->SMPR1 = 0x00000000; //1.5周期 ADC1->SMPR1 |= ADC_SMPR1_SMP10; //239.5周期 ADC1->SMPR2 = 0x00000000; //1.5周期 ADC1->JOFR1 = 0x00000000; //数据偏移 ADC1->JOFR2 = 0x00000000; //数据偏移 ADC1->JOFR3 = 0x00000000; //数据偏移 ADC1->JOFR4 = 0x00000000; //数据偏移 ADC1->HTR = 0x00000000; //高阈值 ADC1->LTR = 0x00000000; //低阈值 ADC1->SQR1 = 0x00000000; //ADC1转换1个通道 ADC1->SQR2 = 0x00000000; // ADC1->SQR3 = 0x00000000; //ADC1 选择通道,瞬时电流 读AD程序: uint16_t i = 0x0000; ADC1->SR = 0x0000; ADC1->SQR3 = 0x00000000; ADC1->SQR3 |= ADC_SQR3_SQ1_1; //ADC1 ADC1->SQR3 |= ADC_SQR3_SQ1_3; //ADC1 第一个转换通道AN10 Delay(200); ADC1->CR2 |= ADC_CR2_ADON; //启动A/D 1转换 Delay(200); while((~ADC1->SR) & ADC_SR_EOC){Delay(1);} i = ADC1->DR; AD时钟频率8MHz Delay(1) 是延迟加清看门狗 输入是电位器中心抽头,用万用表检测的输入电压 |
KEILMDK每次都要手动选Reset and Run吗 不然下载到板子上得重启电源才行 求解答
STM32F103的USB的虚拟串口,串口助手打开的时候会收到两条数据,第一条数据是前5秒串口助手未打开时发送的,这怎么解决?
询问电源纹波对芯片的影响
STM32F103C8T6 上电后无法通过串口发出数据的问题?
VL53L5CX无法使用
stm32f107裸机+HR911105A+lwIP 1.31 SYN发送失败的问题
MCU的ADC进行电压采集时,外部输入阻抗最大能到多少?
STM32F103C8T6如何将变量定义到指定地址
STM32F103 做的USB CDC 串口调试助手打不开
DSP傅里叶变换如何在f103CBT6上使用
微信公众号
手机版
1、硬件上 电源尽量稳定,vdd vdda这些脚要接好、接全,不能有漏的。如果没有外接ref参考电压,VDDA乃ADC的基准参考;
2、在不影响整体性能前提下,采样时间尽量给足给够,不要太短;
3、使用ADC前记得做好校准,注意校准前不要启动ADC;
4、你现在是使用寄存器操作,特别注意某些时序要求,启动ADC后给它点启动稳定时间,我们可以通过查询相关标志
来确认这点;