soc(七) DMA

DMA
  • 作用
为cpu分担(内存与外设通信的)压力
cpu 的处理方式是
	获取总线占用权
	通过AHB总线从内存读数据到CPU中的通用寄存器
	通过AHB->APB总线将CPU的通用寄存器中的数据写到外设中
DMA 的处理方式是
	获取总线占用权
	通过AHB总线从内存读数据到DMA的FIFO中
	通过AHB->APB总线将DMA中的FIFO中的数据写到外设中

问题:
	DMA和CPU用的是同一总线吗?
		stm32f407 好像不是 ,cpu 用 S0(I) S1(D) S2(S).各功能DMA分别用S3-S7中的一个.
		s3c2440    好像是, cpu 用 ahb , dma 用 ahb和apb(dma位于ahb和apb的bridge上)

	DMA在工作的时候,CPU可以干什么?

	应用DMA的场景?

  • DMA在芯片中的位置(等同于CPU)
    在这里插入图片描述

  • 常见实现形式及实现概念

	1.专用DMA
	2.通用DMA
		channel 通道	,,表示功能
		stream  数据流	,,表示序号
		例如16数据流,8通道 ,可以画 16*8,可以有 16*8个单元格.每个单元格表示一个DMA对(源地址,目的地址) // 如果只标识一个,默认另一个是内存.
		例如当你选中了 1数据流,1通道的时候, DMA对是(内存,串口1的TX) ,表示你可以利用这个DMA对来 实现 内存->串口1的TX 数据传送.
		

  • 常见工作方式
#############################
############################# 开始
#############################
1、当外设有DMA需求,并且准备就绪,就向DMAC控制器发出DMA请求信号DREQ。
	: 外设  ----DMA请求信号DREQ----> DMAC
2、DMAC接到DMA请求信号后向CPU发出总线请求信号HRQ。该信号连接到CPU的HOLD信号。 
	: DMAC ----总线请求信号HRQ-----> CPU
3、CPU接到总线请求信号以后,如果允许DMA传输,则会在当前总线周期结束后,发出DMA响应信号HLDA。
	一方面CPU将控制总线、数据总线和地址总线置高阻态,即放弃对总线的控制权;
	一方面CPU将有效的HLDA信号送给DMAC,通知DMAC,CPU已经放弃了对总线的控制权。
	: CPU  ----响应信号HLDA -------> DMAC
4、DMAC获得对总线的控制权,并且向外设送出DMAC的应答信号DACK,通知外设可以开始进行DMA传输了。
	: DMAC ----应答信号DACK -------> 外设

#############################
############################# 过程
#############################

5、DMAC向存储器发送地址信号和向存储器及外设发出读/写控制信号,控制数据按初始化设定的方向传送,实现外设与内存的数据传输。
	: DMAC ---- 地址及读写控制信号-------> 内存
	: DMAC ---- 读写外设寄存器   --------> 外设 // 会在总线上形成怎样的时序
	
#############################
############################# 结束
#############################
6、数据全部传输结束后,DMAC向CPU发HOLD信号,要求撤销总线请求信号。CPU收到该信号以后,使HLDA无效,同时收回对总线的控制权。
	: DMAC ---- HOLD(撤销总线请求信号) ---------- CPU
	: CPU  ---- HLDA无效              ---------- DMAC	

  • 常见软件操作过程
1.选中DMA对,设置源地址,目的地址,设置传输大小
2.设置开始传输
3.利用 循环或者定时或者中断方式来获悉 传输结束
实例
  • 51单片机与DMA
51单片机是没有DMA的,不仅仅你说的这个型号,抄所有的51单片机都没有,当然增强型的C8051除外。
要想是普通51单片机具有DMA功能,知可以用8237来扩展,8237是一款比较老的道DMA扩展芯片了,典型电路很多,可以直接从网上找到。
	http://www.elecfans.com/emb/danpianji/20171206595614_a.html
	http://www.elecfans.com/dianzichangshi/20171206596218.html
  • cortex-m单片机与DMA
STM32F103c8
DMA
	– 7-channel DMA controller
		14个数据流,8个通道
			通道,,表示功能(例如SPI,I2C)
			数据流,,表示序号 (例如SPI1 SPI2 SPI3)
	– Peripherals supported: timers, ADC, SPIs,I2Cs and USARTs
stm32f407zgt6

General-purpose DMA
	16-stream DMA controller with FIFOs and burst support
		8 个通道
		(x-stream,y-channel) 对应一个外设 // 共 16*8个项

USB-dedicated DMA
	USB 2.0 high-speed/full-speed device/host/OTG controller with dedicated DMA, on-chip full-speed PHY and ULPI



 // 此代码完成了	边打印内存数据(DMA)   边显示数据(CPU)

// 初始化
MYDMA_Config(DMA2_Stream7,4,(u32)&USART1->DR,(u32)SendBuff,SEND_BUF_SIZE);//DMA2,STEAM7,CH4,外设为串口1,存储器为SendBuff,长度为:SEND_BUF_SIZE.

MYDMA_Enable(DMA2_Stream7,SEND_BUF_SIZE);//开始一次DMA传输!
// 此时 DMA 在传输数据,串口1 在 吐数据

// 此时CPU 可以执行下面的代码,关键是此时CPU不能访问总线了(不能访问flash中的代码,不能访问ram,下面的代码和变量其实在cache 里面)
while(1){
		if(DMA2->HISR&(1<<27))	//等待DMA2_Steam7传输完成
		{
			DMA2->HIFCR|=1<<27;	//清除DMA2_Steam7传输完成标志
			break; 
        }
		pro=DMA2_Stream7->NDTR;	//得到当前还剩余多少个数据
}



  • s3c2440


LCD-dedicated DMA
	LCD controller (up to 4K color STN and 256K color TFT) with LCD-dedicated DMA

General-purpose DMA
	· 4-ch DMA controllers with external request pins
		7个数据流,28项
	· Supports memory to memory, IO to memory,memory to IO, and IO to IO transfers
	· Burst transfer mode to enhance the transfer rate
	Peripherals supported:
		timer
			dma request mode
		usb device controller
			dma

		i2c
			dma
		spi
			dma
			DMA-based or interrupt-based operation
		camera
			dma

		pwm
			4-ch 16-bit Timer with PWM / 1-ch 16-bit internal timer with DMA-based or interrupt-based operation

		uart
			3-channel UART with DMA-based or interrupt based operation

		interrupt
			4 DMA interrupt source

		IIS-Bus Interface
		· 1-ch IIS-bus for audio interface with DMA-based operation

		SD Host Interface
			· Normal, Interrupt and DMA data transfer mode(byte, halfword, word transfer)
			· DMA burst4 access support (only word transfer)

  • i.mx6ull
Smart DMA enables data transfer between non-mastering peripherals and external or internal memories

Connectivity peripherals, timers and External Memory Interfaces:
	Embedded DMAs

其他

在 http://infocenter.arm.com/help/index.jsp 中的 corelink控制器和外设中的 system controllers 中,包括
	DMA-330 DMA Controller
	PL23x - PrimeCell µDMA Controller
	PL08x - DMA Controller
	
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值