掌桥专利:专业的专利平台
掌桥专利
首页

单片机模拟数模/模数转换芯片的实验方法及设备

文献发布时间:2024-04-18 20:00:25


单片机模拟数模/模数转换芯片的实验方法及设备

技术领域

本发明属于信号处理技术领域,尤其涉及单片机模拟数模/模数转换芯片的实验方法及设备。

背景技术

数字电路和模拟电路是高校理工科众多专业的基础课程。这两门课程的重要关键知识点在于数字信号和模拟信号之间的相互转换。对于学生来说,他们不仅需要掌握其原理,还需要掌握其实际运用技能。然而,在当前的数模电教学中,教材通常使用特定厂商型号的数字信号转模拟信号和模拟信号转数字信号的硬件芯片来进行原理和实验教学。这些芯片通常是封装的成品,其内部的信号处理逻辑也是无法向学生进行展示的,这样就给高校的数模电教学带来了很大的不便。

此外,由于科技的不断发展,市场上正在使用的特定厂商型号芯片在国内已经无法买到了。这给数模电教学带来了很大的挑战,因为理论和实验教学需要使用这些特定芯片进行讲解,并且要用这些芯片完成实验操作,还要将理论计算结果和实验观测结果进行对比教学,而新的芯片型号的技术特性、参数以及输入输出和老款芯片存在着较大的差异,这十分不利于固有教材的教学和实验。同时,由于芯片的封装形式,学生也无法了解芯片内部的结构和处理逻辑,这也限制了他们对数字电路和模拟电路的深入理解。

因此,提出单片机模拟数模/模数转换芯片的实验方法及设备,来解决现有技术存在的困难,是本领域技术人员亟需解决的问题。

发明内容

本发明提出单片机模拟数模/模数转换芯片的实验方法及设备,使用带有数模转换和模数转换外设模块的单片机,来从操作方式和数据处理逻辑原理上,完全模拟数字信号转模拟信号和模拟信号转数字信号的特定厂商型号的硬件芯片,让学生更好地了解数模转换芯片的内部结构和处理逻辑,理解信号的处理过程。

为了实现上述目的,本发明采用如下技术方案:

单片机模拟数模/模数转换芯片的实验方法,包括以下步骤:

S1:选择与所需模拟的目标芯片输入输出接口一致的接口承载PCB板,将接口承载PCB板与单片机连接,经过接口协议转换功能将接口承载PCB板接口与目标芯片行为一致化;

S2:通过单片机中芯片选择功能控制单片机动态选择适合的接口与协议转换算法,使得单片机能够正确模拟所需模拟的目标芯片信号处理逻辑和输入输出接口的功能行为;

S3:通过单片机中接口和协议转换功能完成单片机通用接口和通用信号处理协议到目标芯片的特定接口与特定信号处理逻辑的转换;

S4:输入信号通过输入信号预处理功能后再经过数模模数功能转换后得到输出信号;采集四类信号数据发送到显示器上进行显示。

上述的方法,可选的,S1中接口承载PCB板具体为:

接口承载PCB板上设置了与目标芯片输入输出接口一致的接口,其接口的名称、精度、速度、行为与目标芯片一致,接口承载PCB板有多种类型,每种类型对应一种或几种目标芯片的全部输入输出接口。

上述的方法,可选的,S3具体步骤为:对单片机的引脚、时钟、寄存器、转换参数进行动态配置,实现单片机通用接口和通用信号处理协议到目标数模/模数转换芯片的特定接口与特定信号处理逻辑的转换。

上述的方法,可选的,对单片机的引脚、时钟、寄存器、转换参数进行动态配置具体包括:

S301:将单片机上与数模和模数转换模块相连的引脚设置为正确的模式;

S302:设置数模和模数转换模块的系统时钟和外设时钟速度,确保速度与目标硬件芯片的接口协议中规定的时钟速度匹配;

S303:初始化单片机中数模和模数转换模块的数据寄存器;

S304:对转换参数的设置,包括但不限于转换模式、转换分辨率、参考电压。

上述的方法,可选的,S301具体步骤为:

S3011:选择单片机上具有数模和模数转换功能的引脚;

S3012:根据目标芯片的接口和协议,设置引脚的电气特性;

S3013:配置数模和模数转换模块的工作参数,并通过相应的控制寄存器启动数模和模数转换;

S302具体步骤为:

S3021:系统时钟配置:接口与协议转换模块读取目标芯片时钟能力数据和单片机的性能数据,设置单片机系统时钟的频率;

S3022:外设时钟配置:为数模和模数转换模块通过选择外设的时钟源和设置时钟分频系数配置适当的时钟;

