Board logo

标题: 求助关于ne64 [打印本页]

作者: wyf3523    时间: 2007-11-20 16:59     标题: 求助关于ne64

我现在要用MC9S12NE64的EMAC进行数据的发送和接收的程序编写,但是不知道数据应该怎么进行发送和接收,资料中是说把数据要先送到发送缓冲区,但是不知道如何定义数据和如何将数据送入缓冲区。请问谁有做过类似的工作啊?有程序是最好的。先在这里谢过了!
作者: strongchen    时间: 2007-11-21 10:06

飞思卡尔网站上有关于NE64的参考设计,可以到NE64的主页中查找。
作者: wyf3523    时间: 2007-11-22 12:55

我在网站上找了很久了,但是就是没有找到参考设计,你能否告诉我具体在什么地方啊?谢谢!
作者: strongchen    时间: 2007-11-22 13:46

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC9S12NE64GAME&fpsp=1&tab=Design_Tools_Tab
作者: wyf3523    时间: 2007-11-26 14:34

您好,我写的有一段程序实现的功能是把数据送入到发送缓存器,在ne64的BUFCFG寄存器中有发送缓冲区的起始地址和大小,可是我在向资料中显示的地址里写数据的时候写不进去。这个芯片中RAM的起始地址是2000。如果向2000以后的地址写数据时可以写进去的。这是怎么回事啊?谢谢

作者: strongchen    时间: 2007-11-26 16:13

NE64的RAM在复位后的地址为0x0000~0x1FFF,你必须设置INITRM寄存器才能将它映射到0x2000开始的地址上去。具体操作请看NE64的数据手册。
作者: wyf3523    时间: 2007-11-26 16:39

不是吧,我现在用的RAM就是从2000开始的,而且前面基本上都是寄存器的地址从0000到03FF。这是在它的datasheet中所描述的。而且我定义了一个数组,调试的时候他就是直接把这个数组放在2000以后的。如果按照您说的话,他应该是放在2000之前才对的阿。这是为什么呢?有没有可能是因为是寄存器的级别比RAM的高,所以才写不进去的阿。在BUFCFG寄存器的描述中,缓存器的起始地址是从0000开始的,这让我很迷惑。
作者: strongchen    时间: 2007-11-26 17:17

请看NE64数据手册《MC9S12NE64V1.pdf》的第50页。
作者: wyf3523    时间: 2007-12-4 13:43

版主你好,上面的问题我现在依然没有解决。我现在要向发送缓冲器中缓存数据,但是数据写不到指定的区域。只能写到2000以后的地址中,这是怎么回事啊?谢谢,真是麻烦您了!

作者: wyf3523    时间: 2007-12-4 13:44

我所说的定区域是指从2000以前的位置。

作者: strongchen    时间: 2007-12-4 14:37

建议你做一个最简单的project,不做别的任何事情,只是设置缓冲区并置数。试试看。如果还不行,把这个project打包贴出来看看。
作者: wyf3523    时间: 2007-12-4 15:41

好的,我现在就是做的一个很简单的project,没有做什么事情,就是简单的把一帧数据发送出去。这是我第一次编程,不足之处请指正,谢谢!还有您帮我看看像我那样发送数据,可不可以阿。谢谢了。http://bbs.chinaecnet.com/uploadImages/process.rar
作者: strongchen    时间: 2007-12-4 16:29

这个project试下来的现象是怎样的?
作者: wyf3523    时间: 2007-12-4 16:54

数组中的数据是放到203D-2078的位置,这个应该是他随机给它分配的地址吧。我的指针是指向0400的,但是0400那里没有数据写进去。如果是把指针指向2000后的任意的位置时可以写进去的。比如2100。还有就是开始传输的命令TCMD=0x01,没有任何的作用,在寄存器中也没有看到他所在寄存器的位置有变化。
作者: wyf3523    时间: 2007-12-4 16:57

在project的PE中的CPU的设置中他是把2000设置成RAM的。且size只有2000是可读可写的,是不是跟他有关系啊?所以在2000之前是不能写进去的阿。

作者: strongchen    时间: 2007-12-5 11:10

对,PE把RAM已经映射到地址2000去了。
作者: wyf3523    时间: 2007-12-5 11:17

如果这样的话我是不是就不能使用buffer了阿,在资料中buffer的地址都是在1000之前的阿。如果我现在想要把地址再改成0000,怎么改阿?是不是就是使用INITRM寄存器阿?我试过了,PE那里报错,我就不知道该怎么该了。真是麻烦您了,谢谢
作者: wyf3523    时间: 2007-12-5 16:36

原来的问题解决了,改了一下PE的设置。可是现在又出现了另一个问题。我写的发送命令TCMD=1无效,不起作用。在相应的寄存器位置是没有变化的,且在TXCTS_TXACT位也没有变化过始终是0,这是怎么回事啊?
作者: wyf3523    时间: 2007-12-6 17:09

版主,我写的发送命令TCMD=1无效,不起作用。在相应的寄存器位置是没有变化的,且在TXCTS_TXACT位也没有变化过始终是0,这是怎么回事啊?
作者: strongchen    时间: 2007-12-6 17:12

检查一下寄存器的其他设置是否正确。
作者: wyf3523    时间: 2007-12-10 14:29

版主,不好意思,我检查过我配置的寄存器状态了没有发现有什么问题,但是那个问题还是解决不了啊!我现在再把问题描述一下:进行EMAC的发送配置中,按照datasheet所介绍的步骤进行配置单片机,在进行调试的过程中,发现写入一个开始命令以后,在TXCTS寄存器中表示发送机活动状态的TXACT位没有出现任何的变化,且使用数字示波器进行观测芯片的2脚MII_TXEN,也没有出现脉冲信号来表示发送正在进行,也就是说我写入的那个发送命令是无效的,没有任何的数据被发送出去。但是3脚MII_TXCLK又是可以测到有25M的时钟信号的。不知道这是怎么回事,如何解决。谢谢

