ADC多通道使用DMA传输的理由

本文详细解释了ADC的多通道数据存储、DMA的不同模式(扫描和连续转换)、DMA的循环模式以及中断机制。同时介绍了USART发送原理,强调了硬件串口自动传输和中断在数据通信中的作用。
摘要由CSDN通过智能技术生成

ADC多通道使用是转换的数据都存储在哪里?

ADC的多通道的数据只有一个存储的地方,那就是选择了对应的通道的寄存器,比如我们选择了规则通道,那么之后,我们的数据在抓换之后就会放下规则通道的寄存器中。而规则通道的寄存器的位置是有限的,只有16位数。也就是说,当你只使用一个通道进行数据传输的时候,是不用担心数据别覆盖的问题,因为都是测量的同一个通道的数据,只是你改变了外边模拟信号的状态之后,打印出来数字的响应快慢而已。

ADC的DMA的各自的模式选择

ADC的模式选择有两种,一个是扫描模式,一个是连续转换模式。当你开启扫描模式的时候,在转换数据的时候会按照通道的顺序,依次转换已经开启通道的数据,然后传输到规则通道寄存器中。而连续转换模式是,当你转换了一轮的时候,是否需要继续转换,这和DMA中的循环模式有点像,但是不完全一样的。

DMA只有一种模式,那就是循环模式。这里的循环模式有很多特性在手册上没有提及过。首先循环模式是什么意思呢?循环模式就是当你DMA传输完成了指定的,在外设地址寄存器和内存寄存器以及传输数量的指定的传输任务之后,会再次的将这些任务再次的执行一遍,那么这个时候就需要说说循环模式是怎么影响着三个寄存器中的值的。一般来说,如果你没有开启循环模式的话,当传输数量为0的时候,那么后续的数据就不会发生传输了,其中内存的偏移的位置也不会再移动了,就是利用传输数据的多少了限制内存中地址的偏移。那么数据传输完了第一次之后,数据就不会发生传输了。但是如果开启了循环模式的话,循环模式的作用会将每次一轮传输完了之后,重置外设地址寄存器,内存地址寄存器(将这个寄存器的值重置),和传输数量的寄存器也一样重新置位。可以理解为上述的三个寄存器的旁边有一个隐式的重装载寄存器,每当传输完了一遍之后,那么重装载寄存器的值都会自动同步到这三个寄存器中,让其开始新的一轮的数据传输。

ADC和DMA都是有中断的存在

ADC在转换完成一个数据后,可以触发中断,其中的标志位EOC就是可以表示转换成功了一个数据,同时也有寄存器有允许EOC产生中断为效果位数。但是ADC的产生中断一般不使用。因为由于ADC中数据转换的数据非常快,那么需要不断的触发中断,所以即便是双通道转换的时候,我们都很少使用中断,那么为了防止不同的通道中的转换数据进行覆盖寄存器,那就需要将数据快速的传输走,这个时候就可以用到DMA传输了,由于DMA传输的速度非常快,基本上没到数据放到了规则通道的数据寄存器中时候,DMA都能快速的传输走,那么这样就不需要中断了。

DMA中也是有中断存在的,当DMA的传输任务一般由外设的地址,内存的地址,传输数据的数量来决定的。所以当传输的数量为0的时候,其有一个传输完成的中断标志位,允许传输完成的一个寄存器位来控制传输完成的中断。这个看具体情况使用。

USART(通用同步异步收发器)发送的原理

首先我们一般使用的串口都是硬件串口,而硬件串口是自动传输的。原理是什么呢?只要我们将数据放到对应的数据寄存器中(有收取用的寄存器和发送用的寄存器,不过两者的名字都是一样的),数据就会相对应的发送出去了,而我们封装的串口的发送函数的本质也就是将数据直接放在数据寄存器中,然后硬件的串口就会自动的发送出去了。本质就是一个放在串口寄存器上面的操作。而串口也是非常有趣的,其发送的原理和收取的原理有点不一样的。在其发送的时候,只要将数据放在串口的数据寄存器的时候,就可以直接发送。(HAL中的transmit函数也是将数据放在数据寄存器中,只不过我们可以直接放在数据寄存器中,而HAL却要借助函数来操作)。而在其收取的时候,是需要CPU来参与的(或者是DMA参与的),也就是当数据收取放到了数据寄存器了之后,是需要CPU来将其放到一个缓存中来的,当CPU读取了数据寄存器之后,其中的一个标志位会自动的清零,这样的话,可以通过标志位来判断是否可以将第二个数据写入其中。而这一切的判断都是可以通过中断来实现的,这个也是需要中断的配合,需要每当发送完成一个字节后就需要触发一次中断 。而发送函数却可以不使用中断也只是可以实现的。这就是串口读取数据和发送数据的区别。      

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ADC DMA传输多通道采集程序是用于实现多通道模拟信号采集和传输的程序。ADC代表模数转换器,用于将模拟信号转换为数字信号。DMA代表直接存储器访问,是一种数据传输方式,用于高效地将数据从一个地方传输到另一个地方,而不需要CPU的干预。 在多通道采集程序中,通常会使用多个ADC模块,每个模块对应一个通道。每个通道采集到的模拟信号会经过相应的ADC模块进行模数转换,转换后的数字信号会通过DMA传输到内存中进行存储或进一步处理。 程序的运行过程一般包括以下几个步骤: 1. 配置并启动ADC模块:设置采样频率、采样精度和通道数等参数,并启动ADC模块开始采样。 2. 配置DMA:设置DMA通道、数据传输方向和缓冲区等参数,并启动DMA传输。 3. 等待DMA传输完成中断:等待DMA传输完成中断的触发,表示数据已经传输完毕。 4. 处理采集到的数据:在DMA传输完成中断中,可以读取内存中的数据进行进一步处理,例如计算平均值或进行频谱分析等。 5. 重复以上步骤进行连续采集:根据需求,可以设置程序的循环次数或条件,以实现连续的多通道采集。 ADC DMA传输多通道采集程序的优势在于,通过DMA传输,可以减少CPU的使用率,提高数据传输的效率;同时,多通道采集可以同时获取多个通道的数据,方便进行多通道信号处理和分析。这种程序在很多领域都有广泛的应用,例如声音处理、图像采集和实时控制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值