微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于ISP1581USB接口芯片的DMA传输应用

基于ISP1581USB接口芯片的DMA传输应用

时间:10-24 来源:电子产品世界 点击:

中断源寄存器、DMA端点寄存器、DMA传输计数器寄存器、DMA命令寄存器等,初始化程序如下:

void DMA_Init(void)
{
//GDMA
D14_Cntrl_Reg.D14_D MA_COMMAND=0x11; //DMA复位
//设置DMA配置寄存器
//GDMA,16bit数据,DIOR/DIOW有效,允许DMA计数器,DREQ一直保持到传完数据
D14_Cntrl_Reg.D14_GDMA _CONFIG.VALUE=0x01;
D14_Cntrl_Reg.D14_UDM A_CONFIG.VALUE=0;
//设置DMA硬件寄存器
//DIOR/DIOW低电平有效,DREQ高电平有效,DACK低有效,GDMA从机方式,EOT低有效,正常数据
D14_Cntrl_Reg.D14_DMA _HARDWARE.VALUE=0x04;
//设置DMA中断使能寄存器
//DMA传输计数器为零中断,检测到一个外部或者内部EOT中断
D14_Cntrl_Reg.D14_DMA_INT_E NABLE.VALUE=0x000d; 
}

初始化完成后,接收PC机发来的DMA传输命令,该命令包含了数据的传输方向,数据个数等信息,然后设置DMA传输标志,主程序在检测到该标志后,调用DMA传输子程序,在该子程序中,根据DMA传输方向情况分别进行DMA读写处理,在发出DMA读或者写命令前还需要对DMA端点寄存器、DMA传输计数器寄存器进行初始化,完成这些工作后,ISP1581DMA控制器将向外设DMA控制器发送DMA传输请求信号DREQ,外设在准备好传输后,返回应答信号DACK,然后启动外设DMA控制器开始DMA传输,一次DMA传输最大1024个字节,一次是否传输完成通过检测DMA中断寄存器的标志位DMA_XFER_OK及EXT_EOT进行判断,DMA_XFER_OK为1,表明DMA传输结束,EXT_EOT是强行结束GDMA传输的外部信号,本设计没有使用,已经固定接为高电平(无效状态),如果需要传输的数据大于1024字节,则需要多次传输才能完成,在传输完成后清除DMA传输标志。


图5  GDMA固件信息处理流程图

结语

通过采用DMA传输方式,USB在传输不大于1024字节数据时传输速度达到10M字/秒,但当需要传输的数据远大于1024字节时,由于DMA传输需要固件支持,实际的传输速度有所下降,设计中可以通过提高单片机的工作时钟来改善USB的传输速度。本设计已经成功应用到某测试设备中,提高了系统的数据传输速度,达到设计要求。

参考文献:
1. Philips Semiconductors公司,ISP1581 Programming Guide [EB/OL],(2002年3月).http://www.flexiusb.com
2. 广州周立功单片机发展有限公司,ISP1581:USB2.0高速接口器件,[EB/OL].http://www.zlgmcu.com
3. 刘瑰、马鸣锦、朱鸿宇,基于USB接口芯片的DMA应用,电子技术,2004,(2)
4. 孙涵芳、徐爱卿,单片机原理及应用,北京航天航空大学出版社,1996
5. 萧世文、宋延清,USB2.0硬件设计,清华大学出版社,2006

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top