xixiyizi
驱动牛犊
驱动牛犊
  • 注册日期2004-07-28
  • 最后登录2004-08-19
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1443回复:5

D12怎样传输MCU P2数据??

楼主#
更多 发布于:2004-08-09 12:20
我要实现从P2口读数据再从D12发到主机,怎么实现啊??
我现在改了ISR.C里面的
void ep2_txdone(void)
{
int i;
D12_ReadLastTransactionStatus(5);//复位中断寄存器
//可添加用户代码(进行检测端点号5IN令牌的操作)

FPGA_WR=1;  
FPGA_WR=0; //写使能关闭

   for (i=0;i<64;i++);//读一个缓冲64字节
{
FPGA_RD=1;//给FPGA开始读信号
//P2口数据赋值给EpBuf;
EpBuf=P2;
FPGA_RD=0;//给FPGA读完信号
}
D12_WriteEndpoint(5, 64, EpBuf);//把缓冲数据发送到主机

FPGA_WR=1;
FPGA_RD=1;
}
固件里是不是只要改这个就行啦??
xixiyizi
驱动牛犊
驱动牛犊
  • 注册日期2004-07-28
  • 最后登录2004-08-19
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-09 19:17
急啊,牛牛们帮忙啊
肯定给分
shahlynn
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-01-01
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望90点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-09 22:00
用P2来传送数据给D12要考虑两方面的问题:

1
D12的控制线怎么与51连接。参考的接法是用ALE锁存数据/命令A0,如果要用P2的话,请先考虑能否用到ALE,能否使P2处于准双向状态?
如果不能的话,解决方案有两种:A,用另外的一根线控制ALE,模拟ALE时序;不如直接用B方案,接死ALE,用另外的一根线直接控制A0口。

2
软件的修改
从你的修改方法来看,对分层还不了解,这样改既麻烦又容易出错。
先从最底层软件改起,保持提供给上层调用的函数接口不变。具体来说,主要改EPPHAL,保持读写函数的调用方式不变,只根据你的硬件设计更改端口影射关系和对D12的读写函数的实现方法。基本上不用修改上层的模块。

说得够清楚了吧?如果还不懂,我也没辙了。
xixiyizi
驱动牛犊
驱动牛犊
  • 注册日期2004-07-28
  • 最后登录2004-08-19
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-09 22:10
to shahlynn:
谢谢你的回复
我用的是周立功的板子
请问你说的改EPPHAL,是用了DMA吗?我现在没有用DMA,其实我也不知道我用了DMA没有。

如果我要传输我要发的数据(不一定是P2口的),是不是只要修改Epbuf然后再D12_WriteEndpoint(5, 64, EpBuf);就可以了?
shahlynn
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-01-01
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望90点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-09 22:26
硬件都定了,那就直接用ZLG的固件和驱动测试,还考虑什么P2口和DMA?
xixiyizi
驱动牛犊
驱动牛犊
  • 注册日期2004-07-28
  • 最后登录2004-08-19
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-10 00:31
恩,我现在在LINUX里写数据到板子,再读数据,是能正常实现的。

但是我现在要从P2口读FPGA的数据,然后通过D12传到LINUX里,所以要读P2口
游客

返回顶部