文件名称:发送流控制-史上最直白的ica教程
文件大小:5.26MB
文件格式:PDF
更新时间:2024-06-23 16:19:28
LPC23XX 中文资料
广州周立功单片机发展有限公司 第11章 以太网控制器 LPC23xx 用户手册 ©2008 Guangzhou ZLGMCU Development CO., LTD 160 如果设备驱动程序将 FlowControlCounter 寄存器的 MirrorCounter 字段的值设置为 0,则 以太网模块只能发送一个暂停控制帧。在发送了暂停帧之后,内部暂停计数器初始化为 0; 内部暂停计数器每隔 512 个位时间就执行加 1 操作。一旦它的值等于 PauseTimer 寄存器的 值,命令寄存器中的 TxFlowControl 位将复位。设备驱动软件可通过查询 TxFlowControl 位 来检测何时暂停结束。 流控制模块中的内部计数器的值可以通过 FlowControlStatus 寄存器来读取。如果 MirrorCounter 的值为非零,则 FlowControlStatus 寄存器将返回内部镜像计数器的值。如果 MirrorCounter 的值为零,则 FlowControlStatus 寄存器将返回内部暂停计数器的值。 设备驱动程序可以动态修改 MirrorCounter 寄存器的值并在零 MirrorCounter 和非零 MirrorCounter 模式之间切换。 通过置位 MAC1 配置寄存器中的“TX FLOW CONTROL”位,用户可以使能发送流控 制。如果“TX FLOW CONTROL”位为 0,则 MAC 不能发送暂停控制帧,软件必须启动暂 停帧的发送操作,并且命令寄存器中的 TxFlowControl 位应为 0。 发送流控制示例 图 11.7 显示了发送流控制。 MirrorCounter (1/515 位槽 ) 4000 150 300200 45035025050 100 500 PauseTimer MirrorCounter TxFlowCtl 清除 TxFlowCtl 正常发送 正常接收 正常接收 (R)MII 接收 (R)MII 发送 设备驱动程序 寄存器 写操作 暂停有效 发送 暂停控制帧 发送 暂停控制帧 发送 暂停控制帧 正常发送 图 11.7 发送流控制 上述例子采用的是全双工模式,即发送一帧信息的同时也接收到一帧信息。设备驱动程 序检测是否出现缓冲区溢出并设置 FlowControlCounter 寄存器的 PauseTimer 字段和 MirrorCounter 字段的值,此后,它通过置位命令寄存器中的 TxFlowControl 位来使能发送流 控制。 作为对流控制使能的响应,在当前发送帧完成发送操作之后将发送一个暂停控制帧。在 发送完暂停帧时,内部镜像计数器将启动位槽计数;一旦该计数器的值等于 MirrorCounter 字段的值,立即发送另一个暂停帧。在计数的同时,发送通道将继续正常的发送操作。 一旦软件将发送流控制禁止,发送通道将立即发送暂停定时器的值为 0x0000 的暂停帧 来恢复接收过程。 11.16.9 半双工模式背压 在半双工模式下工作时,通过发送连续的导言来产生背压将接收包暂停,连续的导言基 本上堵塞了以太网媒体上的其它任何发送操作。当以太网模块在半双工模式下工作时,命令 寄存器中的 TxFlowControl 位有效将导致在以太网线路上施加连续的导言,有效地阻塞了相