如果RTL8019AS使用了93C46,那么如何通过单片机对它进行编程呢?
93C46是一个有128字节的eeprom,可以是8位或16位的存储模式,在RTL8019AS中,用的是16位的模式,也就是总共有64个16位的存储单元.16位方式下,存储地址为0---63 .每个地址存储两个字节,低位字节在前,高位字节在后(这跟单片机的存储相反,单片机是高位在前,低位在后).
下表是93c46存储的内容,地址是用字节表示的.
设置为跳线方式,i/o地址 240h 的时候,00h-03h的内容如下:
config2 01H: 0x00
config1 00H: 0x96
config4 03H: 0x01
config3 02H: 0x10
04h-09h 是6个字节的网卡地址,也可以修改.
如果我们不使用Plug and Play方式,那么从12h到7fh地址空间可以用来存储用户自己的数据.用户可以在12-7f里写入任何的数据.这样就可以节省用户自己的eeprom(比如24c02).
对93c46读或写要用到两个寄存器,一个是RTL8019AS的命令寄存器CR,一个是第3页的9346CR寄存器.
先向CR写入0xE2选择第3页的寄存器,然后就可以通过存取9346CR来进行93c46的读或者写了.
读93C46的程序:
1.移位输出8位数据的子程序:
注解: