切换到宽版
下载频道
社区服务
积分商城
积分夺宝
活动聚焦
道具中心
邀请好友
会员推荐
微博关注
精华自荐
活动聚焦
领优惠券
帖子
相册
日志
群组
热榜
分享
记录
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
新站
老站
精华
领券
签到
邀请码
积分商城
帖子
用户
版块
帖子
搜索
热搜:
ADP-220AB
7600
车载收音机
石墨烯 PTC
6225
蛟龙
朗琴
sr1041
数码之家
>
我爱单片机
>
STM8学习之——ADC模数转换
发帖
回复
返回列表
新帖
4309
阅读
7
回复
[STM]
STM8学习之——ADC模数转换
[复制链接]
上一主题
下一主题
离线
zeze10000
UID:1463162
注册时间
2013-06-16
最后登录
2024-07-28
在线时间
782小时
发帖
2858
搜Ta的帖子
精华
2
M币
8559
专家
35
访问TA的空间
加好友
用道具
数码3段
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
发帖
2858
M币
8559
专家
35
粉丝
112
加关注
发消息
只看楼主
倒序阅读
我要置顶
楼主
发表于: 2018-07-19
今天我们来学学stm8的ADC功能。
stm8单片机的ADC功能还是很强大的,虽然也只有10位的分辨率,但是ADC转换模式多样。
有单次转换、连续转换、单次扫描、连续扫面。在连续模式里还有缓存,用好了能很容易实现多样功能。
stm8还带有ADC看门狗,当ADC值超范围时触发中断。
总的来说就是功能丰富。
先看看结构框图
这是ADC1,有些带的是ADC2.
虚线以上是ADC1特有的。像是缓存区、看门狗都是特有的
这里可以看到stm8内部只有一个ADC转换单元,但是stm8的ADC通道不止一个,所以就需要通过通道切换来完成多通道的转换。
这是单次转换
STM8可以自动的进行连续的转换,你只需要及时读取数据,清转换完成标志。
不用多次触发转换。
多次转换
由于STM8的转换结果有10位,所以需要两个寄存器存放
这里就涉及到了数据的存放方式,分为左对齐和右对齐
今天我们来学习最简单的ADC转换。
单次转换
今天的硬件
一个游戏摇杆,质量有点差,不过不影响实验
首先是看一下ADC端口在哪个引脚,然后再将引脚模式设置为无中断的悬浮输入。
其实也可以不设置,在ADC通道初始化时会断开引脚的输入输出电路模块。
然后设置ADC的分频和开启电源。
接下来是选择数据对齐方式。
然后关掉对应引脚的施密特触发器。
这个触发器不关是不会影响信号输入的,ADC通道使能后它就不起作用了,官方手册只是说推荐关闭以降低功耗。
再接下来再触发一次ADCON位,开始转换。
等待转换结束读取数据就行了。
需要注意的是切换通道后的第一次读取值是不对的,我估计是引脚切换后要初始化引起的,因此切换通道后第一次转换的结果直接丢掉就行了。
看看结果
这里就是摇杆的两通道的数值显示
关于第一次转换不准确的问题,我也没看到哪里有明确的说法。
我在切换通道后延时再开始转换也不行,一定要第二次转换才能得到正确数值。
知道原因的朋友麻烦告知一下,
或者说我的引脚切换过程有问题请告知。
我在程序里直接判断了是否有引脚切换,有切换则执行一次转换,不采信转换值,直接丢弃。
贴上测试程序代码
复制代码
#include<iostm8s105k4.h>
int x,y;
void init()
{
CLK_SWCR=0x20; //外部8M时钟,不分频
CLK_SWR=0xb4;
CLK_CKDIVR=0x00;
PB_DDR_DDR0=0; //输入端口配置
PB_CR1_C10=0; //悬浮输入无中断
PB_CR2_C20=0;
PB_DDR_DDR1=0; //输入端口配置
PB_CR1_C11=0;
PB_CR2_C21=0;
ADC_CR1=0x41; //8分频,开电源
ADC_CR2=0x08; //数据右对齐
ADC_TDRL=0x03;//关闭对应IO施密特触发器
}
int ADC(char ch) //读ADC值
{
int value=0;
if((ADC_CSR&0x0f)!=ch) //判断通道切换
{
ADC_CSR&=0x70; //清EOC和通道
ADC_CSR|=ch; //写转换通道
ADC_CR1|=0x01; //开始转换,执行一次转换完成初始化
while(!(ADC_CSR&0x80)); //等待转换结束
ADC_DRH; //丢弃第一次转换结果
ADC_DRL;
ADC_CSR&=0x7f; //清EOC
}
ADC_CR1|=0x01; //开始转换
while(!(ADC_CSR&0x80)); //等待转换结束
value=ADC_DRH; //取值,右对齐
value<<=8;
value|=ADC_DRL;
ADC_CSR&=0x7f; //清EOC
return value; //返回ADC值
}
int ADC_filter(char ch) //滤波,去最大最小值后取平均
{
unsigned int sum=0;
int tmp;
int max=0;
int min=1024;
char i;
for(i=0;i<10;i++) //取样10次
{
tmp=ADC(ch);
if(tmp>max) max=tmp; //取最大值
if(tmp<min) min=tmp; //取最小值
sum+=tmp; //求和
}
sum=sum-(max+min); //去掉最大最小值
sum>>=3; //右移3位,相当于除与8
return sum; //返回值
}
int main( void )
{
init();
while(1)
{
x=ADC_filter(0);
y=ADC_filter(1);
}
}
THE END!
STM8首次学习实验~流水灯
http://bbs.mydigit.cn/read.php?tid=2452931
STM8学习之——中断
http://bbs.mydigit.cn/read.php?tid=2453643
STM8学习之——TIMER4定时器
http://bbs.mydigit.cn/read.php?tid=2456190
STM8学习之——timer1输入捕获
http://bbs.mydigit.cn/read.php?tid=2457109
STM8学习之——timer1外部时钟源模式2
http://bbs.mydigit.cn/read.php?tid=2459809
STM8学习之——timer1周期测量
http://bbs.mydigit.cn/read.php?tid=2461507
STM8学习之——周期测量的疑问
http://bbs.mydigit.cn/read.php?tid=2462114
STM8学习之——timer1频率占空比测量
http://bbs.mydigit.cn/read.php?tid=2464249
STM8学习之——timer1 PWM输出
http://bbs.mydigit.cn/read.php?tid=2467013
STM8学习之——AWU自动唤醒
http://bbs.mydigit.cn/read.php?tid=2477122
STM8学习之——BEEP资源
http://bbs.mydigit.cn/read.php?tid=2477224
STM8学习之——IWDG独立看门狗
http://bbs.mydigit.cn/read.php?tid=2477395
STM8学习之——WWDG窗口看门狗
http://bbs.mydigit.cn/read.php?tid=2477802
STM8学习之——UART串口
http://bbs.mydigit.cn/read.php?tid=2479924
STM8学习之——ADC模数转换
http://bbs.mydigit.cn/read.php?tid=2480810
待更新...
本文内容包含图片或附件,获取更多资讯,请
登录
后查看;或者
注册
成为会员获得更多权限
本帖最近打赏记录:共
2
条打赏
,
M币
+45
66ok66
M币
+30
值得学习,谢谢~ 请继续.....
2018-07-19
udcs
M币
+15
謝謝分享
2018-07-19
回复
举报
离线
globe
UID:2253884
注册时间
2017-04-25
最后登录
2026-06-04
在线时间
39小时
发帖
441
搜Ta的帖子
精华
0
M币
696
专家
1
访问TA的空间
加好友
用道具
数码3级
发帖
441
M币
696
专家
1
粉丝
6
加关注
发消息
只看该作者
1楼
发表于: 2018-07-19
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
66ok66
UID:1176970
注册时间
2012-06-12
最后登录
2026-04-19
在线时间
1335小时
发帖
1356
搜Ta的帖子
精华
0
M币
860
专家
10
访问TA的空间
加好友
用道具
数码2段
发帖
1356
M币
860
专家
10
粉丝
21
加关注
发消息
只看该作者
2楼
发表于: 2018-07-19
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
hf325600
UID:1029973
注册时间
2011-12-22
最后登录
2021-07-02
在线时间
763小时
发帖
763
搜Ta的帖子
精华
0
M币
1220
专家
3
访问TA的空间
加好友
用道具
数码1段
发帖
763
M币
1220
专家
3
粉丝
13
加关注
发消息
只看该作者
3楼
发表于: 2018-07-20
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
kantu
UID:1548289
注册时间
2013-10-20
最后登录
2020-03-11
在线时间
101小时
发帖
60
搜Ta的帖子
精华
0
M币
-12
专家
1
访问TA的空间
加好友
用道具
数码5级
发帖
60
M币
-12
专家
1
粉丝
4
加关注
发消息
只看该作者
4楼
发表于: 2018-07-20
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
zeze10000
UID:1463162
注册时间
2013-06-16
最后登录
2024-07-28
在线时间
782小时
发帖
2858
搜Ta的帖子
精华
2
M币
8559
专家
35
访问TA的空间
加好友
用道具
数码3段
发帖
2858
M币
8559
专家
35
粉丝
112
加关注
发消息
只看该作者
5楼
发表于: 2018-07-20
回 kantu 的帖子
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
zxm3916
UID:2156492
注册时间
2016-11-17
最后登录
2024-01-12
在线时间
439小时
发帖
8
搜Ta的帖子
精华
0
M币
640
专家
1
访问TA的空间
加好友
用道具
数码3级
发帖
8
M币
640
专家
1
粉丝
3
加关注
发消息
只看该作者
6楼
发表于: 2019-05-31
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
离线
zxm3916
UID:2156492
注册时间
2016-11-17
最后登录
2024-01-12
在线时间
439小时
发帖
8
搜Ta的帖子
精华
0
M币
640
专家
1
访问TA的空间
加好友
用道具
数码3级
发帖
8
M币
640
专家
1
粉丝
3
加关注
发消息
只看该作者
7楼
发表于: 2019-05-31
请登录后查看
本帖最近打赏记录:共
条打赏
回复
举报
发帖
回复
返回列表
http://bbs.mydigit.cn
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
隐藏
快速跳转
◇产品交易区◇
我爱优惠购
数码交易区
数码值得买
◇电脑之家◇
电脑软硬派
WiFi/路由器
NAS/网络存储
◇数码大家谈◇
数码大家谈
机顶盒/智能电视
数码前沿
◇车主之家◇
谈车论驾
汽车拆客
汽车数码
◇拆客&拆机◇
拆机乐园
行业拆客
硬件博物馆
◇玩家进阶界◇
爱上极客
创意DIY
能工巧匠
◇电子技术区◇
电子学堂
维修达人
我爱单片机
◇半导体存储◇
U盘启动研究
U盘存储技术
SSD存储技术
◇产品讨论区◇
电源/充电器
手电筒/照明
耳机发烧友
◇工具讨论区◇
3D打印/雕刻机
我是工具控
仪表谈谈
◇数字の户外◇
骑行天地
四轴/模型
摄友沙龙
◇网站服务区◇
站务中心
家有评测
缘聚茶楼
关闭
关闭
选中
1
篇
全选