qjianhua
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2620回复:11

68013 SLAVE FIFO下状态检测的问题

楼主#
更多 发布于:2004-12-14 10:50
我现在引了FLAGB和FLAGC到我的DSP板,用的SLAVE FIFO模式,双缓冲、512 bytes,2和4 OUT,6和8 IN。当我检测到空或者满信号(也就是FLAGB和FLAGC信号),空信号时是两个IN端点的FIFO空间都为空么?满信号时是哪个OUT端点该去读?应该怎么判断到底是哪个端点是空或者满,该进行读写操作?谢谢!
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-14 12:51
你自己定义一下就好了呀!
FLAGB和FLAGC是空还是满是由你自己定义的,定义的是对应哪个端点呢,也是由你自己定义的,你只要在初始化的时候,定义好:PINFLAGSAB和PINFLAGSCD就可以了,这个两个寄存器在15章有详细的讲解的,你认真的看看就知道了!
到底用哪个端点读或是写是有FIFOADR[1:0]决定的,所以你在设计你的程序的时候,你自己心里应该很明白的!在设置好PINFLAGSAB和PINFLAGSCD就好了,思路也就很明确!
qjianhua
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-14 13:08
For example, if FLAGA[3:0]=0000(PINFLAGSAB) and the FIFO address pins are driven to [01], then FLAGA is the EP4-Programmable Flag, FLAGB is the EP4-Full Flag, and FLAGC is the EP4-Empty Flag, and
FLAGD defaults as PA7. Set PORTACFG.7 = 1 to use FLAGD which by default is EP2PF(fixed flag).
这是15章的原话,我的理解是这样的:就是当设置好PINFLAGSAB之后,FIFO端点由FIFOADR1 FIFOADR0决定,是吧?
如果用的是IO口控制这倒是容易,可如果FIFOADR1 FIFOADR0用地址线连接我又能如何得知?是不是不能这么做?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-14 16:02
如果你的dsp想判断是那个端点空或者满,手下要给出FIFOADDR[1:0]选中端点,然后才能去判断FLAG信号,这时四个FLAG信号都表示该端点的状态。
例如你想判断端点2的状态,那么FIFOADDR[1:0]为00,这样四个标志位指示的状态就是端点2的状态

如果用地址线连接那就有很多种情况了,而且很麻烦,你必须在读取标志的同时让地址线的相应位生效
现在你就想办法怎样才能让相应地址线生效吧,通常就是对一个地址读或者一个地址写,例如先从一个地址读一个数,然后立即判断标志位,可以用示波器看一看FIFOADDR[1:0]的状态。
qjianhua
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-14 16:53
我记得PINFLAGSAB和PINFLAGSCD可以直接设置成哪个端点空或者满的,也就是只用到了两个端点,这种模式可以么?比如我设置成FLAGB表示EP2FF,FLAGC表示EP6EF。
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-15 09:47
恩,举一个例子吧!
如果你选的FLAGX[3:0] =0x000的话,那么这个时候的FLAGA就是一个"PF"标志,FLAGB就是一个"FF"标志了,具体是指定哪个端点呢,是由FIFOADR[1:0]来决定是指定哪一个端点的!
如果你选的FLAGX[3:0] 不是"0x000",比如说你选的FLAGA[3:0]=0x1000的话,那么从表中可以看出,FLAGA对应的是"EP2EF",这个时候他就与你的FIFOADR[1:0]没有关系了!
那么你的外围设置FIFOADR[1:0]有什么用呢?他的作用就只是一个了,那就是指定,你要传输数据的时候,是使用的哪一个端点了,比如如果你设置的是EP4IN,那么这个时候,你仍然可以检测FLAGA的值只不过,这个时候表示的不是EP4,仍然表示的是"EP2EF"!如果你想检测EP4的状态,那么在初始化的时候,可以先设置好一个相应的标志位!
这样明白了我的意思吗?

祝你好运!
qjianhua
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-15 12:43
谢谢大家的帮助,我基本搞清楚了,没想到一个问题,发了才2天时间就搞清楚了。再次谢谢大家。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-15 13:48
谢谢大家的帮助,我基本搞清楚了,没想到一个问题,发了才2天时间就搞清楚了。再次谢谢大家。

搞定了快放分啊
 :D
cahwlx1982
驱动小牛
驱动小牛
  • 注册日期2004-08-16
  • 最后登录2006-06-17
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-15 14:29
非常赞同jinghuiren的话,这个是这里的规矩!也是对我们的肯定!
TO:qjianhua结贴要放分的噢~~~~~~~~~~~~~~
qjianhua
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-15 15:04
不知道给分给得合适不?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-15 16:17
呵呵,不在乎多,有就行,只是个心意!
解决了问题不给分的人太不像话了!
qjianhua
驱动牛犊
驱动牛犊
  • 注册日期2004-07-27
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-12-15 17:35
等我DSP搞完了,抽时间好好学学USB,到时候还要麻烦几位老大,这里先谢谢了。
游客

返回顶部