打印

68013串口问题

[复制链接]
4172|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chadish|  楼主 | 2012-8-10 11:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用68013 slavefifo模式,但是有些小的参数要通过控制传输EP0让串口发给fpga,现在出现的问题是只烧68013固件,pc可以识别,再烧FPGA程序就变成68013eeprom missing(就是没烧固件的状态),出现这种奇怪现象有什么原因呢?是我初始化串口之后开了中断然后重枚举的时候进入了死循环导致没法枚举成功?附上固件程序:
//vend_request
BOOL DR_VendorCmnd( void )
{
  BYTE bc;
  BYTE i;
   switch (SETUPDAT[1])
{
case VEND_RIPHEADER:
        {
          EP0BCH = 0;
          EP0BCL = 0;
          while(EP0CS & bmEPBUSY);
          bc = EP0BCL;
          for(i=0;i<bc;i++)
          {               
                    
                          TI1 = 0;
                          SBUF1 = EP0BUF[ i ];
                        while( !TI1 );  
                        TI1 = 0;  

          }
}
//TD_init

CPUCS = 0x12;  //48MHZ CLKOUT ENALBE
        EA=1;       
        SCON1 = 0x50;
        SMOD1 = 0;
    UART230 = 0x02;        //高速串口115200
沙发
dqyubsh| | 2012-8-10 17:29 | 只看该作者
slavefifo模式并不是让CPU参与的,是绕开8051的。EP0的数据发给CPU,CPU如何能把EP0的数据传给FIFO?还有,slavefifo模式干嘛还要使用串口?感觉你的思路出了问题。

使用特权

评论回复
板凳
chadish|  楼主 | 2012-8-10 17:52 | 只看该作者
slavefifo是用来大批量发数据的,串口是用来发参数,控制命令的(很少字节),而且串口中断的优先级高,串口数据不是发给fifo的,而是直接给fpga(贴中vend_request代码)这样数据就不会乱了 2# dqyubsh

使用特权

评论回复
地板
dqyubsh| | 2012-8-11 08:45 | 只看该作者
占用一个USB口,再占用一个串口,两条线,用起来不方便,很奢侈。而且串口越来越稀罕,笔记本怎么弄?可以去掉串口,用一个OUT端点和FPGA双向通讯,不是EP0,是EP2468之一。除非你疯狂追求速度,那就上USB3.0好了。

使用特权

评论回复
5
chadish|  楼主 | 2012-8-11 09:24 | 只看该作者
呵呵,其实没那么复杂,不用串口线,68013可以将EP0直接用串口发,相当于usb转串,因为我只发48个字节左右没必要用EP2468,而且都是用于控制的,厂商请求用起来方便 4# dqyubsh

使用特权

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

本版积分规则

0

主题

3

帖子

0

粉丝