![RTL8019AS使用手册(适合入门)_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-9/11/45a61850-1176-4bd3-a28e-0e9e93ba2787/45a61850-1176-4bd3-a28e-0e9e93ba27871.gif)
![RTL8019AS使用手册(适合入门)_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-9/11/45a61850-1176-4bd3-a28e-0e9e93ba2787/45a61850-1176-4bd3-a28e-0e9e93ba27872.gif)
![RTL8019AS使用手册(适合入门)_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-9/11/45a61850-1176-4bd3-a28e-0e9e93ba2787/45a61850-1176-4bd3-a28e-0e9e93ba27873.gif)
![RTL8019AS使用手册(适合入门)_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-9/11/45a61850-1176-4bd3-a28e-0e9e93ba2787/45a61850-1176-4bd3-a28e-0e9e93ba27874.gif)
![RTL8019AS使用手册(适合入门)_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-9/11/45a61850-1176-4bd3-a28e-0e9e93ba2787/45a61850-1176-4bd3-a28e-0e9e93ba27875.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、RTL8019ASRTL8019AS 使用手册使用手册 序言序言 本资料为个人整理,由于网上和书本上的关于 RTL8019AS 的资料不详细, 而且很杂、很乱,给刚刚入门以太网的新手带来很大的难度。本人在调试过程 中也遇到了许许多多的问题,借鉴于此,所以本人把自己调试过程当中所遇到 的问题和所用到的关于 RTL8019AS 的资料搜集、整理,方便日后查看,同时也 给想用 RTL8019AS 接入以太网的朋友提供一些技术支持。本资料在搜集过程当 中,大部分来自网络,所以,在此我对网络上的大侠们表示谢意。 本资料主要是针对 8 位单片机用 RTL8019AS 接入以太网提供技术帮助,所 以对不是用
2、在 8 位模式下的信息都未搜集在内,所以此资料没有讲到 BROM 的使 用,也没有讲到 93C46 的操作等等。资料中详细阐述了使用 RTL8019AS 八位模 式下的步骤及方法,如是新手,请直接从开始看起,看 了后面,需要的时候再回过头来看前面,你就会知道前部分的用意了。 在使用 RTL8019AS 的时候,如果要了解每一个寄存器的作用,看此资料的 同时还要看一些 RTL8019AS 的英文资料,在我搜集的这些资料里,没有列出全 部的寄存器,如第 3 页的寄存器,CONFIG0-3 等等都没有列出,因为这些寄存 器只在初始化时用到,RTL8019AS 正常工作时没有用到,所以我没有整理;网
3、上的 RTL8019AS 英文资料有两个版本,两个版本的管脚图不一样,我用的芯片 管脚排列为本资料列出的管脚图,在使用 RTL8019AS 的时候自己可以对一下, 以免接错电路。对此,我认为另一个版本是错误的,因为我在网上找到的电路 图,和我自己用的电路都是本资料列出的管脚图,所以我不认为会有另一个版 本的芯片,这只是个人观点;还有就是,也许很多人都搜不到这个错误版本的 RTL8019AS 资料,在这里只是做个说明,说明网上有个错误版本的 RTL8019AS 资料而已。 2010 年 4 月 目录目录 第一、管脚配置第一、管脚配置.3 1 1 特性特性.3 2 2 管脚图管脚图.3 3 部分管
4、脚说明部分管脚说明(使用跳线工作方式使用跳线工作方式).4 4 IO 地址配置地址配置.5 5 中断管脚配置中断管脚配置.5 6 网络接口选择网络接口选择.5 第二、第二、RTL8019AS 寄存器寄存器.6 1 寄存器配置寄存器配置.6 2 寄存表寄存表.6 3 寄存器功能说明寄存器功能说明.7 3.13.1 CRCR 寄存器寄存器.7 3.23.2 ISRISR 中断状态寄存器中断状态寄存器.7 3.33.3 IMRIMR 中断屏蔽寄存器中断屏蔽寄存器.8 3.43.4 DCRDCR 数据配置寄存器数据配置寄存器.8 3.53.5 TSRTSR 传输状态寄存器传输状态寄存器.8 3.63.
5、6 TCRTCR 传输配置寄存器传输配置寄存器.9 3.73.7 RCRRCR 接收结构寄存器接收结构寄存器.10 3.83.8 RSRRSR 接收状态寄存器接收状态寄存器.10 3.93.9 RAMRAM 和常用寄存器和常用寄存器.11 接收缓存区为一个环形的使用区域,当接收缓存区为一个环形的使用区域,当 CURRCURR 达到最大值达到最大值 PSTOPPSTOP 时,网卡自动将其设置为时,网卡自动将其设置为 PSTARTPSTART,当所有的缓存区都被用完,而接收的数据又不被读走时,此时网卡内存溢出,网卡停,当所有的缓存区都被用完,而接收的数据又不被读走时,此时网卡内存溢出,网卡停 止向
6、缓存区写入数据,新接收的包将被丢弃。止向缓存区写入数据,新接收的包将被丢弃。.11 第三、开始使用第三、开始使用 RTL8019AS.12 1 1 接线接线.12 2 2 寄存器的读写寄存器的读写.13 3 3 对对 RAMRAM 的操作的操作.13 3.13.1 写写 RAMRAM.13 3.23.2 读读 RAMRAM.14 4 4 发送数据包发送数据包.14 5 5 初始化初始化 RTL8019ASRTL8019AS.16 6 6 RTL8019ASRTL8019AS 时序图时序图.18 第四、结束语第四、结束语.19 第五、读写子程序第五、读写子程序.20 第六、电路图第六、电路图.2
7、1 第一、管脚配置第一、管脚配置 1 1 特性特性 100 PIN PQFP 封装 支持 Ethernet II 和 IEEE802.3 10Base5, 10Base2, 10BaseT 软件兼容 8 位或 16 位的 NE2000 模式 支持跳线和非跳线模式 支持 8 路中断请求(IRQ) 支持 16 / 8 位 I/O 地址 内建 16K RAM 2 2 管脚图管脚图 3 部分管脚说明部分管脚说明(使用跳线工作方式使用跳线工作方式) 管脚号 名称类型 描述 6 17 47 57 70 89 VDDP+5V 14 28 44 52 83 86 GNDP 地 34AENI 地址使能,为 0
8、97-100 1-4INT7-0O 中断引脚 29IORBI 读引脚 30IOWBI 写引脚 33RSTDRVI 复位引脚,大于 800ns 的高电平将使 网卡复位 96IOCS16BI 上电复位后 RTL8019AS 检测该管脚以 决定使用 16 位还是 8 位数据,为 0 选 择 8 位数据,为 1 选择 16 位数据 64AUII 该引脚决定使用 aui 还是 bnc 接口。 bnc 接口方式支持 8 芯双绞线或同轴 电缆。为 1 时使用 aui 接口,悬空为 低电平(为 0),使用 bnc 接口。 65JPI 为 1 时选择跳线模式,为 0 时选择非 跳线模式 81 82 84 85
9、I 当选择跳线方式工作时,芯片的 i/o 地址由这几个管脚决定。 78 79 80I 当选择跳线方式工作时,芯片的中断 线由这几个管脚决定。 74 77I 当选择跳线方式工作时,网卡的接口 类型由这两个个管脚决定。一般悬空, 网卡自动检测就可以了。自动检测是 用同轴电缆还是双绞线。 27-18 16- 15 13-7 5 SA19-0I 地址总线 87-88 90- 95 43-36 SD15-0I/O 数据总线(8 位时只用 SD7-0) 61LED0O 当 LEDS0 位(在寄存器第三页 CONFIG3 寄存器中)为 0,该管脚为 LED_COL(有 数据发送或接收),为 1 时该管脚为
10、LED_LINK 62 63LED1,LED2O 当 LEDS1 位(在寄存器第三页 CONFIG3 寄存器中)为 0,该两管脚工作分别为 LED_RX,LED_TX,为 1 时,该两管脚工 作分别为 LED_CRS,MCSB 4 IO 地址配置地址配置 IOS3(85 脚)IOS2(84 脚)IOS1(82 脚)IOS0(81 脚)IO 地址 0000300H 0001320H 0010340H 0011360H 0100200H 0101220H 0110240 0111260H 1000380H 10013A0H 10103C0H 10113E0H 1100280H 11012A0H 1
11、1102C0H 11112E0H 5 中断管脚配置中断管脚配置 IRQS2(80 脚)IRQS1(79 脚)IRQS0(78 脚)中断管脚 000 INT0(4 脚) 001 INT1(3 脚) 010 INT2(2 脚) 011 INT3(1 脚) 100 INT4(100 脚) 101 INT5(99 脚) 110 INT6(98 脚) 111 INT7(97 脚) 6 网络接口选择网络接口选择 PL1(74 脚)PL1(77 脚)类型 00 自动检测(一般选择自动检测) 0110BaseT with test disabled 1010Base5 1110Base2 第二、第二、RTL8
12、019AS 寄存器寄存器 1 寄存器配置寄存器配置 RTL8019AS 共 32 个输入输出地址,其首地址由 IOS3-IOS0 决定(跳线 8 位 数据模式),地址偏移量为 00H-1FH。如 IOS3-IOS0 都为 0,则首地址为 300H;那么 300H 的偏移量为 00H, 31FH 的偏移量为 1FH。 00H0FH 为寄存器地址,共 16 个寄存器。共分成 4 页 PAGE0PAGE3,但 NE2000 兼容的寄存器只有 3 页(Page0Page2), (第四页 是 RTL8019AS 自己定义的,我们不用去管这些寄存器,因为你对第四页的寄 存器的操作仅对这个网卡是有效的,如果
13、你换成其他 Ne2000 兼容的网卡,例 如 DM9008,DP8390 等,你的程序将无法正常运行。为了保证驱动程序对所有 Ne2000 的网卡有效,不要去操作第四页的寄存器) 10H 为 DMA 地址(10H17H 的 8 个地址是一样的,都可以用来做 DMA 端口,只要用其中的一个就可以了) 18H 为复位地址,对该地址的读,或者写入任何数,都引起网卡的复位, 这种复位方式我们称作软件复位。 (18H 到1FH 共8个地址都是复位地址,每个 地址的功能都是一样的,只要其中的一个就可以了,但实际上只有 18H,1AH,1CH,1EH这几个复位端口是有效的,其他不要使用,有些兼容卡 不支持1
14、9H,1BH,1DH等奇数地址的复位) 2 寄存表寄存表 第 0 页第 1 页第 2 页第 3 页 序号 读写读/写读读写 00CRCRCRCRCRCR 01CLDA0PSTARTPAR0PSTART9346CR9346CR9347CR9347CR 02CLDA1PSTOPPAR1PSTOPBPAGEBPAGEBPAGEBPAGE 03BNRYBNRYPAR2-CONFIG0CONFIG0- 04TSRTPSRPAR3TPSRCONFIG1CONFIG1CONFIG1CONFIG1 05NCRTBCR0PAR4-CONFIG2CONFIG2CONFIG2CONFIG2 06FIFOTBCR1P
15、AR5-CONFIG3CONFIG3CONFIG3CONFIG3 07ISRISRCURR-TESTTEST 08CRDA0RSAR0MARO-CSNSAVCSNSAV- 09CRDA1RSAR1MAR1-HLTCLKHLTCLK 0A8019ID0RBCR0MAR2- 0B8019ID1RBCR1MAR3-INTRINTR- 0CRSRRCRMAR4RCR-FMWPFMWP 0DCNRT0TCRMAR5TCRCONFIG4CONFIG4- 0ECNRT1DCRMAR6DCR- 0FCNRT2IMRMAR7IMR- 10-17 远程 DMA 端口(RAM 操作地址) 18-1F 复位端口 注:
16、注:为保留,用粗体字的寄存器只在为保留,用粗体字的寄存器只在RTL8019AS里定义的,里定义的,NE2000标准不支持标准不支持 3 寄存器功能说明寄存器功能说明 3.13.1 CRCR寄存器寄存器 76543210 PS1PS2RD2RD1RD0TXPSTASTP 地址:00H 功能说明: 3.23.2 ISRISR 中中 断断状状 态态寄寄 存存器器 位于 第 0 页 地 址: 07H 类型: R/W 这个 寄存 器反 映网 卡 (NIC)的状态,主机通过它来测定中断的原因,对应位写 1 为清除,在上电后必 须清零。 3.33.3 IMRIMR 中断屏蔽寄存器中断屏蔽寄存器 地址:0FH
17、 类型:W在第0页 类型:R在第2页 位符号描述 PS1PS0 寄存器页说明 000 NE2000 兼容 011 NE2000 兼容 102 NE2000 兼容 7 6PS1 PS0 113 RTL8019AS 配置 RD2RD1RD0 说明 000 不允许 001 远程读 010 远程写 011 发送包 5-3 RD2-RD0 (这 3 位是对 RAM 操作的, 不对 RAM 操作 时置为 100, 终止 DMA) 1* 终止或完成远程 DMA 2TXP 这一位在置 1 时发送数据包,在发送完毕或终 止时自动清零,写 0 没影响 STASTP 说明 10 开始执行命令 1 0STA STP
18、01 停止命令 位符号描述 7RST 当网卡(NIC)进入复位状态时置 1,执行开始命令后清零;当接 收缓冲区溢出时置 1,读出一个或多个包后自动清零。 6RDC 当远程 DMA 操作(RAM 操作)完成后置 1 5CNT 当 MSB 的一个或多个网络计数器启动时置 1 4OVW 当接收缓冲区满时置 1 3TXE 发送一个包时,因冲突等原因而中止发送时置 1 2RXE 当接收到一个包时发现以下错误时置 1 1 CRC 校验错误 2 帧队列失败 3 丢失包 1PTX 这一位显示发送无错误(发送完数据包并无错误时置 1) 0PRX 这一位显示接收无错误(接收收到数据包并无错误时置 1) 所有的位都
19、是相应的ISR寄存器位。POWER UP=0,设置某一位会使相应的中断打 开。 位数 76543210 符号 -RDCECNTEOVWETXEERXEEPTXEPRXE 描述 溢出中断发送 接收 3.43.4 DCRDCR 数据配置寄存器数据配置寄存器 地址:0EH 类型:W 在第 0 页 类型:R 在第 2 页 3.53.5 TSRTSR 传输状态寄存器传输状态寄存器 位于第0页 地址:04H 类型: R 这个寄存器表明数据包传输的状态 位符号描述 7 总是 1 6 5FT1 FT2 FIFO 片选位,为 1 或者 0 4ARM 自动远程初始化 0:发送数据包,命令不执行 1:发送数据包,命
20、令执行 3LS Loopback 选择 0:选择 loopback 模式。对 loopback 操作,TCR 的位 1 和 2 必须编程。 1:正常操作。 2LAS 该位必须设置为 0,POWER UP=1 1BOS 字节顺序选择,8 位数据模式下初始化写 0 即可。 0WTS 字传送选择 0:宽字节(byte)的 DMA 传送 1:宽字(word)的 DMA 传送。 位符号描述 7OWC 在 51.2us 内被检测到冲突时该位被设置。数据传送如同正 常冲突一样从新传送。 6CDH 当传送器传送信号失败时该位被设置 5- 总是 1 4CRS 当传送器在传送过程中丢包时该位被设置 3ABT 说明
21、冲突中止传送 2COL 显示传输的冲突是和网络的其他节点有关 1- 总是 1 0PTX 该位表示无错误的传送 3.63.6 TCRTCR 传输配置寄存器传输配置寄存器 地址:0DH 类型:W 在第 0 页 类型:R 在第 2 页 位符号描述 7- 总是 1 6- 总是 1 5- 总是 1 4OFST 使能够冲突补偿 3ATD 自动传输禁止 0:正常操作 1:对 62 位不能正常工作的传送器多址混乱接收。 对 63 位能正常工作的传送器多址混乱接收。 LB1LB0 模式说明 000 正常操作 011 内部 Lookback 102 外部 Lookback 2 1LB1 LB0 113 外部 Lo
22、okback 网卡(NIC)的 CRC 逻辑部分包括发送的 CRC 发生器和 接收的 CRC 检查器,如果置 1,则在发送时不添加 CRC 功能, 否则在发送时附加 CRC。 条件CRC 的工作 CRC 位模式CRC 发生器CRC 检查器 0 普通使能使能 1 普通禁止使能 0Lookback 使能禁止 0CRC 1Lookback 禁止使能 3.73.7 RCRRCR 接收结构寄存器接收结构寄存器 地址:0CH 类型:W 在第 0 页 类型:R 在第 2 页 位符号描述 7- 总是 1 6- 总是 1 5MON 当监测模式位置 1,检查地址,CRC,帧队列,但不存入缓存区,否 则存入缓存区
23、4PRO 如果为 1,所有包的目标 MAC 地址都接收 如果为 0,只有当目标 MAC 地址和 PAR0-5 的值一一对应才接收 3AJM 如果为,接收目标地址为组播地址的包 如果为 0,不接收目标地址为组播地址的包 2AB 如果为 1,接收目标地址为广播地址的包 如果为 0,不接收目标地址为广播地址的包 1AR 为 1 长度小于 64 个字节的包也接收 为 0 长度小于 64 个字节的包不接收 0SEP 为 1 包有接收错误也接收 为 0 包有接收错误不接收 3.83.8 RSRRSR 接收状态寄存器接收状态寄存器 位于第0页 地址:0CH 类型: R 位符号描述 7DFR 当传送器或者冲突
24、被检测时被设置 6DIS 接收禁止。网卡进入监视模式时该位置位,接收禁止;监 视模式结束后,接收使能时重置。 5PHY 当接收到组播包或广播包时置 1,接收数据包地址为具体 目标地址时该位被重置。 4MPA 由于网卡接收缓存满或网卡处于监视模式时而导致丢包时 置位,增加 CNTR2 计数器。 3- 总是 1。 2FAE 帧队列错误位,当输入包的包尾分界不对或 CRC 位和分界 位不对应,则置 1,增加 CNTR0 计数器。 1CRC CRC 错误位。反映有 CRC 错误的数据包。此位对 FAE 错误 也被设置。增加 CNTR1 计数器。 0PRX 此位表明无错误的数据接收。 3.93.9 RA
25、MRAM 和常用寄存器和常用寄存器 网卡含有16K字节的RAM,地址为0 x4000-0 x7fff,每256个字节称为一页,共 有64 页。页的地址就是地址的高8位,页地址为0 x40-0 x7f。这16K的RAM一部分 用来存放接收的数据包,一部分用来存储待发送的数据包。 TPSRTPSR:发送 RAM 起始页地址(04H, TypeW in page0) PSTARTPSTART:接收 RAM 起始页地址(01H, Type=W in page0, Type=R in page2) PSTOPPSTOP:接收 RAM 结束页地址(02H, Type=W in Page0, Type=R
26、in Page2) BNRYBNRY:读接收 RAM 起始页地址(03H, TypeR/W in page0) CURRCURR:当前接收结束页地址(07H, Type=R/W in Page1) TBCR1,0TBCR1,0:要发送数据包的字节数(06H TBCR1,05H TBCR0, TypeW in page0) RSAR1,0RSAR1,0:读或写网卡 RAM 的起始地址高 8 位和低 8 位(09H RSAR1,08H RSAR0, Type=W in Page0) RBCR1,0RBCR1,0:读网卡 RAM 字节数的高 8 位和低 8 位(0BH RBCR1,0AH RBCR0
27、, Type=W in Page0) PAR0-5PAR0-5:MAC 地址寄存器(01H-06H, Type=R/W in Page1) 初始化时,BNRY=CURR=PSTART,当没有数据包接收时,BNRY=CURR=PSTART。当有数据 包接收时,网卡自动增加 CURR 的值,当有多个包收到时,从网卡 RAM 里读走一个包时,要 把下一个要读取的包的页地址写入 BNRY,读下一个包的时候就从此页开始读取,下一个要 读取的包的页地址为这次读的包的第二字节,如下图: 接收缓存中的一个数据包 BYTE1: BYTE2:下一个包的起始页地址,若接收包已经读完,则 BYTE2=CURR。 BY
28、TE3:本数据包长度低 8 位。 BYTE4:本数据包长度高 8 位。 根据 BYTE3、BYTE4 可知所要读的包的长度。 接收缓存区为一个环形的使用区域,当 CURR 达到最大值 PSTOP 时,网卡自动将其设置 为 PSTART,当所有的缓存区都被用完,而接收的数据又不被读走时,此时网卡内存溢出, 网卡停止向缓存区写入数据,新接收的包将被丢弃。 第三、开始使用第三、开始使用 RTL8019AS 1 1 接线接线 使用 RTL8019AS 之前,必须把他的外围电路搭起来,才能让他开始工作。本 节将介绍 RTL8019AS 如何接线,并说明具体接线的原因。网上有许多 RTL8019AS 的接
29、线图,每种接线图都略有不同,有些管脚这个电路接了高电平, 另一个电路却悬空;有些电路的地址总线 S8、S9 等接 VCC,有些却不一样,这 使得我在一开始接触 RTL8019AS 时产生了许多困惑,通过本节,你将了解到 RTL8019AS 各种接线的作用。 首先是 JP(65 脚),上电时 JP 的电位决定 RTL8019AS 的工作状态(跳线模式 还是非跳线模式),为 1 时选择跳线模式,为 0 时选择非跳线模式。在这里我接 VCC,选择跳线模式; 选择跳线模式后,IO 地址由 IOS3-IOS0 决定,所以根据自己的实际情况接 好 IOS3-IOS0,以确定 IO 地址。在这里我全部悬空(
30、悬空为低电平,芯片内有 个 100K 的下拉电阻),所以 IOS3-IOS0 都为 0,IO 地址为 300H。(IO 分配表可 查看第一章的第 4 节) 确定 IO 地址后,便可确定地址总线的接线,如:假设选择 IO 起始地址为: 300H,那么地址总线应该能输入的地址范围为 300H-31FH(偏移 1FH),转换为二 进制为: A19A19A18A18A17A17A16A16A15A15A14A14A13A13A12A12A11A11A10A10 0000000000 0000000000 0000000000 A9A9A8A8A7A7A6A6A5A5A4A4A3A3A2A2A1A1A0
31、A0 地址 11000000000 x300 11000*0 x301-0 x31e 11000111110 x31f 如上表,要输入 300H-31FH 的地址,只有 A0-A4 是有变化的,从 A5 到 A19 都是固定不变的,所以 A8 和 A9 接 VCC,其他接地;这样只要控制 A0-A4,就可 输入 300H-31FH 的地址了。如果选择其他的 IO 地址,可以列这么一个表,看哪 些是有变化的,哪些没有变化的就直接接相应的电位,以节省 CUP 的 IO 管脚。 如果要使用中断,要根据自己使用中断的管脚,确定 IRQS2-0 的接线,跳线 模式下中断管脚的配置请查看第一章的第五节。
32、然后选择 8 位数据模式,IOCS16B(96 脚),悬空或接地为 8 位数据模式,所 以我悬空,选择 8 位数据模式。 其他的管脚如:VCC,VDD,GND,LED,晶振等等的接线各个电路都相同,可参照 我下面的电路图接线即可。 2 2 寄存器的读写寄存器的读写 RTL8019AS 寄存器的访问和常规不太一样,RTL8019AS 的寄存器分为 4 页, 要访问哪一页的寄存器,首先要选择页,同时设置 STA、STP 为开始命令,不对 RAM 操作,RD2-RD0 置为 100,TXP 写 0。 CR(00H)寄存器的 PS1,PS0 决定访问哪一页, STA、STP 决定命令执行或停 止,设置
33、好后,就可以对相应的页、相应的地址做相应的操作了。 如对 CURR 的读,首先设置 CR 寄存器为:选择第 1 页,开始命令,不对 RAM 操作,RD2-RD0 置为 100,TXP 置 1 为发送包,这里写 0,如下表: 位 76543210 符号 PS1PS2RD2RD1RD0TXPSTASTP 值 011000100 x62 程序如下: rtl8019Write(CR,0 x62); /#define/#define CRCR 0 x000 x00 i = rtl8019Read(CURR); /#define/#define CURRCURR 0 x070 x07 unsignedun
34、signed charchar i i RTL8019AS 的寄存器分为 4 页,每页都有 15 个地址(01H-0FH),对哪一页的 寄存器操作先选择相应的页,然后再对其进行操作。 如以上程序,想要读 ISR,如果接着就写: i = rtl8019Read(ISR); /#define/#define ISRISR 0 x070 x07 unsignedunsigned charchar i i 这样读出的仍然是 CURR,虽然 ISR 和 CURR 定义都为 0 x07,但是当前选择的 是第一页,而 ISR 在第 0 页,要读 ISR 应先选择第 0 页,如下: rtl8019Write(
35、CR,0 x22); /#define/#define CRCR 0 x000 x00 i = rtl8019Read(ISR); /#define/#define ISRISR 0 x070 x07 unsignedunsigned charchar i i bry = rtl8019Read(BNRY); /#define/#define BNRYBNRY 0 x030 x03 unsignedunsigned charchar brybry 以上可直接读 BNRY,因为当前选择的页为第 0 页,而 BNRY 读正好在第 0 页。 在对 RTL8019AS 寄存器操作时还应该注意可读或可写
36、,如 PSTART 写在第 0 页, 而读在第 2 页,那么你要写 PSTART 就在第 0 页,要读就在第 2 页,要是你读第 0 页,就读到 CLDA0 去了。 3 3 对对 RAMRAM 的操作的操作 3.13.1 写写 RAMRAM 要写网卡 RAM,首先要设置操作 RAM 的起始地址,起始地址由第 0 页的 RSAR1,0 决定,然后启动写 RAM 命令即可。如要写数据到发送缓冲区 0 x4000, 程序如下: rtl8019Write(CR,0 x22); /#define/#define CRCR 0 x000 x00 选择第选择第 0 0 页页 rtl8019Write(RSA
37、R0,0 x00); /#define/#define RSAR0RSAR0 0 x080 x08 低低 8 8 位位 rtl8019Write(RSAR1,0 x40); /#define/#define RSAR0RSAR0 0 x090 x09 高高 8 8 位位 rtl8019Write(CR,0 x12); /#define/#define CRCR 0 x000 x00 启动写启动写 RAMRAM 命令命令 for(unsigned int i=0;i8); /#define/#define RBCR1RBCR1 0 x0b0 x0b 高高 8 8 位位 设置读字节数设置读字节数
38、rtl8019Write(CR,0 x0a); /#define/#define CRCR 0 x000 x00 启动读启动读 RAMRAM 命令命令 for(unsigned int i=0;ilength;i+) Bufferi = rtl8019Read(RDMAPORT); /#define/#define RDMAPORTRDMAPORT 0 x100 x10 4 4 发送数据包发送数据包 首先设置网卡发送数据包的 RAM 首地址,用以存放要发送的数据,和上两 节写 RAM 相同。然后设置远程读此数据包的长度,(RBCR1,0 在读数据包的时候 作用为要读数据包的长度;在发送数据包的
39、时候作用为远程接收此包时,此包 的有效字节长度,相当于 RTL8019AS 接收数据包的 Byte3,4,详细请看第二章 的 3.9 节),然后设置发送数据包的长度,然后把要发送的数据包写入 RAM,启 动发送数据包命令,发送数据包,程序如下: rtl8019Write(CR,0 x22); /第第 0 0 页页 开始命令开始命令 while( rtl8019Read(CR) /有数据包发送则等发送完毕有数据包发送则等发送完毕 rtl8019Write(TPSR,0 x40); /加载发送加载发送 RAMRAM 页的首地址页的首地址 rtl8019Write(RSAR0,0 x00); /写写
40、 RAMRAM 地址地址 低低 8 8 位位 rtl8019Write(RSAR1,0 x40); /写写 RAMRAM 地址地址 高高 8 8 位位 rtl8019Write(ISR,(18); /远程读数据包长度的高远程读数据包长度的高 8 8 位位 rtl8019Write(TBCR0, (unsigned char)(sendPacketLength); /发送数据包长度的低发送数据包长度的低 8 8 位位 rtl8019Write(TBCR1, (unsigned char)(sendPacketLength)8); /发送数据包长度的高发送数据包长度的高 8 8 位位 rtl801
41、9Write(CR,0 x12); /启动写启动写 RAMRAM 命令命令 for(unsigned int i=0;ilength;i+) rtl8019Write(RDMAPORT, Bufferi); /写数据到写数据到 RAMRAM rtl8019Write(CR,0 x24); /发送数据包发送数据包 CRCR 的的 TXP=1TXP=1 rtl8019Write(ISR, (1ISR_RDC); /清除清除 RAMRAM 操作完成标志操作完成标志 5 5 接收数据包接收数据包 读数据包之前,可通过读 BNRY 和 CURR 来判断有无数据包的接收,当 BNRY=CURR 的时候说明
42、没有数据包接收,当 BNRY 不等于 CURR 时,说明有数据 包收到,此时可从以 BNRY 为首地址的 RAM 中读出 4 个字节来判断收到数据包的 长度,从而设置 RBCR1,0(读数据包的长度),再从接收 RAM 中读出以太网数据 包。需要注意的是,设置完 RBCR1,0 后,再从 RAM 读数据包的时候,首地址为 BNRY+4,因为前 4 个字节已经读过了,如果不加 4,读到的数据将不完整;同 时,读之前还要判断是否有内存溢出,如果溢出,则做相应的处理。 rtl8019ProcessInterrupt(); /检测检测 RAMRAM 是否溢出是否溢出 rtl8019Write(CR,0
43、 x62); /第第 1 1 页页 读读 CURRCURR curr = rtl8019Read(CURR); / 读读 CURRCURR rtl8019Write(CR,0 x22); /第第 0 0 页页 读读 BNRYBNRY bnry = rtl8019Read(BNRY) ; /读读 BNRYBNRY if( bnry = curr ) return ; /没有包,返回没有包,返回 rtl8019Write(ISR, (1ISR_PRX); /清除接收中断标志清除接收中断标志 /读前读前 4 4 个字节,用以判断数据包的长度个字节,用以判断数据包的长度 rtl8019Write(RB
44、CR0, 4); rtl8019Write(RBCR1, 0); rtl8019Write(RSAR0, 0); rtl8019Write(RSAR1, bnry); rtl8019Write(CR, 0 x0A); /启动读启动读 RAMRAM 命令命令 for(i=0;i4;i+) bufferi = rtl8019Read(RDMAPORT); rtl8019Write(CR, 0 x22); /终止终止 RAMRAM 操作操作 /等待等待 RAMRAM 操作完成操作完成 for(i = 0; i = 20; i+) if(rtl8019Read(ISR) rtl8019Write(IS
45、R, 16); /清除清除 RAMRAM 操作完成中断标志操作完成中断标志 rxlen = (buffer38) + buffer2; /数据包实际长度数据包实际长度 nextPage = buffer1 ; /下一数据包页的首地址下一数据包页的首地址 ReadAddress = (bnry8); rtl8019Write(RSAR0, (unsigned char) ReadAddress); rtl8019Write(RSAR1, (unsigned char)( ReadAddress8); rtl8019Write(CR, 0 x0A); /启动读启动读 RAMRAM 命令命令 for
46、(i=0;i(rxlen-4);i+) DataBufferi = rtl8019Read(RDMAPORT); rtl8019Write(CR, 0 x22); /终止终止 RAMRAM 操作操作 /等待等待 RAMRAM 操作完成操作完成 for(i = 0; i = 20; i+) if(rtl8019Read(ISR) rtl8019Write(ISR, 16); /清除清除 RAMRAM 操作完成中断标志操作完成中断标志 rtl8019Write(BNRY, nextPage); /设置下一个数据包的页地址设置下一个数据包的页地址 5 5 初始化初始化 RTL8019ASRTL8019AS RTL8019AS 的初始化主要是设置一些工作参数,如 RAM 的分配,中断的初始 化,MAC 地址的设置,接收设置,发送设置等等,具体在以下程序中注释。 void rtl8019Init(void) RTL8019_RESET_PORT_H(); /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB6528T 140-2024库尔勒香梨密植高效栽培技术规程
- 五年期产品供应合同书
- 个人住房融资合同协议书
- 人事保管档案合同实施细则
- 个人养殖场合作协议合同
- 个人合伙合作协议书合同范本
- 个人借款合同延期至协议
- 产品销售补偿合同范本
- 买卖合同纠纷起诉书范本
- XX市小学结对合作合同
- 2024-2025学年湖北省武汉市部分重点中学高一上学期期末联考数学试卷(含答案)
- 排球正面上手传球 说课稿-2023-2024学年高一上学期体育与健康人教版必修第一册
- 2025年浙江省交通投资集团财务共享服务中心招聘2名高频重点提升(共500题)附带答案详解
- 做投标文件培训
- 9.4+跨学科实践:制作简易活塞式抽水机课件+-2024-2025学年人教版物理八年级下册
- 建筑工程工作计划
- 2025年中国国际投资促进中心限责任公司招聘管理单位笔试遴选500模拟题附带答案详解
- 瓶装液化气送气工培训
- 外科护理课程思政课程标准
- 船舶航行安全
- 道德经全文完整版本
评论
0/150
提交评论