打印

C8051单片机驱动DM9000EP问题

[复制链接]
1598|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
伍戈123|  楼主 | 2015-7-11 18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大神们,谁用过C8051单片机驱动DM9000EP?关于DM9000EP与MCU接线问题,是不是通过地址数据总线连接MCU与其传输数据?我把DM9000EP的CMD接到MCU的一个普通IO口,SD接到MCU的8位IO口,AEN接地,IOWAIT接MCU普通IO口,nRST接普通IO口,各位大神,不知道这种接法对不对?为什么我往寄存器中写数据,并读取显示在上位机上,一直没有结果呢?不确定是硬件连接问题还是软件驱动时序不对?有没有大神给支个招,现在是黔驴技穷了,,,,:Q

相关帖子

沙发
tyw| | 2015-7-11 18:57 | 只看该作者
单片机驱动DM9000网卡.pdf (3.21 MB)
DM9000手册.pdf (11.57 MB)
DM9000中文手册.pdf (3.07 MB)
DM9000EP-Natertech.pdf (10.96 MB)

使用特权

评论回复
板凳
伍戈123|  楼主 | 2015-7-13 21:06 | 只看该作者

谢谢~这些我找到了资料。你肯定是调过的。问你个问题,我通过IO口模拟总线时序往芯片寄存器写指令,完了我再通过时序读取配置的寄存器的值,是不是就能读取出来,然偶通过串口传输到串口助手查看寄存器是否设置的对,判断对芯片寄存器初始化对否。这种思路不知道对不对?:'(

使用特权

评论回复
地板
tyw| | 2015-7-14 09:16 | 只看该作者
伍戈123 发表于 2015-7-13 21:06
谢谢~这些我找到了资料。你肯定是调过的。问你个问题,我通过IO口模拟总线时序往芯片寄存器写指令,完了 ...

少累,木油玩过,自已啃资料吧

使用特权

评论回复
5
伍戈123|  楼主 | 2015-7-14 18:39 | 只看该作者
tyw 发表于 2015-7-14 09:16
少累,木油玩过,自已啃资料吧

:L:funk:,我慢慢啃吧,,,,谢谢~

使用特权

评论回复
6
伍戈123|  楼主 | 2015-7-18 11:23 | 只看该作者
接法是对的。时序得写对就可以了。CMD=0,IOW=0,IOR=1时为写寄存器地址命令,CMD=0,IOW=0,IOR=1时为写寄存器数据命令,CMD=1,IOR=0,IOW=1时为读寄存器数据命令。对MCU的操作得熟悉才行啊,,,,

使用特权

评论回复
7
伍戈123|  楼主 | 2015-7-24 14:30 | 只看该作者
又有问题了,往电脑发送数据没有问题,用抓包工具看到发送ARP包电脑能应答,但是接收就不行了,只要一接收读取MRCMD寄存器就断开网络

使用特权

评论回复
8
伍戈123|  楼主 | 2015-7-24 14:33 | 只看该作者
从网上找的驱动程序都是一个思路。应该不会错。难道我寄存器用的不对?接收时序不好?硬件电路干扰?从网上买的模块

使用特权

评论回复
9
伍戈123|  楼主 | 2015-7-24 14:38 | 只看该作者
为什么从MRCMD中读出的数是错误的?但是读函数可以读取ID以及别的寄存器的值

使用特权

评论回复
10
伍戈123|  楼主 | 2015-7-24 16:03 | 只看该作者
MRCMD一次一次的读取,读到0xf2的时候会断开网络,真是扯

使用特权

评论回复
11
伍戈123|  楼主 | 2015-7-24 18:50 | 只看该作者
伍戈123 发表于 2015-7-24 16:03
MRCMD一次一次的读取,读到0xf2的时候会断开网络,真是扯

费了九牛二虎之力找到原因了。是我自己在骗自己,扯淡了,那个读时序时要加上CS,虽然是低电平有效但是不能直接接地啊,我傻傻地以为低电平有效就可以直接接地。。。。还是得细看手册,不可能没用的还写上。我自己又把自己坑了:Q

使用特权

评论回复
12
伍戈123|  楼主 | 2015-7-24 18:52 | 只看该作者
伍戈123 发表于 2015-7-24 16:03
MRCMD一次一次的读取,读到0xf2的时候会断开网络,真是扯

自己把自己坑了,读写时序的时候CS没用加上,以为片选低电平有效就直接接地。可笑。还是得好好看手册

使用特权

评论回复
13
伍戈123|  楼主 | 2015-7-25 19:57 | 只看该作者
底层驱动写完了,开始移植UIP协议,但是ping不通。然后再修改,ping通了,但是过会又不通了。。。。各种问题。慢慢找原因。

使用特权

评论回复
14
伍戈123|  楼主 | 2015-7-26 01:37 | 只看该作者
ping通了,过一会ping不通,找到原因了:是因为过一会可能读取的第一个字节不为00H或者01H那么需要重新复位。单步调试找到原因:lol

使用特权

评论回复
15
伍戈123|  楼主 | 2015-7-27 19:14 | 只看该作者
伍戈123 发表于 2015-7-26 01:37
ping通了,过一会ping不通,找到原因了:是因为过一会可能读取的第一个字节不为00H或者01H那么需要重新复位 ...

很奇怪的事情,那天晚上我调的挺好的,运行了两个小时没有问题。结果第二天又出现ping通,过几分钟又ping不通的情况。程序还有问题啊。单步调试发现当接收函数查询第一个字节一直是00h的时候就断开了。我理解的UIP协议栈本身有类似心跳包这样的规则,不应该断开的啊,想不明白了。定时机制没有弄好:Q

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

311

帖子

1

粉丝