S3023:根据目标硬件芯片的规格,调整时钟速度;

S3024:配置完成后,自动测试并验证时钟速度;

S304具体步骤为:

S3041:根据应用需求和目标硬件芯片的性能,设置单片机上数模和模数转换的精度,即分辨率,使数模和模数转换精度和目标芯片精度一致;

S3042:设置数模和模数转换的速度,即采样率;

S3043:根据硬件芯片的规格和应用需求,设置参考电压;

S3044:根据硬件芯片的规格和应用需求,设置数模和模数转换的输入/输出范围;

S3045:使用单片机直接内存访问模式DMA,通过编程实现自动管理ADC模数转换和DAC数模转换的数据传输;

S3046:配置完成后,通过自动测试和验证来确保转换参数设置正确。

上述的方法,可选的,S4中数据预处理功能主要包括:

S401:自动探测输入信号的信噪比、信号强度、调制方式,自主降低输入信号的干扰噪声,增强有效信号的强度,解调经过调制的信号;

S402:信号的数据格式转换:根据目标硬件芯片所支持的数据格式,在输入信号的数据格式到芯片要求的数据格式之间进行自动转换;

S403:复杂数据输入场景模拟:对需要同时并行输入多路信号的应用场景,根据基础信号和参数生成多路并行信号同时进行数模/模数转换操作。

上述的方法,可选的,S4中四类信号数据包括:输入的模拟和数字信号、经过数模/模数转换的最终结果信号、信号从输入到数模/模数转换之间的信号处理过程的中间处理结果、信号经过数模/模数转换之后到最终输出的信号处理过程的中间处理结果。

单片机模拟数模/模数转换芯片的实验设备,执行上述任一项所述的单片机模拟数模/模数转换芯片的实验方法,包括依次连接的接口承载PCB板、单片机、数据显示模块以及依次连接的设置于单片机上的芯片选择模块,接口和协议转换模块、输入信号预处理模块、数模和模数转换模块;

接口承载PCB板:接口承载PCB板上提供了和目标芯片输入输出接口完全一致的接口;

芯片选择模块:控制单片机根据模拟哪种目标芯片信号处理逻辑和输入输出接口的功能行为来动态选择接口与协议转换算法;

接口和协议转换模块:对单片机的引脚、时钟、寄存器、转换参数进行动态配置;

输入信号预处理模块:将输入信号的限制降到最低;

数据显示模块:将采集四类信号数据发送到显示器上进行显示。

上述的设备,可选的,接口和协议转换模块包括以下依次连接的子模块:引脚模式配置模块、时钟速度配置模块、数据寄存器初始化模块、转换参数设置模块;

引脚模式配置模块:将单片机上与数模和模数转换模块相连的引脚设置为正确的模式;

时钟速度配置模块:设置数模和模数转换模块的时钟速度;

数据寄存器初始化模块:初始化数模和模数转换模块的数据寄存器;

转换参数设置模块:完成转换参数的设置。

经由上述的技术方案可知,与现有技术相比,本发明提供了单片机模拟数模/模数转换芯片的实验方法及设备,具有以下有益效果:

(1)可以实现与标准教材上采用特定老式型号的数模/模数转换芯片一致的输入输出接口和信号处理逻辑行为,解决了芯片停产无法用于教学的难题;

(2)可以在教学时以可视化的图形方式完整展示数据从输入到转换输出全过程的处理细节,利于学生对于知识的深刻理解;

(3)具有良好的扩展性,可以对接真实的其他硬件,其他信号处理模块、芯片和外设模块对接组成更大的完整信号处理系统,和实际的电子信息教学内容相符,并且能够灵活扩展出各种标准教材上其他的信号系统。

(4)相比于原目标芯片而言,本发明能够通过信号预处理功能,降低对于输入信号质量、类型的限制,并且可以模拟出各种多路信号并行串行混合输入的复杂场景,极大简化教学实验的数据准备难度和降低操作复杂度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明公开的单片机模拟数模/模数转换芯片的实验方法流程图;

图2为本发明公开的单片机模拟数模/模数转换芯片的实验设备结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

参照图1所示,单片机模拟数模/模数转换芯片的实验方法,包括以下步骤:

S1:选择与所需模拟的目标芯片输入输出接口一致的接口承载PCB板,将接口承载PCB板与单片机连接,经过接口协议转换功能将接口承载PCB板接口与目标芯片行为一致化;

S2:通过单片机中芯片选择功能控制单片机动态选择适合的接口与协议转换算法,使得单片机能够正确模拟所需模拟的目标芯片信号处理逻辑和输入输出接口的功能行为;

S3:通过单片机中接口和协议转换功能完成单片机通用接口和通用信号处理协议到目标芯片的特定接口与特定信号处理逻辑的转换;

