打印
[ZLG-ARM]

郁闷的LPC2138串口通讯问题

[复制链接]
2330|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rfsq|  楼主 | 2008-8-19 15:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我通过USB转串口线从PC下载数据到我的板子上,数据量大概300-400K,每60字节一包进行下传.波特率小于115200的时候通讯没问题,波特率设置为115200时变得很不稳定,有时能完整下传完,有时传一定数据包就出错.采用的晶振是11.0592MHz.很是郁闷,请问谁遇到这个问题了没?

相关帖子

沙发
汽车电子| | 2008-8-19 21:37 | 只看该作者

PL-2303HX芯片的USB转串口是没问题的,我一直用

  115200bps不稳定,PLL是否够??
  速度快了,和电路、电缆也有关系

使用特权

评论回复
板凳
王紫豪| | 2008-8-19 23:24 | 只看该作者

我用CH341,一直都用 230400波特率 ISP 烧程序!!

对了,晶体是 14.7456M

使用特权

评论回复
地板
rfsq|  楼主 | 2008-8-20 10:04 | 只看该作者

没觉得哪里设置有问题啊

部分初始化如下:
#define Fosc            11059200 
#define Fcclk           (Fosc * 4)
#define Fcco            (Fcclk * 4)
#define Fpclk           (Fcclk / 4)

 PLLCON = 1;
#if (Fpclk / (Fcclk / 4)) == 1
    VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
    VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
    VPBDIV = 1;
#endif

#if (Fcco / Fcclk) == 2
    PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
    PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
    PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
    PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    while((PLLSTAT & (1 << 10)) == 0);
    PLLCON = 3;
    PLLFEED = 0xaa;
    PLLFEED = 0x55;

uint8 InitUart1(uint32 bps)
{      
    uint16 Fdiv;
    
    PINSEL0 |= 0x00050000;                        /* 选择管脚为UART1 */

    U1LCR = 0x80;                               /* 允许访问分频因子寄存器 */
    Fdiv = (Fpclk / 16) / bps;                  /* 设置波特率 */
    U1DLM = Fdiv / 256;                            
    U1DLL = Fdiv % 256;                        
    U1LCR = 0x03;                               /* 禁止访问分频因子寄存器 */
    //U1LCR = 0x1b;                               /* 且设置为8,1,n */
    
    U1IER = 0x05;                               /* 允许接收中断 */
    //U1IER = 0x00;
    U1FCR = 0x87;                               /* 初始化FIFO=8 */

       
    VICIntSelect = 0;
    VICVectAddr0 = (uint32)Uart1_Handler;
    VICVectCntl0 = 0x27;
    VICIntEnable |= 1 << 7;
      
    
    return TRUE;
}
我用的转换芯片是cp2102.

使用特权

评论回复
5
rfsq|  楼主 | 2008-8-20 10:24 | 只看该作者

发错

使用特权

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

本版积分规则

12

主题

24

帖子

2

粉丝