微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C44B0X与C54X DSP的接口设计

S3C44B0X与C54X DSP的接口设计

时间:06-26 来源:互联网 点击:

生条件,这里介绍DMA方式收发时编程中用到的一些中断产生条件。详细内容请参阅4510数据手册。

对于HDLC通道发送中断:

1. 发送FIFO下冲:此条件(TxUIE)当发送FIFO产生下冲时发生。此时DMA发送被自动禁止,因此发送中断处理程序中必须首先清除HDLC状态寄存器(HSTAT)中的相应位,然后在下次发送前使能DMA发送。

2. DMA发送Abort:此条件(DTxABTIE)当DMA发送放弃时产生,发送中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位。

3. DMA发送完毕:此条件(DTxFDIE)当DMA发送完一帧时产生,发送中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位。

4. DMA发送BUFFER描述符指针空:此条件(DTxNLIE)当当前DMA发送BUFFER描述符中指向下一个描述符的指针为空时产生。发送中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位。并重新初始化发送BUFFER描述符链表。

5. DMA发送BUFFER描述符不属于DMA所有:此条件(DTxNOIE)当当前DMA发送BUFFER描述符不属于DMA所有时发生。发送中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位。

对于HDLC通道接收中断:

1. 接收Abort:此条件(RxABTIE)当接收到Abort帧时产生,接收中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位。

2. DMA接收完毕:此条件(DRxFDIE)当DMA接收到一个完整帧时发生,接收中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位。

3. DMA接收BUFFER描述符指针空:此条件(DRxNLIE)当当前DMA接收BUFFER描述符中指向下一个描述符的指针为空时产生。接收中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位。并重新初始化接收BUFFER描述符链表。

4. DMA接收BUFFER描述符不属于DMA所有:此条件(DRxNOIE)当当前DMA接收BUFFER描述符不属于DMA所有时发生。此时DMA接收被自动禁止。因此接收中断处理程序中必须清除HDLC状态寄存器(HSTAT)中的相应位,并作相应的错误处理,避免再次发生这种错误,然后使能DMA接收功能,否则不能继续接收数据。

3.1.5:站址寄存器(HSAR0-HSAR3)和站址屏蔽寄存器(HMASK)初始化

4510利用在4个站址寄存器(HSAR0-HSAR3)中保存的站点地址配合站址屏蔽寄存器(HMASK)完成接受过程中的地址比较功能,如果一个HDLC数据帧的地址不符,此帧将被简单地丢弃而不做任何处理。具体的设置请参阅4510数据手册。

3.1.6:DMA收发BUFFER描述符链表结构建立和指针寄存器初始化

4510的HDLC通道利用BUFFER描述符这种数据结构完成DMA操作,接收和发送BUFFER

描述符以及描述符链表结构分别如附图2,3,4所示。我们的应用中,建立了双向环形链表的链表结构,而不是单向环形链表结构,双向环形链表结构与单项环形链表结构不同的地方是每个链表中的元素多了一个指向前一元素的指针。这样在软件中进行链表操作时不用每次都遍历整个链表,提高了处理速度。

链表结构建立后,需要初始化收发描述符指针寄存器,对于发送BUFFER描述符指针寄存器(HDMATxPTR),将发送BUFFER描述符链表结构的头节点地址写入其中,之后每完成一次DMA发送操作,4510会自动更新其中的地址,指向下一个发送BUFFER描述符;对于接收BUFFER描述符指针寄存器(HDMARxPTR),将接收BUFFER描述符链表结构的头节点地址写入其中,之后每完成一次DMA接收操作,4510会自动更新其中的地址,指向下一个接收BUFFER描述符。

3.1.7:使能HDLC通道的收发功能

所有的初始化工作做完后,就可以使能HDLC通道的收发功能。此时要分两种情况:

一:如果使用DMA方式收发,则需要使能HDLC通道控制寄存器(HCON)中的TxEN,RxEN,DTxEN,DRxEN四个比特位。不过,一般在发送时,有数据后才需要打开发送使能。

二:如果使用CPU方式收发,则需要使能HDLC通道控制寄存器(HCON)中的TxEN,RxEN两个比特位,DTxEN,DRxEN两个比特位一定不能打开。

3.2: HDLC通道数据发送及中断处理过程

3.2.1:HDLC通道数据发送过程

DMA方式下HDLC通道的数据发送过程可分为以下几个步骤:

1. 读取发送帧描述符指针寄存器HDMATxPTR,得到当前发送帧描述符的地址,进而得到整个发送帧描述符的内容。

2. 得到发送帧描述符中帧数据BUFFER起始地址。

3. 将准备好的HDLC帧拷贝到BUFFER中。

4. 设置当前帧描述符中的相应控制位。

5. 将发送帧描述符的OWERSHIP位设置为DMA所有。

6. 使能HDLC的DMA发送。

完成上面各步骤后,HDLC通道的DMA机制会自动将BUFFER中的数据拷贝到HDLC通道

的TxFIFO中发送出去。一帧发送完毕后,4510自动将已使用的发送BUFFER描述

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

网站地图

Top