S4:输入信号通过输入信号预处理功能后再经过数模模数功能转换后得到输出信号;采集四类信号数据发送到显示器上进行显示。

进一步的,S1中接口承载PCB板具体为:

PCB板上提供了和目标芯片输入输出接口完全一致的接口,其接口的名称、精度、速度、行为与真实的目标芯片完全一致,这样的接口承载PCB板可以有多种类型,每种类型可以对应一种或几种目标芯片的全部输入输出接口。

进一步的,S3具体步骤为:对单片机的引脚、时钟、寄存器、转换参数进行动态配置,来完成单片机通用接口和通用信号处理协议到目标数模/模数转换芯片的特定接口与特定信号处理逻辑的转换。

进一步的,所述对单片机的引脚、时钟、寄存器、转换参数进行动态配置具体包括:

S301:将单片机上与数模和模数转换模块相连的引脚设置为正确的模式,例如,如果目标芯片使用的是SPI接口,那么需要将某些引脚设置为输出(用于发送数据),将某些引脚设置为输入(用于接收数据);

S302:设置数模和模数转换模块的系统时钟和外设时钟速度,确保速度与目标硬件芯片的接口协议中规定的时钟速度匹配;

S303:初始化单片机中数模和模数转换模块的数据寄存器,初始化过程通常涉及清空寄存器,设置初始值等操作;

S304:对转换参数的设置,包括但不限于转换模式、转换分辨率、参考电压,如转换模式(单次转换或连续转换)、转换分辨率、参考电压等。

进一步的,S301具体步骤为:

S3011:选择单片机上具有数模和模数转换功能的引脚,这些引脚可能是专用的或者是多功能的,若引脚是多功能的,那么需要在单片机的配置寄存器中设置引脚的工作模式,使其工作在数模和模数转换模式下,例如,若使用的是STM32系列的单片机,可以通过修改GPIO端口模式寄存器(GPIOx_MODER)来设置引脚的模式;

S3012:根据目标芯片的接口和协议,设置引脚的电气特性,如输入/输出方向、上拉/下拉电阻、开漏/推挽输出等。例如,若目标芯片接口是SPI协议,那么通常需要一个引脚作为时钟信号输出,一个引脚作为数据输入,一个引脚作为数据输出,还可能需要一个或多个引脚作为片选信号;

S3013:配置数模和模数转换模块的工作参数,并通过相应的控制寄存器启动数模和模数转换,如转换速率、分辨率、参考电压等,并通过相应的控制寄存器启动数模和模数转换;

S302具体步骤为:

S3021:系统时钟配置:接口和协议转换模块读取目标芯片时钟能力数据和单片机的性能数据,设置单片机系统时钟的频率,通过配置时钟源(例如内部RC振荡器、外部晶振等)和时钟预分频器来实现,例如,在STM32单片机中,可以通过RCC(Reset and ClockControl)模块来配置系统时钟;

S3022:外设时钟配置:为数模和模数转换模块通过选择外设的时钟源(例如APB总线、AHB总线等)和设置时钟分频系数配置适当的时钟,例如,在STM32单片机中,可以通过RCC模块来配置各个外设的时钟;

S3023:根据目标硬件芯片的规格,调整时钟速度,硬件芯片(如数模和模数转换芯片)通常会有一个最大工作频率,不能超过这个频率;

S3024:配置完成后,程序通过测试和验证来确保时钟速度设置正确,程序通过测量时钟信号的周期,或者使用单片机的调试功能来检查时钟寄存器的值;

S304具体步骤为:

S3041:根据应用需求和目标硬件芯片的性能,设置单片机上数模和模数转换的精度,即分辨率,即ADC和DAC的位数,使数模和模数转换精度和目标芯片精度一致,例如,若ADC是12位的,那么它可以将输入的模拟信号转换为0-4095之间的数字值,若如果DAC是12位的,那么它可以将0-4095之间的数字值转换为对应的模拟信号。因此,通过单片机编程设置ADC和DAC的位数,可以调整数模转换和模数转换的精度,使其精度和目标芯片精度一致,从而使得信号处理结果不失真。这通常通过配置相应的控制寄存器来实现,例如,在STM32单片机中,ADC模块的CR1寄存器可以设置ADC的分辨率;

S3042:设置数模和模数转换的速度,即采样率,即ADC和DAC每秒钟可以进行多少次转换,采样率越高,转换的速度就越快,但是,采样率过高可能会导致转换的精度降低,因此,通过编程设置ADC和DAC的采样率,可以调整数模转换和模数转换的速度,这通常涉及到选择适当的时钟源和设置时钟分频系数,例如,在STM32单片机中,ADC模块的CR2寄存器可以设置ADC的采样时间;

