龙空技术网

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

21IC电子网 345

前言:

此刻姐妹们对“stm32移植rtthreadlvgl”大体比较关心,大家都需要学习一些“stm32移植rtthreadlvgl”的相关资讯。那么小编同时在网摘上搜集了一些关于“stm32移植rtthreadlvgl””的相关知识,希望小伙伴们能喜欢,姐妹们快快来了解一下吧!

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.2、套路二

工程文件内容,drv_ADC.c文件主要包含了设备ADC的初始化以及GPIO作为ADC引脚的相关设置

GPIO引脚作为ADC功能的相关配置,其中ADC通道也进行了与STM32的MCU类似的分组,分为规则组和外部组,因此具体的怎样配置也是可以参考STM32的相关配置和说明。但是库还是用的GD自己的库当然这里还是逃不开STM32的影子。这里就不再啰嗦了,国产总需要一个过程,需要时间来修炼完善自己。总有一天会活成自己的样子,不用再在别人的影子下面行走和遭人指指点点。闲话不续,接着讲套路,呵呵........

看完配置和初始化,接下来就是出结果的时候了,ADC少不了的关键环节ADC转换,这里直接转换出读寄存器直接得到想要的值。这就是ADC转换的终极所在,就是模拟转换数字将连续的量转换为离散的值。

1.3、套路三

讲完了上面的套路二,还有一个很关键的承上启下的关键环节,这里归结为套路三,ADC硬件初始化,细看好像是硬件ADC初始化,其实里面有个关键内容那就是“注册登记”,将自己加载到RTThread内核的“设备名录”中去,这样就能让用户发现,方便用户后期进行“设备采购”,这里只是一个比喻,关键还是看内容,register函数依然贯穿每一个细节,要想被发现被使用你就必须按照RTThread的套路来安排,要不然没有谁会认识你,所以总归一句话,千万不要忘记注册。

1.4、套路四

套路二、三是完整的一个与MCUADC硬件密切关联的东西,下面的这个则是实现统一接口的RTThread的内核中ADC标准,在RTThread的用户中使用的都是rt开头的接口,因为有了这一层相关标准和后续的映射机制,因此这一部分没有任何需要改动的地方,因为这一切都是源自RTThread,具体的ADC相关功能内容有adc读,使用,禁用,注册等相关内容。

[size=16.0000pt]2、GD32E230上的ADC实践2.1、注册

完成代码的移植后,通过list_device指令,发现了adc相关设备,同pin设备一样的type类型,通过下图的验证,发现adc设备已经成功注册上RTThread中了。

2.2、ADC测试例程

结合Demo板ADC接口为PA2,ADCchannel为2通道,根据流程查找设备->使能ADC通道->读取ADC转换值->关闭ADC通道->导出到msh命令列表中。如此便完成了ADC测试例程。

小试牛刀,发现adc_vol已经导入到msh列表中

2.3、测试

通过调整Demo 板上的可调电阻阻值实现不同ADC采样值得输出,三次调整,三次输出。

2.4、实践展示

除了打印,当然还有显示,下图是demo板上显示屏显示的内容,以上内容仅供参考,如有不完善处,还请见谅以及提出意见,谢谢。

附上测试视频(对可调电阻进行调整后看到ADC曲线变化)和代码,仅供参考。

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

原作者:yanzhengxin1

本文为21ic有奖征文作品,详情请见21ic论坛活动专区:第二届万元红包——蓝V达人有奖征文活动,如果您也有兴趣参与征文,欢迎进入论坛参与活动~

标签: #stm32移植rtthreadlvgl #stm32移植rtthread usb