打印
[ZLG-ARM]

两片LPC2148实现并口通信的问题

[复制链接]
1707|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
channyv|  楼主 | 2007-8-11 23:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用两片2148的IO口来作并口通信,其中一片采集数据,利用IO口将数据传导另一片上去,接收数据的2148再将收到的数据用USB传到PC上,主要过程是:接收端先写入电路参数到发送端,发送端再发送数据,发送端的主要代码如下:
while(1)
   {
     if((FIO0PIN3&0x10)==0)           //当采集卡被片选时
       {
    FIO0SET2=0x04;//置高发送端给接收端的握手信号
         if((FIO0PIN1&0xa0)==0x80) //接收端写入参数
          {。。。。。。//发送端接收写入的参数
           }
          if((FIO0PIN1&0xa0)==0x20)//接收端要求接收数据
         {。。。。。。//采集数据并发送数据
           }
         }
接收端主要是用的那个USB DMA程序,大体都差不多,只做了一些修改:
while(1)
{            
     usbserve();
     if (bEPPflags.bits.configuration == 1)     /* USB已配置完成 */
       {                             
    if (bEPPflags.bits.ep2_rxdma == 1)
    {    .......//片选采集卡
                 //写入参数
                 //读取数据
                 //发送数据
          }
}
现在我的问题在于两个程序同时运行时,只有第一次可以在PC上得到采集的数据,而第二次程序就会一直停在一个地方运行,我通过单步调试发现,在第二次准备进行数据传输的过程中,发送端的程序始终进不了if((FIO0PIN1&0xa0)==0x80)和    if((FIO0PIN1&0xa0)==0x20)下面的部分,而测得相对应的管脚值符合if((FIO0PIN1&0xa0)==0x80)条件,奇怪的是我在第一次数据传输过程中也单步执行程序,当测得相应管脚上的值符合if((FIO0PIN1&0xa0)==0x80)和    if((FIO0PIN1&0xa0)==0x20)两个条件时,程序都可以进行到相应的条件语句下面的部分执行,即程序执行顺序完全正常。由于我在两边程序里都作了同步处理,即当一边的程序不往下执行时,另一边也不能向下执行,这主要是为了保证数据传输的正确性,恳请各位帮忙分析一下原因,谢谢

相关帖子

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

本版积分规则

8

主题

12

帖子

0

粉丝