S3043:根据硬件芯片的规格和应用需求,设置适当的参考电压,这个电压可能是内部生成的,也可能是外部提供的,例如,在STM32单片机中,ADC模块的SMPR寄存器可以设置ADC的参考电压;

S3044:根据硬件芯片的规格和应用需求,设置数模和模数转换的输入/输出范围,例如,若是ADC,可能需要设置输入信号的最大和最小电压;若是DAC,可能需要设置输出电压的最大和最小值;

S3045:使用单片机直接内存访问模式DMA,通过编程实现自动管理ADC模数转换和DAC数模转换的数据传输,使得单片机的CPU可以在不参与数据传输的情况下执行其他任务,从而提高系统的总体性能,确保单片机的信号处理速度高于目标芯片的硬件速度;

S3046:配置完成后,通过自动测试和验证来确保转换参数设置正确,通过测量转换结果,或者使用单片机的调试功能来检查相关寄存器的值。

进一步的,S4中数据预处理功能主要包括:

S401:自动探测输入信号的信噪比、信号强度、调制方式等特征,自主降低输入信号的干扰噪声,增强有效信号的强度,解调经过调制的信号,采用的手段如滤波、过采样、放大/衰减、调制/解调等;

S402:信号的数据格式转换:根据目标硬件芯片所支持的数据格式,在输入信号的数据格式到芯片要求的数据格式之间进行自动转换,例如可以自动将二进制数据转换为十进制,或者将整数数据转换为浮点数;

S403:复杂数据输入场景模拟:对需要同时并行输入多路信号的应用场景,根据基础信号和参数生成多路并行信号同时进行数模/模数转换操作。

进一步的,S4中四类信号数据包括:输入的模拟和数字信号、经过数模/模数转换的最终结果信号、信号从输入到数模/模数转换之间的信号处理过程的中间处理结果、信号经过数模/模数转换之后到最终输出的信号处理过程的中间处理结果。

与图1方法对应的,本发明还公开了单片机模拟数模/模数转换芯片的实验设备,用于对方法的实现,具体参照图2所示,包括依次连接的接口承载PCB板、单片机、数据显示模块以及依次连接的设置于单片机上的芯片选择模块,接口和协议转换模块、输入信号预处理模块、数模和模数转换模块;

接口承载PCB板:接口承载PCB板上提供了和目标芯片输入输出接口完全一致的接口;

芯片选择模块:控制单片机根据模拟哪种目标芯片信号处理逻辑和输入输出接口的功能行为来动态选择接口与协议转换算法;

接口和协议转换模块:对单片机的引脚、时钟、寄存器、转换参数进行动态配置;

输入信号预处理模块:将输入信号的限制降到最低;

数据显示模块:将采集四类信号数据发送到显示器上进行显示。

进一步的,接口和协议转换模块包括以下依次连接的子模块:引脚模式配置模块、时钟速度配置模块、数据寄存器初始化模块、转换参数设置模块;

引脚模式配置模块:将单片机上与数模和模数转换模块相连的引脚设置为正确的模式;

时钟速度配置模块:设置数模和模数转换模块的时钟速度;

数据寄存器初始化模块:初始化数模和模数转换模块的数据寄存器;

转换参数设置模块:完成转换参数的设置。

进一步的,还包括图形化目标芯片选择配置模块:图形化的目标芯片选择配置界面,它以图形化的方式让用户在从一个目标芯片库中选择要模拟的特定厂商、型号、功能的数模/模数转换芯片,系统根据用户选择自动将该芯片的各种参数下发到单片机芯片模拟系统中,同时将芯片的配置也下载到单片机中,控制单片机自动配置各种接口和数据传输协议,并执行特定的芯片的数模/模数转换算法逻辑,实现自动化地配置单片机来模拟特定目标芯片的关键功能。它可以大大简化配置流程,辅助芯片实验教学。

具体的,图形化目标芯片选择配置模块具体步骤为:(1)目标芯片数据库,收录各种要模拟的目标芯片的参数和算法等数据;(2)图形化选择窗口,图形化拖拽方式让用户从数据库面板中选择要模拟的芯片;(3)自动生成配置参数模块,根据选择的芯片,自动生成单片机的配置文件;(4)配置工具接口,将生成的配置下载加载到单片机开发板上。

实施例:

本发明在具体的实施中选用了GD32F103VCT6单片机,来模拟数模转换目标芯片DAC0832,模拟模数转换目标芯片ADC0809。

GD32F103VCT6单片机实现DAC0832和ADC0809芯片的数模和模数转换功能时,单片机的模拟接口是特殊接口需要指定,数字控制端口可以是自由的指定。

