如果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位数据的子程序:

注解:

uchar 为unsigned char

reg01即9346CR

reg00为CR

关于reg00 reg01的定义见我前面的相关文章.

9346CR含义:

对93C46读或者写必须使EEM1=1 EEM0=0.

EECS控制93C46的CS脚, RTL8019AS的输出,93C46的输入.

EESK控制93c46的SK脚, RTL8019AS的输出,93C46的输入.

EEDI控制93c46的DI脚, RTL8019AS的输出,93C46的输入.

EEDO是93c46的DO脚的状态,为RTL8019AS的输入,93C46的输出.

93C46引脚图:

93C46的操作的命令:

93C46读操作的时序:

93C46读的程序:

注解:

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 是类似的,不作重复论述.

html 93c,对93c46编程相关推荐

  1. python基础编程题100-Python入门经典编程题1

    1. 身体质量指数(BMI)的计算公司为:BMI=体重/身高的平方(国际单位:kg/m2).现在定义BMI 过轻:低于18.5 正常:18.5-23.9 过重:24-27.9 肥胖:高于28 请输入体 ...

  2. 单对象编程实现2048小游戏!

    2048小Demo 1.题目 在百度搜索引擎搜索2048,我们可以在线玩2048 Game - Play 2048 GameOnline,同学都说很好玩,我就花了点时间简单的写了下,样式很简易! 2. ...

  3. pic12f508c语言程序,PIC烧写器(QL-PIC280编程器)

    编程器支持器件列表(软件将随PIC的新推出器件不断升级,升级方便,本编程器硬件软件都支持在线升级,升级信息将在网站公布) 10系列: PIC10F200 PIC10F202 PIC10F204 PIC ...

  4. C++核心编程(一)

    C++ 核心编程 本系类列博客都是根据黑马的C++视频做的笔记. 本阶段主要针对C++面向对象编程技术做详细记录,探讨C++中的核心和精髓. 1.内存分区模型 C++程序在执行时,将内存大方向划分为4 ...

  5. 【Spring】面向切面编程AOP

    AOP基础 什么是AOP [废话解释]在软件业,AOP全称Aspect Oriented Programming 即:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AO ...

  6. python编程问题--第二次

    本质上grp 是一个dataframe 后面接一个[] 得到 series 两个[] 得到dataframe Groupby 如果后面放as_index=False 后面就能连续添加了 不加的话  同 ...

  7. OpenCL编程详细解析与实例

    OpenCL编程详细解析与实例 C语言与OpenCL的编程示例比较 参考链接: https://www.zhihu.com/people/wujianming_110117/posts 先以图像旋转的 ...

  8. C语言与OpenCL的编程示例比较

    C语言与OpenCL的编程示例比较 OpenCL支持数据并行,任务并行编程,同时支持两种模式的混合.对于同步 OpenCL支持同一工作组内工作项的同步和命令队列中处于同一个上下文中的 命令的同步. 在 ...

  9. LLVM一些编程语法语义特性

    LLVM一些编程语法语义特性 High Level Structure Module Structure LLVM 程序由Module's组成,每个 's 是输入程序的一个翻译单元.每个模块由函数.全 ...

最新文章

  1. 使用nc传输文件和目录【转】
  2. ygm900常用网站
  3. Mac上安装hadoop
  4. jQuery【学习心得】简介和选择器
  5. 从动力学角度看优化算法:为什么学习率不宜过小?
  6. ASP.NE的缓存技术提高Web站点的性能
  7. Python代码实操:详解数据清洗
  8. 阿里云原生张羽辰:服务发现技术选型那点事儿
  9. php做商品预告,预告:关于php制作桌面软件的方案与未来规划
  10. OpenCV学习笔记——多种Smooth平滑处理
  11. Py6S模块安装过程(Win10环境,64位)
  12. 微电子电路——一位全加器
  13. 最速下降法matlab全局最小值_最速下降法+Matlab代码
  14. Air202学习 二 (定时器使用)
  15. 【渝粤教育】广东开放大学 经济法基础 形成性考核 (52)
  16. 微信支付 V3 提示验签失败
  17. 高德地图android拖动地图,建议高德地图添加地图拖动事件,添加方法如内容所述...
  18. 提取小米手机的备份数据
  19. java mysql 有什么用_java web mysql 入门知识讲解
  20. 反向题在测试问卷信效度_如何确认问卷(考卷)的信度与效度?

热门文章

  1. 专科计算机毕业论文范文 致谢,专科毕业论文致谢范文(通用6篇)
  2. 数据驱动运营决策-框架与方法(下)
  3. 游戏音乐制作中需要使用那些软件?
  4. 语音端点检测c语言,语音端点检测的方法.ppt
  5. 怎么把JAVA32位改成64位_win732位改成64位教程
  6. [Distributed]拜占庭将军问题
  7. 【洞见研报】研报速读:新能源汽车产业链全景图谱——自动驾驶
  8. 计算机维修工初级题库网盘,初级计算机维修工技能试卷.pdf
  9. 多通道国产源表之VCSEL老化测试
  10. 6款数据库管理工具推荐,设计简单、功能丰富,还与阿里云兼容哦!