发新帖本帖赏金 100.00元(功能说明)我要提问
返回列表
[研电赛技术支持]

四大套路——带你玩转GD32的RTThread设备ADC移植

[复制链接]
63379|12
手机看帖
扫描二维码
随时随地手机跟帖
yanzhengxin1|  楼主 | 2021-10-2 22:13 | 显示全部楼层 |阅读模式
@21小跑堂 #申请原创#
RTThread上设备ADC移植与实践
接前面RTThread上设备IIC和SPI的移植与实践,ADC也是项目中常用的功能之一,要说Cotex系列MCU没有ADC功能基本不可能,一般只是说有多少路ADC,ADC多少位采样,以及采样频率,转换时间等等方面的性能参数,所以关于ADC相关的基础知识大概百度一下也能清楚,这里就不详细说了,毕竟ADC技术以及用了许多年也是相当的成熟了。言归正传作为本次RTThread上设备ADC移植的核心芯片GD32E230C8T6,CotexM23核,ADC是10路,采样位数是12位。10路ADC分布分布与GPIOA和GPIOB上,后续配置映射中也是可以看到的。
[size=16.0000pt]1、RTThread设备ADC移植“套路”1.1、套路一
工程文件,四个文件drv_xxx.c、drv_xxx.h、xxx.c、xxx.h,此篇为ADC,因此xxx=ADC,其中drv_ADC.c和drv_ADC.h为与MCU硬件相关的驱动C文件以及头文件,ADC.c和ADC.h为RTThread内核相关的驱动C文件以及头文件。详细工程文件如下图所示
1.png 2.png 3.png
1.2、套路二
工程文件内容,drv_ADC.c文件主要包含了设备ADC的初始化以及GPIO作为ADC引脚的相关设置
4.png
GPIO引脚作为ADC功能的相关配置,其中ADC通道也进行了与STM32的MCU类似的分组,分为规则组和外部组,因此具体的怎样配置也是可以参考STM32的相关配置和说明。但是库还是用的GD自己的库当然这里还是逃不开STM32的影子。这里就不在啰嗦了,国产总需要一个过程,需要时间来修炼完善自己。总有一天会活成自己的样子,不用在再别人的影子下面行走和遭人指指点点。闲话不续,接着讲套路,呵呵........
5.png
看完配置和初始化,接下来就是出结果的时候了,ADC少不了的关键环节ADC转换,这里直接转换出读寄存器直接得到想要的值。这就是ADC转换的终极所在,就是模拟转换数字将连续的量转换为离散的值。
6.png
1.3、套路三
讲完了上面的套路二,还有一个很关键的承上启下的关键环节,这里归结为套路三,ADC硬件初始化,细看好像是硬件ADC初始化,其实里面有个关键内容那就是“注册登记”,将自己加载到RTThread内核的“设备名录”中去,这样就能让用户发现,方便用户后期进行“设备采购”,这里只是一个比喻,关键还是看内容,register函数依然贯穿每一个细节,要想被发现被使用你就必须按照RTThread的套路来安排,要不然没有谁会认识你,所以总归一句话,千万不要忘记注册。
7.png
1.4、套路四
套路二、三是完整的一个与MCUADC硬件密切关联的东西,下面的这个则是实现统一接口的RTThread的内核中ADC标准,在RTThread的用户中使用的都是rt开头的接口,因为有了这一层相关标准和后续的映射机制,因此这一部分没有任何需要改动的地方,因为这一切都是源自RTThread,具体的ADC相关功能内容有adc读,使能,禁用,注册等相关内容。
8.png
[size=16.0000pt]2、GD32E230上的ADC实践2.1、注册
完成代码的移植后,通过list_device指令,发现了adc相关设备,同pin设备一样的type类型,通过下图的验证,发现adc设备已经成功注册上RTThread中了。
9.png
2.2、ADC测试例程
结合Demo板ADC接口为PA2,ADCchannel为2通道,根据流程查找设备->使能ADC通道->读取ADC转换值->关闭ADC通道->导出到msh命令列表中。如此便完成了ADC测试例程。
10.png
小试牛刀,发现adc_vol已经导入到msh列表中
11.png
2.3、测试
通过调整Demo 板上的可调电阻阻值实现不同ADC采样值得输出,三次调整,三次输出。
12.png
2.4、实践展示
除了打印,当然还有显示,下图是demo板上显示屏显示的内容,以上内容仅供参考,如有不完善处,还请见谅以及提出意见,谢谢。
13.png
附上测试视频(对可调电阻进行调整后看到ADC曲线变化)和代码,仅供参考。


GD32E23x_Demo_RTT_ADC.rar

2.23 MB

测试视频.rar

3.68 MB

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 100.00 元 2021-10-09
理由:恭喜通过原创奖文章审核!请多多加油哦!

weifeng90| | 2021-10-7 12:34 | 显示全部楼层
不错,感谢楼主分享。

使用特权

评论回复
flytianya2010| | 2021-10-7 17:05 | 显示全部楼层
感谢楼主分享,学习了,现在缺板子验证。

使用特权

评论回复
493326732| | 2021-11-27 15:20 | 显示全部楼层

不错,感谢楼主分享

使用特权

评论回复
foxsbig| | 2021-12-1 19:17 | 显示全部楼层
这板子炫啊~~~

使用特权

评论回复
chenqianqian| | 2021-12-1 21:10 | 显示全部楼层
不错,讲解详细啊。

使用特权

评论回复
2365031858| | 2022-5-31 10:28 | 显示全部楼层
我用的GD32F303e,可是我下载的程序里面没有adc.h文件,请问你这个套路1的文件是哪里下下来的

使用特权

评论回复
kkzz| | 2022-6-6 13:16 | 显示全部楼层
RTThread移植教程有吗  

使用特权

评论回复
tabmone| | 2022-6-7 10:20 | 显示全部楼层
GD32E230C8T6兼容stm32哪个?  

使用特权

评论回复
burgessmaggie| | 2022-6-7 11:18 | 显示全部楼层
现在RTThread studio支持开啊gd32了

使用特权

评论回复
usysm| | 2022-6-7 15:56 | 显示全部楼层
RTThread设备性能怎么样?

使用特权

评论回复
kkzz| | 2022-6-7 17:17 | 显示全部楼层
RTThread占用的空间大吗?

使用特权

评论回复
edyd| | 2022-12-16 16:41 | 显示全部楼层
好极了 我来标记一下,以备后面参考:GD32E230 RTT ADC

使用特权

评论回复
发新帖 本帖赏金 100.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

140

帖子

2

粉丝