
STM32F103CB,用AD采样,输入电压到了57mv才能读出数据00000001。57mv以下都是00000000。 用寄存器方式写的程序, 初始化: ADC1->SR = 0x0000; //初始化 ADC1->CR1 = 0x00000000; // ADC1->CR2 = 0x00000000; //ADC1 关闭 ADC1->SMPR1 = 0x00000000; //1.5周期 ADC1->SMPR1 |= ADC_SMPR1_SMP10; 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 选择通道,瞬时电流 ADC1->JSQR = 0x00000000; // ADC1->CR2 |= ADC_CR2_ADON; //打开AD1电源 读AD程序: 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) 是延迟加清看门狗 输入是电位器中心抽头,用万用表检测的输入电压 |
stm32f407无法配置定时器2为全部dma
STM32F103TBU6 封装是VFQFPN36 将PD0和PD1配置成CAN不成功是什么原因
串口DMA + 空闲中断收发 ?
F103RCT6芯片对AFIO->MAPR寄存器写入时出错
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题
WS2812B怎么显示任意字符 / 图案?
STM32F103RCT6 定位孔 镂空,会影响使用吗?
HAL库1.8.4在做破坏性测试的时候出现g_state永远为busy的情况导致串口通信发送卡死
L9663驱动开发
用rt_thread 环境编写,DAP-LINK 下载烧录,每一次空芯片下载之后就无法二次下载。求解
仔细测了一下硬件,测的电源电压是3.26V。
将电位器高端接到了5V,用万用表检测电位器中心,旋转电位器将输入电压调整到3.36V,读出的AD值是4027。继续旋转到3.33V读出AD值4094-4095。读取的电压向上平移了
电路里面有I/O引脚通过上拉电阻接5V的,是FT引脚
感觉电压基准变了,但芯片的参考电压是内部接到电源的
将电位器高端接到了5V,用万用表检测电位器中心,旋转电位器将输入电压调整到3.36V,读出的AD值是4027。继续旋转到3.33V读出AD值4094-4095。读取的电压向上平移了
电路里面有I/O引脚通过上拉电阻接5V的,是FT引脚
感觉电压基准变了,但芯片的参考电压是内部接到电源的
将电位器高端接到了5V,用万用表检测电位器中心,旋转电位器将输入电压调整到3.26V,读出的AD值是4027。继续旋转到3.33V读出AD值4094-4095。读取的电压向上平移了
电路里面有I/O引脚通过上拉电阻接5V的,是FT引脚
感觉电压基准变了,但芯片的参考电压是内部接到电源的
1. 首先ADC 是通过采样电容与参考电压逐次比较而得到的结果。那么参考电压的稳定是一关键因素(要用示波器量) 采样电容上的电压是否充分,与充放电的软件和硬件强相关。
2. ADC并非想象的那样理想线性,理想与现实之间有一点差距,厂家通常建议使用校准功能后再启动,而楼主中的代码 似乎没有看到。
所以建议楼主最好采用库函数代码,并结合硬件,这样才能得到正确的执行和相对理想的结果。