模拟接口的对应关系为:

ADC芯片:IN0~IN7用单片机的ADC_INx引脚模拟;

DAC芯片:Iout用单片机的DAC_OUTx模拟。

在使用GD32F103VCT6单片机实现DAC0832和ADC0809芯片的数模和模数转换功能的过程中,如下这些发明步骤的具体实施方案是与特定的单片机和目标芯片的型号相关的,具体方法各种单片机和目标芯片都不一样,需要根据不同的单片机和芯片的数据手册来定制,而本发明提及的其他模块和步骤则是各种单片机和目标芯片所通用的方案。使用GD32F103VCT6单片机实现DAC0832和ADC0809芯片功能的定制化实施方案如下:

(1)引脚模式配置

1)GD32F103VCT6芯片共有多个GPIO端口,每个端口的引脚模式可以通过对应端口的GPIOx_CTL0、GPIOx_CTL1(x代表端口号A/B/C等)寄存器来设置。

具体设置如下:

A.启用GPIO端口时钟:

将RCC_APB2ENR寄存器对应的GPIO端口时钟使能位设置为1。

B.设置GPIO模式:

在GPIOx_CTL0寄存器中,针对每个引脚的MODEy位(y代表引脚编号)设置为所需模式。模式包括模拟模式、浮空输入、推挽输出、开漏输出等。

C.设置GPIO速度:

在GPIOx_CTL0寄存器中,针对每个引脚的OSPEEDy位设置为所需速度。速度可选低速、中速、高速、超高速。

D.设置上拉/下拉:

在GPIOx_CTL0寄存器中,针对每个引脚的Px_y位设置为上拉还是下拉。

E.设置复用功能:

在GPIOx_CTL1寄存器中,针对每个引脚的AFSELx位设置为1启用复用功能。

然后修改AFRyx配置所需的复用功能编号

2)DAC0832使用的是并行通信协议,通过控制位与数据位的组合实现数据传输与控制转换过程。它可以提供12位精度的数模转换功能。ADC芯片型号为ADC0809,使用的是并行通信协议,通过控制位与数据位的组合来实现模拟信号的采集和数字转换。它提供8位分辨率的模数转换功能。通过设置GD32F103VCT6的GPIO接口,可以正确实现与DAC0832和ADC0809的接口引脚的电气特性。

A.针对DAC0832在GD32F103VCT6上的接口设置,具体如下:

A1.设置GPIO为推挽输出模式

需要将DAC0832的控制位WR、CS、RD配置为GD32的GPIO推挽输出模式,在GPIOx_CTL0寄存器中将MODEy设置为01。

A2.设置数据位宽度为12位

根据DAC0832的数据位宽度为12位,所以GD32对应的GPIO数据端口位宽需要设置为12位,在GPIOx_CTL1寄存器中将IOWID设置为11。

A3.配置数据传输方向

由于DAC0832的数据线为输出,所以需要配置GD32对应数据位的GPIOx_CTL1寄存器的GPIODIRy为1,即输出方向。

A4.配置时钟频率

DAC0832的转换率为30kHz,所以GD32端口的输出时钟频率需要大于这个值,可以通过使能RCC_APB2ENR的高速IO时钟实现。

A5.匹配端口逻辑电平

根据DAC0832的供电电压,配置GD32GPIO端口的逻辑电平,如5V供电则设置为5V,与DAC0832相匹配。

B.在GD32F103VCT6上正确匹配ADC0809的接口,具体如下:

B1.数据位设置为输入模式

ADC0809的数据位宽度为8位,需要配置GD32的GPIO数据位为输入模式,在GPIOx_CTL0中设置MODEy=00。

B2.控制位设置为输出模式

ADC0809的WR、CS、RD控制位需要配置为推挽输出模式,在GD32中设置GPIOx_CTL0的MODEy=01。

B3.配置数据位宽度

根据ADC0809数据位宽是8位,所以GD32需要设置GPIO的数据端口位宽也为8位,在GPIOx_CTL1中设置IOWID=7。

B4.配置控制位的方向

GD32的GPIO支持输入输出方向设置,对ADC0809来说,控制位需要设置为输出方向,即GPIOx_CTL1中的GPIODIRy=1。

B5.配置采样时间

ADC0809的转换时间为100us,所以GD32读取数据的间隔需要大于这个时间,可以通过定时器或者软件延时实现。

B6.匹配逻辑电平

GD32的GPIO电平默认为3.3V,需要根据ADC0809的供电电压来设置端口的逻辑高电平。

配置数模和模数转换模块的工作参数

