大家好:
我用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_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;
}
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:
那你查下触发条件是否合理