打印
[ZLG-MCU]

3250高速串口问题

[复制链接]
1622|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shuaibaobao|  楼主 | 2011-11-30 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我原来一直用普通串口作为通讯端口在调试,今天换了高速串口1调试,监视ARM中的变量发现接受到的串口数据不正确。测试硬件信号也读正常。
串口1初始化代码如下:
void UART1_Init (void)
{
    HSU1_IIR     = 0x39;                                                /* 清零中断标志                 */     
   /*
    *设置波特率
    */
HSU1_RATE    = 0x07;                                         /*13M/(7+1)/14=116071.43(115200)*/      

   /*
    *  使能接收中断,设置时钟偏移量和收发触发深度
    */
//HSU1_CTRL    = 0x00011E4a;                                          
HSU1_CTRL  = (0x02 <<0) |    //选择发送FIFO的触发深度为8
       (0x05 <<2) |    //接受FIFO的触发深度为48
       (0x00 <<5) |    //禁止发送中断
       (0x01 <<6) |    //使能接受中断
       (0x0f <<9) |    //偏移15个时钟
       (0x01 <<16);    //4个字符时间后 置位超时标志
   /*
    *  初始化UART VIC 中断接口,高电平触发
    */
vicIrqFuncSet(VIC_CHANNEL_IIR1,INT_EDGE_TYPE_UP,(unsigned int)IRQ_UART1);     
}

后来我用3250开发板来测试,用杜邦线把P1的RXD1 TXD1分别接到JP12的RXD5 TXD5,再接上串口测试,发现用原例程,ARM发送过来的数据是正确的,而用串口调试工具发给ARM的数据有时不正确。光盘上例程的串口1初始化代码为
void UART1_Init (void)
{
    UART_LOOP    = 0;                                             /* 禁止UART的回写模式           */
    MIC_ER       = 0xC0000003;                                          /* 开子中断                     */
    HSU1_IIR     = 0x39;                                                /* 清零中断标志                 */     
   /*
    *设置波特率
    */
HSU1_RATE    = 0x07;                                                

   /*
    *  使能接收中断,设置时钟偏移量和收发触发深度
    */
HSU1_CTRL    = 0x00011E48;                                          

   /*
    *  初始化UART VIC 中断接口,高电平触发
    */
micIrqFuncSet(UART1_INT, 1, (unsigned int)IRQ_UART1);            
}

请各位大侠帮我看看是哪里出了问题。
串口调试工具配置如下:









此主题相关图片如下未命名.jpg:

相关帖子

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

本版积分规则

0

主题

95

帖子

1

粉丝