在GD32F103VCT6上实现DAC0832和ADC0809的数模和模数转换,需要正确配置DAC和ADC外设模块。

具体参数配置方法:

A.DAC配置

A1.使能DAC时钟(RCC_APB1ENR的DACEN=1);

A2.配置触发源(DAC_CTL的DMAEN/TEN/BFOEN);

A3.设置数据左对齐还是右对齐(DAC_CTL的ALIGN);

A4.选择DAC输出通道(DAC_SWTR的SELx);

A5.设置DAC输出缓冲区使能(DAC_CTL的DWBEN);

A6.写入要转换的数据到DAC_R12DH/DAC_L12DH。

B.ADC配置

B1.使能ADC时钟(RCC_APB2ENR的ADCEN=1);

B2.配置ADC分频系数(ADC_PSC寄存器);

B3.设置ADC数据对齐格式(ADC_CTL0的DAL);

B4.配置ADC扫描模式(ADC_CTL0的DISNUM);

B5.选择ADC通道(ADC_CHSEL寄存器);

B6.设置采样时间(ADC_SPLTIME寄存器);

B7.启动ADC转换(ADC_CTL0的ADCON);

B8.等待转换完成(ADC_STAT寄存器);

B9.读取转换结果(ADC_RDTR寄存器)。

(2)时钟速度配置模块

1)系统时钟配置

对于GD32F103VCT6芯片来说,主要可以通过RCC(Reset and Clock Control)模块来配置系统时钟。具体可以通过以下几个步骤:

A.配置HXTAL时钟:

A1.使能HXTAL时钟(RCC_CTL0中的HXTALEN=1);

A2.等待HXTAL稳定(RCC_CTL0中的HXTALSTB=1)。

B.设置AHB、APB1和APB2预分频器:

B1.RCC_CFG中的HPRE配置AHB预分频器;

B2.RCC_CFG中的PPRE1配置APB1预分频器;

B3.RCC_CFG中的PPRE2配置APB2预分频器。

C.选择系统时钟源:

C1.RCC_CFG中的SCLKSEL选择HXTAL或HIRC作为系统时钟。

D.配置PLL时钟:

D1.使能PLL(RCC_CTL0中的PLLEN=1);

D2.设置PLL倍频因子(RCC_CFG中的PLLMUL配置);

D3.等待PLL稳定(RCC_CTL0中的PLLSTB=1)。

E.最终将PLL作为系统时钟:

E1.RCC_CFG中的SCLKSEL选择PLL作为系统时钟。

外设时钟配置

GD32F103VCT6单片机实现DAC0832和ADC0809芯片的数模模数转换,需要正确配置两个外设DAC和ADC的时钟。具体配置步骤如下:

A.启用DAC时钟

在RCC_APB1ENR寄存器中,设置DACEN位为1,使能DAC外设时钟。

B.启用ADC时钟

在RCC_APB2ENR寄存器中,设置ADCEN位为1,使能ADC外设时钟。

C.配置ADC外设时钟预分频

ADC时钟频率需要低于14MHz,因此需要对系统时钟进行预分频。在ADC_PSC寄存器中配置预分频比,典型值为6(分频比=P+1)。

D.配置DAC/ADC引脚相关端口时钟

启用与DAC/ADC相关GPIO端口的时钟,在RCC_APB2ENR中设置对应GPIO端口的时钟使能位。

E.确认PLL输出频率

PLL时钟频率需要供给ADC使用,需要确认PLL输出在14~60MHz范围内。

F.调整FLASH延时参数

外设频率超过24MHz需要调整FLASH延时参数,确认读写FLASH是否正常。

根据目标硬件芯片的规格,调整时钟速度

根据DAC0832和ADC0809芯片的具体参数,GD32F103VCT6需要如下调整时钟速度:

A.DAC0832转换速率为30kHz,所以GD32与其接口的GPIO端口时钟频率需要大于30kHz。可以配置RCC_APB2ENR使能高速IO口,时钟一般为60MHz。

B.ADC0809的转换时间为100us,即转换速率约为10kHz。所以GD32读取ADC数据的速率需要低于这个值。可以通过定时器或者软件延时控制读取间隔在100us以上。

C.ADC0809的最大工作频率约为15kHz,因此ADC的工作时钟频率需要低于15kHz。GD32的ADC时钟来自PLL,需要保证PLL输出频率在14MHz以下,典型取4-14MHz。

D.PLL输出频率的范围为4-72MHz。为满足ADC需求,可以配置PLL倍频系数为4-14,则PLL输出频率为4-14MHz。

E.ADC时钟的预分频比可以配置为3或4,则ADC工作时钟频率在1-4.7MHz范围内,满足需求。

F.调整FLASH访问时间,读取延时大于ADC转换时间。

