测试终端,打算设计成串口直接到串口转发,中间使用DMA是否可行?支持外设到外设?
1. 假如使用DMA去传输的,从一个串口到另外一个串口(或者数组),DMA如何确定每次接收到的串口数据有更新,DMA是否需要中断,DMA两端只需要有地址就行,那么DMA每次去读取串口的接收寄存器和程序去读效果一样的吗?DMA和串口FIFO存在同时使用的情况吗?
2. DMA设置好自动运行的吗?有中断,比如发送完成中断
3. DMA如何确定串口的上一个数据发送完成?如果太快,岂不是乱?
4. 假设是串口接收的话,使用DMA,不需要串口中断?DMA知道串口数据更新?
5. 在STM32的书上,是DMA把数组里面的数据传给串口,只要设置好串口即可。
6. 假如需要DMA永远执行,里面的传输长度字段怎么设置?
7. 测试终端,ADC的DMA方式,ADC如何通知DMA数据采集完成,还是底层硬件机制完成的,看代码估计是底层的。适合大数据量传输。不支持外设到外设
关键字:STM32 DMA 串口 接收
引用地址:
STM32的DMA用串口的接收
推荐阅读最新更新时间:2024-03-16 16:16
基于单片机系统采用DMA块传输方式实现高速数据采集
摘 要: 介绍一种基于单片机系统设计的DMA硬件电路,以字块传输方式与高速A/D接口。结合在数字式磁通表设计中的应用给出其硬件软件设计方案实例。
关键词: 单片机系统 直接存储器存取(DMA)方式 高速A/D
PC机中外设与内存储器之间数据直接传输的DMA功能以其高效、高速、CPU资源占用少等特点已被广泛应用,这一功能通过安装在主板上的专用DMA控制器芯片或集成在外围控制芯片来实现。单片机的应用领域也常常需要有高速数据传输或数据采集,虽然近些年单片机速度有所提高,仍然无法应付类似单脉冲信号捕获、周期信号频谱分析等需要采用高速A/D的场合。对于速率在100ksps以上的数据采集或传输一般的中断查
[应用]
STM32高级开发(15)-使用eclipse开发STM32
在最起初的时候,我刚刚接触linux上单片机的开发,最喜欢的就是 eclipse + arm-plug-in + arm-none-eabi 的开发环境,因为这是在Linux上最接近于windows下keil、IAR等IDE的开发方式,然而那是由于对eclipse亦或是makefile等编译过程中的工具的不甚了解,很多时候会遇到一些莫名的错误,也导致了那是觉得这样的环境很鬼畜,现在看来多是一些很浅显的问题,直到最近我再一次的尝试了eclipse开发环境的搭建和使用,我才很顺利的完成了程序的配置。现在也把这个方法推荐给大家,不过在使用这个方式前,还是建议大家先把之前的文章内容看懂了,否则很多时候遇到问题都会不知道怎么解决。 安装
[单片机]
STM32 ISL1208编程
view plain copy //ISL1208.h #ifndef _ISL1208_H_ #define _ISL1208_H_ #include stm32f10x.h typedef struct My_Time { u8 _year; u8 _month; u8 _day; u8 _hour; u8 _min; u8 _sec; u8 _week; } MY_TIME,*pMY_TIME; extern MY_TIME sMyTime; void ISL128Init(void); void Set
[单片机]
STM32: 一种计算CPU使用率的方法及其实现原理
1前言 出于性能方面的考虑,有的时候,我们希望知道CPU的使用率为多少,进而判断此CPU的负载情况和对于当前运行环境是否足够“胜任”。本文将介绍一种计算CPU占有率的方法以及其实现原理。 2移植算法 2.1 算法简介 此算法是基于操作系统的,理论上不限于任何操作系统,只要有任务调度就可以。本文将以FreeRTOST为例来介绍本算法的使用方法。 本文所介绍的算法出处为随Cube库一起提供的,它在cube库中的位置如下图所示: 本文将以STM32F4为例,测试环境为STM3240G-EVAL评估板。 2.2 开始移植 本文以CubeF4内的示例代码工程STM32Cube_FW_F4_V1.10.0ProjectsSTM324xG_
[单片机]
基于STM32中调试与串口之间的信息传输
问题:在使用STM32调试时,经常使用串口发送信息,为了方便调试与串口发送信息,用printf()函数实现通过串口打印信息。 方法一: 1.添加包含printf()函数的头文件:#include “stdio.h” 2.重写 stdio.h 头文件中的 int fputc(int ch, FILE *f) 函数 int fputc(int ch, FILE *f) { while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); //等待先前的字符发送完成 USART_SendData(USART1, (uint8_t) ch); //发送字符 return ch;
[单片机]
C51 中断接收 G代码 并发送回去 by mingwen
//=========================================================== // step motor 串口通信G代码 // //86 step motor,3200cts/r,f=20kHz=20000/r, //n=20000/3200=6.25r/s=375rpm, ratio=5 //n_out=75rpm, n_old=1500/75=20rpm // //f : //times=1,delay0.05ms=20000Hz=20kHz //times=2,delay0.1ms=10000Hz=10kHz //times=3,delay0.15ms
[单片机]
一文全面掌握stm32的GPIO知识
1 初学者重要提示 本文主要是以stm32H7系列为主。 对于不使用的引脚,推荐设置为模拟模式,悬空即可。 GPIO的速度等级高的时候,最好使能IO补偿单元。 2 GPIO功能简介 STM32H7的GPIO特性如下: 输出状态:开漏/推挽 + 上拉/下拉电阻。 通过输出数据寄存器(GPIOx_ODR)或者外设(GPIO设置为复用模式时)输出数据。 GPIO速度等级设置。 输入状态:浮空,上拉/下拉,模拟。 通过输入数据寄存器(GPIOx_IDR)或者外设(GPIO设置为复用模式)输入数据。 通过寄存器GPIOx_BSRR实现对寄存器GPIOx_ODR的位操作。 通过配置寄存器GPIOx_LCKR的锁机制,实现冻结IO口配置。
[单片机]
基于STM32调用固件库实现点灯
相信学过单片机的同学,对于调库这个操作都不陌生,大多数人都是从调别人的库阶段过来的。 今天看到一个评论说,如果只会调库,到了公司后会发现自己啥都不是。其实这话说的一点也不假,如果只会调库的话,你的单片机水平还停留在C语言阶段,并不能称为真正的单片机开发。 但我们要有这么一个概念:调库是自己编写的开始,如果上来就给你讲寄存器这些,我相信很多初学者都接收不了、理解不了这写寄存器到底在干啥。可是,如果从调别人库开始学习单片机,我们就会对单片机有个初始概念,对于后面的学习非常有帮助。 所以,今天我们就来看一下如何从调库工程师成为真正的开发工程师。 1. 什么是调库? 如果你通过机构的培训视频,比如野火的STM32单片机开
[单片机]