单片机实现串口协议的网络化
口。 使CR=0x21,停止芯片运行,选择页面0。 使RBCR1=0;RBCR0=0,将远程DMA操作的传输字节数清零。 使PSTART=0x46;PSTOP=0x80;BNRY=0x46,设置接收开始页面、结束页面和边界页面。 使IMR=0x0,清除中断屏蔽寄存器。 使RCR=0x08+0x04,设置接收配置寄存器,允许接收多址和广播报文。 使TCR=0,设置发送配置寄存器,使用默认配置。 使DCR=0x80+0x40+0x00,设置数据配置寄存器,选择字节DMA。 使ISR=-1,设置中断状态寄存器,清除所有已有中断。 使用DMA方式,从0000H2000BH中取得本网卡MAC地址。注意,MAC地址每个byte都是重复一遍存放的,所以只要取单数1、3、5等byte就可以了。 使CR=0x61,选择页面1。 将刚才取得的MAC地址放入PAR0-5中。网卡检查接收到的包是否和PAR里MAC值匹配,然后决定收下或丢弃。所以,也可以任意设置这个PAR值,来伪造自己的MAC值。 将MAR02MAR7全部设为0xFF,允许接收所有的多址数据包。 使CURR=0x47,设置当前接收页面为0x47。 使CR=0x22,启动网卡芯片,开始接收和发送过程。 2.4 网卡工作接收和发送过程 网卡RAM是以256byte为一页,是按页存储的结构,16bit的RAM地址高8bit又叫页码。网卡的16k的RAM地址从0x400020x7fff,从页0x40到页0x7f,一共有64页。64页被接收和发送数据包用。接收和发送都是以页为最小的单位进行的。接收缓冲区需要定义,剩下的就可以作为发送缓冲区。 接收缓冲区由两个寄存器决定:PSTART(PageStartRegister)和PSTOP(PageStopRegister)。设置了接收缓冲区之后,这个缓冲区就形成了一个循环队列。控制接收缓冲区的有两个寄存器CURR、BNRY。CURR是网卡写缓冲区的指针,指向当前要写的页;BNRY是读指针,指向用户已经读走的页。 BNRY不可以超过CURR,否则没被用户读取的数据就被覆盖了。用户设置完了CURR以后,就不用管它,网卡接收到新的数据后,会自动修改它。用户读出数据后,要修改BNRY的值,以通知网卡该数据已经读出了。
- 软件化和网络化的基于Linux的雷达终端系统(10-19)
- 工业控制系统网络化的浪潮加速物联网的实现(12-21)
- C2采用1个CPU+3个DSP架构实现网络化多媒体平(12-21)
- 基于现场总线的开放式网络化数控系统的设计(12-20)
- 飞行控制总线数据网络化处理软件设计(10-29)
- 基于嵌入式技术的网络化DNC系统研究(04-09)