作者: wyf3523    时间: 2007-12-11 17:07

谁能帮帮忙阿,大哥们快点救命啊!多谢了

作者: hfutBoy    时间: 2007-12-12 15:30

我看了你的程序,发现几个疑问:
1.emac_ini(void)函数少了很多应该设置的寄存器,设置的顺序也很重要的。建议你上官网下示例程序。
2. char *p = (char *)0x0400; 缓冲首指针不应该指向400.这个问题我开始也疑惑了许久。我没用PE做,所以初始化RAM就是400,出现了问题,数据发来我有接收中断,但是以400为首的接收缓冲一点不变!之后将RAM自己指向2000,问题解决。
你用PE免去了自己设置,但是你的指针要指向2000.
3.你好像是用a[]模拟网路数据接收,不确定这样能不能有接收中断。
4.要对接收缓冲和发送缓冲搞清楚。2000之后是2个接收缓冲然后才是发送缓冲。
建议好好看看芯片资料对缓冲设置这一节。
作者: wyf3523    时间: 2007-12-12 16:02

谢谢这位大哥了,因为是第一次使用这个单片机所以很多地方都不是很清楚,谢谢你的指教!
1.EMAC的设置也是从最简单的地方开始学习,我只是要实现最简单的发送数据和接受收据,所以很多的寄存器我都没有设置。
2.指针那里是指向发送缓冲区的位置,因为在资料中它是说缓存区的开始地址都是从0x0000开始的,所以我就按照上面所说的用指针指向这个空间,然后再把数据放到发送缓存区。不知道是不是如果RAM的开始地址变了以后,缓存区的地址也会随着改变啊?是不是如果RAM
的起始地址是2000的话,缓存区的地址就从2000开始阿?我后来把PE中RAM的开始地址又重新改到0x0000了,然后数据是可以被写到我想写的区域了。
3.a[]只是我自己定义的一个用来存放数据的变量,我也不知道会不会产生接受中断,我是先把数据放在a[]中,然后再把数据赋值给指针所在的缓存区。这样缓存区就有了我想要的数据。为发送作准备。
4.谢谢您的指教,我在官网上一直都找不到相关的例程,找到也总是下不下来。不知道大哥有没有相关的例程阿?不知道大哥能不能不吝赐教,把它传给我啊。小弟在这里先谢谢大哥了!!小弟我已经卡在这里很久了,也一直找不出为什么发送开始命令会无效,希望大哥赐教阿!多谢!
作者: hfutBoy    时间: 2007-12-13 17:43

好的
作者: hfutBoy    时间: 2007-12-13 17:44

传不上去,你加我QQ给你传吧175755712
作者: wyf3523    时间: 2007-12-14 10:26

谢谢,我已经加了。
作者: longhanping    时间: 2010-9-22 11:26

我现在也在做,NE64网络开发,有相关的参考资料,有需要的话可以联系我,qq46568890,电话13914977221
作者: longhanping    时间: 2010-10-1 20:03

你好我这边有ne64相关的实验板,和参考程序,如果需要请联系我
MC9S12NE64微控制器简介

   MC9S12NE64是Motorola(Freescale)公司新近推出的一款S12系列单片机,它内部集成了以太网控制模块EMAC和prefix = st1 ns = "urn:schemas-microsoft-comffice:smarttags" 10M/100M的以太网物理层驱动模块EPHY。配合S12系列最大50MHz的总线速度,一块芯片便可以满足众多中低端市场的需求。MC9S12NE64的特色如下:


与MH68C11系列单片机向上兼容

64K的片内FLASH,8K片内RAM

一个8通道的10位的A/D转换器

4通道定时器

片内集成两个SCI模块,1个SPI模块,1个IIC模块

集成EMAC,支持全双工与流量控制

集成10/100M速度的EPHY

时钟模块支持看门狗(COP)、实时时钟模块(RTI)

输入电压3.3V,内部有2.5V电压转换器,支持低电压保护

具有80-PIN QFP\112-PIN LQFP两种封装

支持单线BDM调试模式,可以在线设置硬件断点

光盘包括以下资料:

本套开发系统的使用文档

MC9S12NE64芯片资料

      提供详细的开发资料,教你手把手的学会使用ne64网络实验个模块开发

      提供详细的程序代码,几乎每一句都有中文注释说明,再不会也能在很短时间掌握,

    用于目标板的监控程序的S19文件

    MC9S12NE64芯片EPHY、EMAC模块的底层驱动软件

    Open Source的协议栈OpenTCP的源代码

    可下载到目标板上演示运行的TCP/IP 范例程序
        
       开发用的各种软件

  板卡特点:


       提供串口0

       板载I2C EEPROM存储器24C04

       集成式网络接口 可以直接与网络连接,

      3个按键,包括RESET按钮 prefix = o ns = "urn:schemas-microsoft-comfficeffice"

      5V供电

    32个输入I/O,通过光电耦合,保护cpu芯片,

    32个输出I/O,可以直接驱动负载。输入输出I/O口都有led灯座指示。

  联系方式:

        电话:13914977221 QQ:46568890 邮箱:2004lixiang@163.com  找 龙先生

  本人由于工作比较繁忙,不是经常在线,有什么需要我们服务的地方可以直接来电咨询。

  我们将尽全力为你解决




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0