·上一文章:廉价实用的双积分A/D转换器
·下一文章:RTX51 Tiny内核应用常见问题分析
5.4 接收控制过程
帧的接收过程分为两步:第一步由本地DMA将帧存入接收缓冲环中;第二步由远程DMA将接收缓冲环中的帧读入内存。即将网络上的数据帧接收并缓存在网卡的接收缓冲环中,然后由主机程序将缓存在缓冲环中的帧读走并存入内存中。
帧的接收工作由网卡自动完成,只需对与相关的寄存器如PSTART、PSTOP、CURR和BNRY进行适当的初始化即可。
帧读入较帧接收要复杂一些。首先必须初始化相应的寄存器RSAR、RBCR,然后再启动远程DMA读操作和主机程序的读端口操作。
以下是接收数据帧的子程序,为了获得数据长度,我们先读入18个字节的数据,然后根据有效数据的长度将帧完整读入。为了启动远程DMA读操作,应该令CR=0AH,远程DMA将从接收缓冲环的DMA地址处读入1字节并送往I/O数据端口,由主机程序读入内存。这一过程将一直持续到RBCR寄存器为0。
5.5 串口通讯子程序
为实现数据文件的串口传输编制了一个串口通讯协议,该协议由引导帧、长度帧、数据帧和确认帧等组成。其中引导帧是用于同步每一包数据的引导头,长度帧是这一包数据的总长度,数据帧是其中的数据信息,确认帧是接收方对发送方的回应。每帧数据由16个字节组成,每帧的第14个字节为标志位,第15字节为校验位。标志位中有2位帧标志位,3位序号位;校验采用和校验,只计算0-13字节,溢出值舍去。在发送方有数据发送时,先检测线路是否空闲,如线路空闲则向接收方发送“请求发送数据”命令帧。接收机收到后,如准备就绪,则回送“可以发送”的确认