TI中文支持网
TI专业的中文技术问题咨询交流网站

CC1310串口接收提前退出导致无数据

大家好:

我用CC1310launchPad的uartecho例程和传感器MINIR20通信的时候遇到了串口接收提前退出导致无数据的问题。

开发环境:CCS9.2.0;

SDK:simplelink_cc13x0_sdk_3_20_00_23

编译器版本:TI V18.12.3.LTS

例程:uartecho

串口初始化部分:

        UART_Params uartParams;
        UART_Handle UART = NULL;
        /* Create a UART with data processing off. */
        UART_Params_init(&uartParams);
        uartParams.writeDataMode = UART_DATA_BINARY;
        uartParams.readDataMode = UART_DATA_BINARY;
        uartParams.readReturnMode = UART_RETURN_FULL;
        uartParams.readEcho = UART_ECHO_OFF;
        uartParams.readTimeout = (uint32_t) 300 * 1000/ Clock_tickPeriod;
        uartParams.baudRate = 9600;
        UART = UART_open(Board_UART0, &uartParams);
        if (UART == NULL)
        {
            return -1;
        }

问题:

1. 需要在1310的TX接一个上拉电阻,否则传感器接收1310发的数据会出错(传感器反馈:‘?’);

2. 通信成功率低,大约15%。

串口读取超时时间是300ms,但是我调试发现,UART_read会提前退出,大约1.04ms,接收数据长度rxlen=0;

读取成功的大约会15ms左右return,接收数据长度rxlen=10;

谢谢!

user5760268:

示波器抓取的波形如下:

蓝色:CC1310TX PIN

黄色:CC1310RX PIN

传输失败时的示波器波形:

传输成功时的示波器波形:

Viki Shi:

你用的例程是TIRTOS的uartecho吧?
第一个问题,硬件方面无法给出答案,要根据具体的电路设计,需要上拉就上拉
第二个,迅速退出,说明UART被抢占了,看波形后面时钟都没了。试试调高UART的优先级,同时查看发送接收触发中断的条件是否合理

user5760268:

回复 Viki Shi:

用的例程是TIRTOS的uartecho。

针对第二个问题:
1. UART会被谁抢占呢?
2. 怎么调高UART的优先级?

谢谢

Viki Shi:

回复 user5760268:

程序里是不是添加了其他任务?

user5760268:

回复 Viki Shi:

没有添加其他任务,
uartecho例程的基础上增加了pin_open控制launchpad上的两个灯。

Viki Shi:

回复 user5760268:

那你查下触发条件是否合理

赞(0)
未经允许不得转载:TI中文支持网 » CC1310串口接收提前退出导致无数据
分享到: 更多 (0)