三星ARM处理惩罚器S3C4510B的HDLC通道利用及编程
发布日期:2011-05-17
S3C4510B(以下简称4510)是韩国三星公司开辟的一款基于ARM7TDMI架构的16/32位高性能微处理惩罚器。具用丰富的外围接口,如以太网,HDLC等,可机动配置,实用于多种应用。
1:S3C4510B简介
S3C4510B(以下简称4510)是韩国三星公司开辟的一款基于
ARM7TDMI架构的16/32位高性能微处理惩罚器。具用丰富的外围接口,如以太网,HDLC等,可机动配置,实用于多种应用。
4510具有以下性能特点:
◆ 8K字节的内部CACHE,也可用作内部SRAM
◆ 两线IIC接口,作为IIC主器件利用
◆ 以太网控制器
◆ 双通道HDLC控制器
◆ 双UART
◆ 双GDMA通道
◆ 两个32位定时器
◆ 18个可编程IO端口
◆ 停止控制成果
◆ 外部SDRAM/DRAM/FLASH/ROM控制
本文重要先容4510中HDLC通道的利用和编程要领。
2:S3C4510B的HDLC通道简介
HDLC协议帧结会商特性请参阅相干册本和4510数据手册,这里不细致先容。
4510的HDLC通道布局如附图1所示。具有以下特点:
1. FIFO:发送和吸取模块都有32字节(8字)FIFO,提供CPU内部总线到HDLC串行接口之间的数据缓存成果。
2. DMA:HDLC通道的发送和吸出入持DMA方法。
3. 波特率孕育产生:4510的HDLC通道包括一个可编程的波特率孕育产生存数器,可以或许孕育产生种种波特率的传输速率。
4. DPLL:4510的HDLC通道包括一个数字锁相环(DPLL),提供了时钟规复成果,可从编码后的数据流中敏捷提取出时钟信息。
5. 编码方法:4510的HDLC通道支持五种编码方法,分别为NRZ,NRZI,FM0,FM1和差分曼彻斯特编码,编码波形请参看附图2。
细致的内容请参阅4510数据手册。
3:S3C4510B的HDLC通道事变进程先容
4510的HDLC通道收发可事变在CPU模式和DMA模式下,在我们的应用和编程中利用了DMA方法,因此这里重要先容DMA方法下的事变进程。4510的HDLC通道事变进程大抵可以分为通道初始化,数据发送,数据吸取三个部分。
3.1: HDLC通道初始化进程
HDLC通道初始化进程可分为七个步调;一:通道复位,规复其默认配置;二:通过设置事变模式寄存器(HMODE)来配置HDLC事变模式;三:通过设置控制寄存器(HCON)来控制HDLC通道的事变;四:通过设置停止控制寄存器(HINT)来控制HDLC通道的停止孕育产生;五:设置站址寄存器(HSAR0-HSAR3)和站址屏蔽寄存器(HMASK),以完成吸取操纵的地点比较成果;六:创建DMA方法的发送和吸取BUFFER形貌符链表布局,并初始化DMA发送BUFFER形貌符指针寄存器(HDMATxPTR)和DMA吸取BUFFER形貌符指针寄存器(HDMARxPTR);七:使能HDLC通道的收发成果。
3.1.1:HDLC通道复位
HDLC通道复位可通过设置控制寄存器(HCON)前4比特来完成,请参阅4510数据手册。
3.1.2:HDLC通道事变模式配置
事变模式寄存器(HMODE)中的差别位定义了差别的事变模式,这里先容较常用的几种模式设置,细致内容和配置要领请参阅4510数据手册。
1. 数据编码方法选择:从所支持的五种编码方法中选择。
2. 波特率时钟源选择:要是利用4510的内部波特率孕育产生器,则必要为其选择时钟源,同时根据差别的时钟源配置波特率孕育产生存数器(HBRGTC)孕育产生必要的时钟信号。
3. DPLL时钟源选择:要是利用DPLL,则必要为其选择要跟踪的时钟源。
4. 发送时钟选择:4510的HDLC通道支持多种发送时钟源,可通过设置HDLC通道的模式寄存器中的相应位来选择。
5. 吸取时钟选择:4510的HDLC通道支持多种吸取时钟源,可通过设置HDLC通道的模式寄存器中的相应位来选择。
3.1.3:HDLC通道控制寄存器配置
控制寄存器(HCON)控制HDLC通道事变环境,这里先容常用的控制选项,细致的内容和配置要领请参阅4510数据手册。
1. 波特率孕育产生/DPLL使能:要是利用了内部的波特率孕育产生器大概DPLL,为使它们事变,必要设置HDLC通道的控制寄存器中相应位来启动事变。
2. 收发FIFO深度设置:当利用CPU方法举行HDLC收发时,可设置收发FIFO深度。FIFO深度可设置为8字节/32字节。当利用DMA方法时,此设置无效。
3. DMA发送克制/跳过方法设置:利用DMA方法发送时,要是当前利用的发送BUFFER形貌符不属于DMA全部,可根据此设置来克制DMA发送,或是跳到发送BUFFER形貌符链表中的下一个形貌符。
4. DMA吸取克制/跳过方法设置:利用DMA方法吸取时,要是当前利用的吸取BUFFER形貌符不属于DMA全部,可根据此设置来克制DMA吸取,或是跳到吸取BUFFER形貌符链表中的下一个形貌符。
5. 通道空闲标记模式设置:确定通道空闲时发送哪种空闲标记(全1大概0X7E)。
6. Flag发送模式设置:确定帧退出方法(单FLAG大概双FLAG方法)。
7. 收发CRC校验设置:确定HDLC收发进程中是否举行CRC校验。
8. HDLC环回设置:用于HDLC环回测试,正常事变时HDLC环回应打开。
3.1.4:HDLC通道停止控制寄存器(HINT)配置
停止控制寄存器(HINT)控制HDLC收发停止的孕育产生。共有24种停止孕育产生条件,这里先容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形貌符的OWERSHIP位设置为CPU全部,并将帧形貌符指针寄存器HDMATxPTR中的内容更新为下一个未利用的发送BUFFER形貌符地点。
3.2.2:HDLC通道数据发送停止处理惩罚进程
当一帧数据通过DMA方法发送完毕,大概发送进程中出现了可引起停止的非常环境,此时软件会进入停止处理惩罚步伐。引起停止的环境停止控制寄存器的设置中已做了阐明。在我们的编程中,HDLC通道发送停止处理惩罚进程重要完成以下一些成果:
1. 进入停止后,起首打扫4510停止指示寄存器INTPEND中相应的标记位。
2. 要是DMA发送告成,则举行数据帧发送告成状态计数,并打扫HDLC通道状态寄存器HSTAT中的相应状态位。
3. 要是发送出现非常,则完成相应的非常状态计数,并打扫HDLC通道状态寄存器HSTAT中的相应位。此中有两个非常会影响以后的DMA操纵,一:发送下冲非常(TxU),产生此非常时,处理惩罚器会主动克制DMA发送成果,因此下一次发送时必须重新使能DMA发送成果;二:下一个发送帧形貌符指针为空非常(DTxNL),产生此非常时,阐明创建的DMA发送BUFFER形貌符链表布局出现了错误,因此必要重新初始化DMA发送BUFFER形貌符链表布局。
4. 做完上述处理惩罚可封闭HDLC通道的DMA发送成果,等待有数据必要发送时再重新打开,也可以不封闭。
3.3: HDLC通道数据吸取事变原理及停止处理惩罚进程
3.3.1:HDLC通道数据吸取事变原理
DMA方法下HDLC通道的数据吸取事变重要在HDLC通道初始化和DMA吸取停止处理惩罚中完成,这里重要阐发HDLC通道吸取事变原理,明白了数据吸取原理,会给我们编程带来极大的方便。HDLC通道吸取事变原理如下所述:
1. 通道初始化阶段,我们创建并初始化了HDLC吸取BUFFER形貌符链表布局,并将链表头节点的地点写入到HDLC吸取BUFFER形貌符指针寄存器HDMARxPTR,这是精确完成DMA方法吸取的条件,下面的事变都是在这个条件下主动完成的。
2. 当有数据到来时,DMA机制会从HDMARxPTR指向的吸取BUFFER形貌符中找到吸取BUFFER肇始地点,然后把收到的数据写入到BUFFER中。
3. 要是吸取无误,4510主动更新HDMARxPTR寄存器的值,使其指向下一个还未利用的吸取BUFFER形貌符,以备下一次吸取利用。利用过的吸取BUFFER形貌符的OWERSHIP位将主动设置为CPU全部,因此为了能再次利用这个吸取BUFFER形貌符,必须将它的OWERSHIP位重置为DMA全部。
4. 可以对已存储在吸取BUFFER中的数据作种种自定义的操纵,实现自定义成果。
3.3.2:HDLC通道数据吸取停止处理惩罚进程
DMA方法下HDLC通道吸取完一帧数据,大概吸取进程中出现了可引起停止的非常环境,此时软件会进入停止处理惩罚步伐。引起停止的环境在HDLC通道初始化的步调4,即停止控制寄存器的设置中已做了阐明。在我们的编程中,HDLC通道吸取停止处理惩罚进程重要完成以下一些成果:
1. 进入停止后,起首打扫4510停止指示寄存器INTPEND中相应的标记位。
2. 要是DMA吸取精确,则举行数据帧吸取告成状态计数,并打扫HDLC通道状态寄存器HSTAT中的相应状态位。对吸取到的数据帧作相应的处理惩罚后,要重新将是用过的吸取BUFFER形貌符的OWERSHIP位设置为DMA全部。
3. 要是吸取出现非常,则完成相应的非常状态计数,并打扫HDLC通道状态寄存器HSTAT中的相应位。此中有两个非常会影响以后的DMA操纵,一:DMA吸取BUFFER形貌符不属于DMA全部(DRxNO);二:DMA吸取BUFFER形貌符指针空(DRxNL)。产生这两个非常时,阐明吸取BUFFER形貌符双向环形链表布局出现错误,处理惩罚器会主动克制DMA发送成果,因此发起重构吸取BUFFER形貌符双向环形链表布局并重新使能DMA发送成果。
4:S3C4510B的HDLC通道利用中的细致事变
我们编写了4510的HDLC通道底层驱动步伐,并应用在了我们的155M SDH配置软件中。通过对软件的调试,以为在利用4510的HDLC通道时,必要细致下面的题目:
1. 发送和吸取数据大端/小端模式要同等,不然收到的数据与发送的数据高字节和低字节颠倒。
2. 利用DMA模式收发数据时,正常状态下进入停止后,读取发送BUFFER形貌符指针寄存器(HDMATxPTR)或吸取BUFFER形貌符指针寄存器(HDMARxPTR)的内容时,他们指向的都是下一个未用的BUFFER形貌符。因此想处理惩罚吸取到的数据大概初始化用过的发送BUFFER形貌符时,必要指回到它们。
3. 利用DMA方法时,发送和吸取BUFFER形貌符在利用时的OWERSHIP位必须是DMA全部。由于发送是主动的,以是当把数据放进BUFFER形貌符后,可以设置OWERSHIP位,然后启动DMA发送;而吸取是被动的,因此数据到来前,将要利用的BUFFER形貌符必须是DMA全部,这便是每次进入吸取停止后必要重置吸取BUFFER形貌符OWERSHIP位的缘故起因。
4. 当发送真个时钟信息无法转达到吸取端时,最好利用DPLL大概发送前导码,以便吸取端可以或许规复发送真个时钟信息。
5. 当利用外部时钟源发送或吸取数据时,细致数据采样点和外部时钟源的共同。我们的配置中一块芯片为4510的HDLC通道提供时钟,它在时钟上升沿发送,降落沿吸取,4510的HDLC通道默认模式是时钟降落沿发送,上升沿吸取。我们以这种模式收发数据,存在紧张的数据不稳固题目,当改为上升沿发送,降落沿吸取后,完全正常。因此数据采样点的共同很紧张。
6. 4510的HDLC通道收发方法还可以采取停止方法,由于时间紧急和本领有限,我们的步伐没有实现,有兴趣地可以参考4510数据手册实现停止方法收发。
5:总结
KS4510B是一款性价比很高的
ARM处理惩罚器,成果丰富,编程大略,并且可以共同几种嵌入式及时操纵体系,如pSOS,NUCLEUS等。我们的155M SDH传输配置中,利用4510B和NUCLEUS操纵体系,完成了底层控制软件。颠末调试,该软件性能稳固,此中HDLC通道完成了私有网管协议在SDH环网上的传输转发,实现了长途办理的成果。
随着种种电子,通讯产品对性能请求的日益进步,基于先辈的
ARM架构的种种32位微处理惩罚器也将得到越来越遍及的应用。因此,掌握了
ARM处理惩罚器的利用和编程要领,肯定能在事变中事半功倍,得到精良的结果和收益。