chenweigang 发表于 2013-5-30 14:36:54

LPC串口接收问题

用LPC1788和单片机485串口通信,在单片机发给LPC时如果连续发同一个数据则接收正确。但是我单步调试的情况下,在单片机端发一个数据,在LPC中断程序中不能马上进去,要等到我单片机再发送一次数据,然后进入LPC中断,先是线接收中断,然后是接收中断,接收的数据也是不对的。这时为何呢?
        //3.配置UART参数
        UART_ConfigStructInit(&UARTConfigStruct);
//         UARTConfigStruct.Baud_rate = 4800;                //修改默认配置的波特率
        //4.初始化UART
        UART_Init(UART_3, &UARTConfigStruct);
        //5.配置FIFO
        UART_FIFOConfigStructInit(&UARTFIFOConfigStruct);//FIFO默认值配置
//         UARTFIFOConfigStruct.FIFO_Level = UART_FIFO_TRGLEV2;//更改默认配置 FIFO触发深度8字符
        //6.初始化FIFO
        UART_FIFOConfig(UART_3, &UARTFIFOConfigStruct);//FIFO初始化
        //7.使能UART
        UART_TxCmd(UART_3, ENABLE);
        //8.使能UART RX 中断(先不使能发送中断)
        UART_IntConfig(UART_3, UART_INTCFG_RBR, ENABLE);
//         UART_IntConfig(UART_3,UART_INTCFG_THRE,ENABLE);
        //9.使能UART 线状态 中断
        UART_IntConfig(UART_3, UART_INTCFG_RLS, ENABLE/*DISABLE*/);
        //10.设置中断优先级 抢占式1 子优先级1
        NVIC_SetPriority(UART3_IRQn, ((0x01<<3)|0x01));
        //11.使能各中断
        NVIC_EnableIRQ(UART3_IRQn);//使能中断
中断子程序:
void UART3_IRQHandler(void)
{
        uint32_t int_src, temp, temp1;
//         OSIntEnter();
        //1.确定中断源
        int_src = UART_GetIntId(UART_3);
        temp = int_src & UART_IIR_INTID_MASK; //中断标识
        //2.接收线 中断
        if(temp==UART_IIR_INTID_RLS)
        {
                //2.1 检查线状态
                temp1 = UART_GetLineStatus(UART_3);//读取LSR时中断会被清除
                temp1 &= (UART_LSR_OE | UART_LSR_PE | UART_LSR_FE | UART_LSR_BI | UART_LSR_RXFE);
                //2.2 处理错误
                if(temp1)
                {
               
                }
               
        }
        //3. 接收或者超时中断
        if ((temp == UART_IIR_INTID_RDA) || (temp == UART_IIR_INTID_CTI))
        {
                UART_Int_Receive();
        }
        //4. 发送中断(FIFO为空)
        if (temp == UART_IIR_INTID_THRE)
        {
//                 UART_Int_Transmit(0XF7,0XF7,5,(uint8_t *)RUN);
        }
//         OSIntExit();

}

Excellence 发表于 2013-5-30 14:53:01

看到了库和操作系统。
初始化的波特率是多少?
用小数分频吗?

chenweigang 发表于 2013-5-30 15:36:17

Excellence 发表于 2013-5-30 14:53 static/image/common/back.gif
看到了库和操作系统。
初始化的波特率是多少?
用小数分频吗?

波特率115200 单片机和LPC都一样的,现在发现每次都有溢出错误,我FIFO触发深度1个字节,是不是有接收到数据就到中断的啊

Excellence 发表于 2013-5-30 16:13:36

是的。
                  

Excellence 发表于 2013-5-30 16:18:14

把初始化好好看看。
中断中的状态看看。有超时,接收,发送中断。
FIFO开14个字节,再加超时判断,应该没问题。

Excellence 发表于 2013-5-30 16:20:47

当然还有硬件方面的问题。
我再用485,其实对软件来说,和RS232没区别。多机就加上发送使能。
产品用三个串口,同时工作,各连各的设备,有无线,485,RS232.

chenweigang 发表于 2013-5-30 16:39:49

Excellence 发表于 2013-5-30 16:20 static/image/common/back.gif
当然还有硬件方面的问题。
我再用485,其实对软件来说,和RS232没区别。多机就加上发送使能。
产品用三个串 ...

用的LPC1788吗?我现在LPC发是正常的,单片机上传就会出现这个问题

canspider 发表于 2013-5-30 17:05:52

先调232,再调485呢

Excellence 发表于 2013-5-30 17:34:41

1768.
串口基本一样。
1788我也调试过。

cyj_0220 发表于 2013-5-30 17:39:15

数据中有回车符吗?我碰到过lpc1768收到回车符不能进中断的情况

chenweigang 发表于 2013-5-30 17:57:55

canspider 发表于 2013-5-30 17:05 static/image/common/back.gif
先调232,再调485呢

和电脑通信是好的

chenweigang 发表于 2013-5-30 17:58:16

cyj_0220 发表于 2013-5-30 17:39 static/image/common/back.gif
数据中有回车符吗?我碰到过lpc1768收到回车符不能进中断的情况

没有回车符啊

chenweigang 发表于 2013-5-30 18:17:06

Excellence 发表于 2013-5-30 17:34 static/image/common/back.gif
1768.
串口基本一样。
1788我也调试过。

发现,LPC怎么没有起始位,这里寄存器只有数据和停止位,会不会是这个原因

Excellence 发表于 2013-5-31 08:33:44

下个串口监控软件,看看。

chenweigang 发表于 2013-5-31 14:58:09

Excellence 发表于 2013-5-31 08:33 static/image/common/back.gif
下个串口监控软件,看看。

多谢,问题解决了

nongxiaoming 发表于 2013-5-31 15:00:24

我都是直接寄存器操作的~

Excellence 发表于 2013-5-31 16:17:02

chenweigang 发表于 2013-5-31 14:58 static/image/common/back.gif
多谢,问题解决了

分享一下经验。呵呵呵。
   

mowin 发表于 2013-5-31 18:11:01

chenweigang 发表于 2013-5-31 14:58 static/image/common/back.gif
多谢,问题解决了

是啊,分享一下经验吗,别一句解决了就没下文

chenweigang 发表于 2013-6-2 10:02:32

mowin 发表于 2013-5-31 18:11 static/image/common/back.gif
是啊,分享一下经验吗,别一句解决了就没下文

惭愧惭愧,是我单片机的问题,数据发的太快了,连续发的时候因为数据都一样所以是对的。

chenweigang 发表于 2013-6-2 10:02:50

Excellence 发表于 2013-5-31 16:17 static/image/common/back.gif
分享一下经验。呵呵呵。

惭愧惭愧,是我单片机的问题,数据发的太快了,连续发的时候因为数据都一样所以是对的。

zhangwei00341 发表于 2013-10-29 16:53:42

楼主问题解决了么?

hyh19890917 发表于 2013-12-9 10:13:21

Excellence 发表于 2013-5-30 16:13
是的。

你好,可以请教一下你关于LPC串口中断的使用么?他们怎么配合使用的?终端怎么处理接收或发送的数据的啊?我初学LPC1788,看手册看得晕了?

hyh19890917 发表于 2013-12-9 10:15:45

你好,可以共享一下LPC的库函数么?或者我想和你交流一下LPC1788串口的使用?我是初学者,希望前辈赐教

Excellence 发表于 2013-12-9 11:17:53

LPC1788有官方例程。
你可以先看看。
还有数据手册看看,知道哪些寄存器,功能,设置。
页: [1]
查看完整版本: LPC串口接收问题