找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1598|回复: 11
收起左侧

请问STM32F031单片机ADC配置成8位分辨率,读出的数据却是12位的?

[复制链接]
ID:284571 发表于 2022-6-30 14:14 | 显示全部楼层 |阅读模式
请问STM32F031 ADC配置 成8位分辨率 。读出的数据却是12位的。
  电压1V 如果12位  1*4095*/3.3=1240
  电压1V 如果8位  1*4095*/3.3=77

求指教

  ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;//  ADC_Resolution_12b;//12位精度
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //规定模式装换工作在连续模式
  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //不用外不触发
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//数据对其为右对齐
  ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward; //ADC的扫描方向
  ADC_Init(ADC1, &ADC_InitStructure);

回复

使用道具 举报

ID:401564 发表于 2022-6-30 23:03 | 显示全部楼层
去看一下这单片机支不支持单独的8位模式
标准库函数是为了方便移植,提供了这个功能,但单片机不一定支持这个功能
如果不支持,你又非得要8位模式,就只能位移或者其它方法来实现了
回复

使用道具 举报

ID:883242 发表于 2022-6-30 23:42 | 显示全部楼层
去st官网下载RM0091 rev.10这个文档,在13.4.2节里面写的非常清楚:

The result of the conversion is always 12 bits wide and any unused LSB bits are read as zeros.
回复

使用道具 举报

ID:284571 发表于 2022-7-1 08:07 | 显示全部楼层
Y_G_G 发表于 2022-6-30 23:03
去看一下这单片机支不支持单独的8位模式
标准库函数是为了方便移植,提供了这个功能,但单片机不一定支持这 ...

是有的。6,8,10,12位模式选择

回复

使用道具 举报

ID:284571 发表于 2022-7-1 08:19 | 显示全部楼层
Hephaestus 发表于 2022-6-30 23:42
去st官网下载RM0091 rev.10这个文档,在13.4.2节里面写的非常清楚:

The result of the conversion is a ...

你的意思不管设置多少位读出的数据都是12的?但这个是可以读6,8,10,12数据的,

捕获.JPG
回复

使用道具 举报

ID:883242 发表于 2022-7-1 09:21 | 显示全部楼层
WCM1998 发表于 2022-7-1 08:19
你的意思不管设置多少位读出的数据都是12的?但这个是可以读6,8,10,12数据的,

你找个英文勉强过得去的人给你翻译下板凳这句话。
回复

使用道具 举报

ID:401564 发表于 2022-7-1 10:11 | 显示全部楼层
WCM1998 发表于 2022-7-1 08:07
是有的。6,8,10,12位模式选择

如果有,那就看你代码的问题了
转换出来的数据长度是保持为12位,没有用到的其它位用0补齐
因为你已经设定为右对齐,那么,转换出来的就是实际的数字量了
就是和你说结果是一样:
电压1V 如果12位  1*4095*/3.3=1240
电压1V 如果8位  1*255*/3.3=77
回复

使用道具 举报

ID:891041 发表于 2022-7-1 10:53 | 显示全部楼层
配置成8位。 只是低4位ADC不转换了, 都默认为0。 只有12位中的高8位有数据。 如果你想换成纯8位格式, 自己读出来右移4位就行了。  
回复

使用道具 举报

ID:284571 发表于 2022-7-1 14:02 | 显示全部楼层
abob 发表于 2022-7-1 10:53
配置成8位。 只是低4位ADC不转换了, 都默认为0。 只有12位中的高8位有数据。 如果你想换成纯8位格式, 自 ...

懂了 ,不管你设置8.10.12位 最终出来的数据都是12位。只是低中位没转换.
我实验出来也是这样。。只是转换时快了点。
一开始是我理解错了。。以为8位转换出来就是255.

谢谢!
回复

使用道具 举报

ID:284571 发表于 2022-7-1 14:03 | 显示全部楼层
Y_G_G 发表于 2022-7-1 10:11
如果有,那就看你代码的问题了
转换出来的数据长度是保持为12位,没有用到的其它位用0补齐
因为你已经设 ...

谢谢。理解了。。
回复

使用道具 举报

ID:284571 发表于 2022-7-1 14:04 | 显示全部楼层
Hephaestus 发表于 2022-7-1 09:21
你找个英文勉强过得去的人给你翻译下板凳这句话。

谢谢,理解了
回复

使用道具 举报

ID:329625 发表于 2022-7-1 19:34 | 显示全部楼层
一般度10位,后2位不读
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表