注解:
address为地址,为0---63,字地址,而不是字节地址.
字节地址:00 ,01 用字地址为0
字节地址:02,03 用字地址为1
....
最后一句reg01=0x00,表示向9346CR写入0,退出
93C46的读写. 这句不能忽略
返回值为16位的uint(unsigned int).返回值中的高字节为位0--7,低字节为8-15,注意跟单片机的相反.
操作命令为上面的Instution Set里的read.
时序为上面的Read Timing.
93C46的写程序:
注解:
写程序中,address为地址0---63,value为16位(两个字节),必须一次性写入2个字节.
wait for write finish里的for循环是为了不至于程序死锁,比如出错时,可能引起
93C46一直处于忙的状态.
这样最多执行查询1万次就退出.这是用户必须注意的,当你编写类似的程序,比如IIC总线的写操作,也要这样做,否则你的单片机可能死在那里.
93C46写入一次的时间为1毫秒左右,最大不超过10毫秒.
93C46允许最大的sk时钟为
2Mhz,因为单片机的总线速度不超过
2Mhz ,所以每两条指令之间不用插入延时.如果你用比较快的cpu,比如AVR或DSP,可能要插入延时.
reg01=0x00,表示向9346CR写入0,每完成一个93C46的命令,都以它结束.这句不能忽略
写需要执行3个93C46命令:
1.EWEN command写使能
2.WRITE command写数据
3.EWDS command禁止写
三个命令的时序图:
将3个命令结合在一起,才能写入93C46.
对于写入PCI接口的网卡RTL8029AS的93C46 是类似的,不作重复论述.