3)GD32F103VCT6单片机通过程序来测试和验证来确保时钟速度设置正确

A.检测GD32F103的系统时钟频率设置是否正确。

A1.直接读取RCC_CFG寄存器的SCLKSEL位域,来确认系统时钟源选择是否正确:

A1.1该位域选择HXTAL/HIRC/PLL作为系统时钟。

A2.利用SYSTICK定时器检测系统时钟:

A2.1配置SYSTICK定时器进行计数;

A2.2读出Reload和Current值来计算计数周期;

A2.3根据周期计算系统时钟频率。

A3.使用定时器输入捕获检测系统时钟频率:

A3.1使用一个定时器的输入捕获功能;

A3.2输入一个准确频率的参考信号,如1MHz;

A3.3读出捕获的计数值,计算出定时器时钟;

A3.4根据预分频系数反推出系统时钟频率。

A4.利用软件延时计时检测系统时钟:

A4.1在一个精确的延时函数中插入计数器;

A4.2统计延时函数执行的循环次数;

A4.3计算系统时钟频率。

B.检测GD32F103VCT6外设时钟速度设置是否正确:

B1.直接读取时钟频率相关寄存器的值:

B1.1读取RCC_CFG寄存器,验证PLL配置值;

B1.2读取RCC_CTL0,确认PLL稳定并作为系统时钟;

B1.3读取ADC_PSC,确认ADC预分频配置值。

B2.利用定时器进行计时测试:

B2.1配置一个定时器,如TIM3;

B2.2计数模式,计数周期为1秒;

B2.3读取定时器定时值,计算出定时器时钟;

B2.4经过预分频计算出系统时钟频率。

B3.ADC采样函数计时:

B3.1配置ADC采样一个模拟输入通道;

B3.2在ADC转换完挂起回调函数中获取时间戳;

B3.3计算每次采样的时间间隔,确保在100us以上。

B4.GPIO延时函数计时:

B4.1使用GPIO延时函数实现精确延时;

B4.2插入时钟频率计算代码,测量延时精度;

B4.3验证延时函数的延时时间与理论计算一致。

B5.打印调试信息,检查时钟相关状态。

(3)数据寄存器初始化

GD32F103VCT6使用自身的DAC和ADC外设来实现DAC0832和ADC0809芯片的数模/模数转换功能,数据寄存器的初始化针对DAC和ADC本身进行,主要步骤是:

A.DAC寄存器初始化

A1使能DAC时钟:RCC_APB1ENR|=1<<29;

A2配置DAC触发源:DAC_CTL|=触发源;

A3选择DAC输出通道:DAC_SWTR|=1<<通道号;

A4配置DAC数据对齐格式:DAC_CTL|=1<

B.ADC寄存器初始化

B1使能ADC时钟:RCC_APB2ENR|=1<<9;

B2配置ADC预分频系数:ADC_PSC=分频比;

B3选择ADC通道:ADC_CHSEL|=1<<通道号;

B4配置ADC数据格式:ADC_CTL0|=1<

B5使能ADC转换:ADC_CTL0|=1<

转换参数设置

精度配置

GD32F103VCT6的DAC和ADC都可以配置转换精度,以实现与DAC0832和ADC0809相当的转换效果。主要的精度配置步骤如下:

A.DAC精度配置

A1.DAC0832的转换精度为12位,GD32的DAC精度可以到12位,设置DAC_CTL寄存器的DWBEN位,启用DAC数据缓冲区,在DAC_R12BDHR寄存器中写12位数据进行转换;

B.ADC精度配置

B1.ADC0809的转换精度为8位,GD32的ADC精度可以到8位,设置ADC_CTL0的RES[1:0]位为00,配置ADC精度为8位,读取ADC_RD8R0寄存器得到8位转换结果;

C.降低DAC/ADC参考电压范围,增大LSB值,提高精度

C1.DAC/ADC精度与参考电压成正比,降低参考电压可以提高量程分辨率,但必须保证电压范围覆盖输入需求。

速度配置

为了使GD32F103的DAC和ADC转化速度匹配DAC0832和ADC0809,需要对转换速率进行配置:

A.DAC速度配置

DAC0832转换速率为30kHz

A1.配置GD32的DAC时钟为至少30kHz以上,使能DAC高速时钟:RCC_APB1ENR|=1<<29,配置PLL提供高速时钟

A2.配置DAC的触发源为软件触发,

DAC_CTL|=DAC_TRIGGER_SOFTWARE

A3.在循环中连续写入DAC数据寄存器,实现30kHz以上速率

B.ADC速度配置

ADC0809转换时间为100us,约10kHz

