控制器c语言编程,如何用C语言对DMA控制器编程 - 全文

本文深入解析PC/AT机的DMA控制器结构和工作原理,探讨如何使用C语言进行DMA编程,涵盖DMA通道配置、地址产生方式、I/O地址设定及编程步骤,旨在解决DMA编程难题。
摘要由CSDN通过智能技术生成

摘要:详细地分析了PC/AT机系统的DMA(直接存储器存取)控制器结构及其传输方式,并给出了C语言编程实例。

DMA是英文DiretMemorAccess的缩写,即直接存储器存取,DMA传输是PC机与外设

高速数据交换的重要方法,其一个典型应用是应用于声卡的录放音过程中,录音时,CPU首先设置好声卡和DMA的传输参数。当启动DMA数据传输(即开始录音)后,即由DMA控制器DMAC)按管PC总线进行数据传输,每次传输结束后,DMA控制器便归还总线控制权,并申请CPU中断,告之数据传输完毕,然后由中断服务程序将DMA数据缓冲区中数据取走并准备下次数据传输(即录音),由于在传输过程中无需CPU干沙,因此在录音期间CPU可以执行其它程序,这样既极大地提高了数据传输速度又提高了CPU的执行效率,正是由于DMA的这些优点,所以目前在工业控制领域的数据采集过程中都大量地采用了DMA数据传输方法。但是,由于DMA编程的资料较少,因此DMA编程一直是硬件编程方面的一个难点,本文将以C语言为例详细介绍DMA编程方法。

1、PC/AT的DMA系统特点

PC/AT使用两片8237A-5芯片组成级连结构,每片8237A-5芯片内部有4个独立的通道,分别以通道O-通道7表示。但由于通道4被用作第0片和第1片的级连,因此PC/AT系统-一共能提供7个通道的DMA数据传输,在这7个通道中,除通道2作为软盘DMA传输服务,通道0留给SDIC通信透配器外,其余通道0,1,3,5.6和7均留作扩充使用,在这7个DMA通道中,通道0~3按8位数据最大传输64KB设计;面通道5-7按16位数据最大传输64K字(12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值