三星ARM处理器S3C4510B的HDLC通道使用及编程
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.
《三星ARM处理器S3C4510B的HDLC通道使用及编程(第6页)》