B1.配置ADC时钟不超过ADC0809的10kHz,ADC_PSC预分频配置,降低PLL频率提供ADC时钟

B2.软件通过判断ADC_STAT转换状态,控制读取频率,读取间隔时间不小于ADC0809的转换时间

参考电压配置

为了实现与DAC0832和ADC0809相同的转化特性,GD32F103的DAC和ADC需要正确配置参考电压。参考电压配置步骤如下:

A.DAC参考电压配置:

DAC0832的参考电压5V。

A1.设置GD32内部DAC参考电压值为5V。配置DAC_MCTL寄存器的VOSEL位,选择内部参考电压源。

B.ADC参考电压配置:

ADC0809的参考电压5V。

B1.设置GD32内部ADC参考电压值为5V。配置ADC_CTL1寄存器的RSEL位,选择VDDA作为参考电压源。

4)输入输出范围配置

为了匹配DAC0832和ADC0809的输入/输出范围,GD32F103的DAC和ADC需要进行如下输入输出范围配置:

A.DAC输入输出范围配置

A1.输入数据:配置为12位宽度,写入0-4095范围内的数字量进行DA转换

A2.输出电压:配置为0-5V范围,通过DAC_MCTL的MAMPx位选择量程

B.ADC输入输出范围配置

B1.输入电压:配置为0-5V范围,通过ADC_CTL1的RANGE位选择量程

B2.输出数据:配置为8位宽度,读取8位ADC数据寄存器,获取0-255范围输出

C.数据精度匹配输入量程

C1.如12位精度下,0-5V范围理论精度为1.22mV

C2.8位精度下,0-5V范围理论精度为19.5mV

D.端口电压等级可设置匹配输入输出逻辑电平

E.输入输出数量匹配(单端/差分输入,通道数量)

5)直接内存访问(DMA)模式配置

GD32F103的DAC和ADC都支持DMA传输模式,为匹配DAC0832和ADC0809,可以考虑以下DMA模式配置:

DAC DMA配置

A1.使能DAC DMA模式:DAC_CTL|=DAC_DMA_ENABLE;

A2.配置DMA传输源地址、数据个数;

A3.配置DMA触发源为DAC发送触发DMA_SxCR_EN=1;

A4.DMA会在数据传输完成后自动触发下一次传输;

A5.实现连续高速DAC转换输出。

B.ADC DMA配置

B1.使能ADC DMA模式:ADC_CTL1|=ADC_DMA_ENABLE;

B2.配置DMA目标地址、数据个数;

B3.配置DMA触发源为ADC接收触发DMA_SxCR_EN=1;

B4.DMA会在ADC转换完成后自动传输数据;

B5.实现连续高速ADC采样转换。

C.配置DMA传输数量匹配DAC/ADC转换次数

6)自动测试并验证转换参数

GD32F103配置DAC和ADC转换参数后,创建以下程序来自动测试验证:

A.测试DAC转换

A1.配置DAC通道、使能转换;

A2.循环写入Known输入数据(意指值已确定的数字量或模拟电压信号,用来作为DAC或ADC的输入测试信号,帮助我们评估转换参数是否正确),如0x800、0x1000、0xFFF;

A3.量测DAC输出电压值,计算与理论值偏差;

A4.验证量程范围、精度等参数。

B.测试ADC转换

B1.输入已知电压源,如2.5V、4.2V;

B2.配置ADC通道、启动转换;

B3.读取ADC转换结果数据data;

B4.计算电压值:U=data/4095*参考电压

B5.对比计算值与实际输入的偏差;

B6.验证输入范围、精度等参数。

C.测试DAC和ADC串联转换

C1.DAC输出连接至ADC输入;

C2.循环写入DAC数据,读取ADC数据;

C3.比对ADC读出数据与DAC写入数据;

C4.验证DAC与ADC匹配性。

D.采用中断及DMA模式,进一步测试转换性能。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 硬掩模组合物、使用硬掩模组合物形成图案的方法、和由硬掩模组合物形成的硬掩模
  • 用于制备聚酮化合物的催化剂组合物、钯混合催化剂体系、利用其的聚酮化合物制备方法及聚酮聚合物
  • 聚氨酯(甲基)丙烯酸酯、聚氨酯(甲基)丙烯酸酯的制造方法、固化性组合物、固化物和固化物的制造方法
  • 玻璃组合物、含该玻璃组合物的玻璃料浆,含该玻璃组合物的真空玻璃和电阻件及制备方法
  • 制备硅酮-丙烯酸酯杂化组合物的方法及由此形成的混合组合物
  • 制备电极组合物或具有磁特性的组合物的方法、由此获得的混合物和组合物、及该电极
技术分类

06120116526703