This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/LAUNCHXL-CC2650:CC2650 UART TX回调失败

Guru**** 2563090 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/585235/rtos-launchxl-cc2650-cc2650-uart-tx-callback-failed

部件号:LAUNCHTXL-CC2650
在“线程:CC2650”中讨论的其它部件

工具/软件:TI-RTOS

我希望CC2650进入UART_TX_callback(); 当完成传输一个字节时,它成功进入 UART_RX_callback();但未能进入 UART_TX_callback();那么,这是什么问题?

uINT8_t rxBuf[5];
UINT8_t txBuf[5]={0x55};
void UART_TX_callback(UART_HANDLE UART_HANDLER_HANDLER_, void *buf, size_t count)
 Ledg_toggle ();
}
UART_RX_callback (UART_HANDLE UART_HANDLATER_HANDLE,void *buf,size_t count)
 ledr_toggle ();
}
void taskUartFxn (void)
 UART_PARAMS UART_PARAMS;
 UART_PARAM_INIT (&UART_PARAMS);
  
 UART_params.readMode = UART_MODE_callback;
 UART_params.writeMode = UART_MODE_callback;
 UART_params.writeDataMode = UART_DATA_binary;
 UART_params.readDataMode = UART_DATA_binary;
 UART_params.readReturnMode = UART_RETURE_FULL;
 UART_params.readCallback =(UART_Callback) UART_RX_callback;
 UART_params.writeCallback =(UART_Callback) UART_TX_callback;
 UART_params.readEcho = UART_ECHO_OFF;
 UART_params.baudrate = 5.76万;
 UART_params.dataLength = UART_LEN_8;
 UART_params.stopbits = UART_STOP_ONE;
  
 UART_HANDLE = UART_OPEN (Board_UART,&UART_params);
 IF (UART_HANDLE ==空)
 {
  同时(1);
 }
 UART_CONTROL (UART_HANDLE,UARTCC26XX_CMD_RETURE_PARTIAL_ENABLE,NULL))
 IF (UART_HANDLE ==空)
 {
  同时(1)
 }
 同时(1)
 {
   UART_WRITE (UART_HANDLE,txBuf,1);
   UART_READ (UART_HANDLE,rxBuf,1);
 }
是否有代码示例?  
谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    是否可以尝试写入16字节并查看是否获得TX中断?

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!

    我更改代码:

    UINT8_t rxBuf[16];
    UINT8_t txBuf[16]={0x55};
    同时(1)
     {
       UART_WRITE (UART_HANDLE,txBuf,16);
       UART_READ (UART_HANDLE,rxBuf,16);
     }
    但它仍然无法进入 Uart_TX_callback.ca,您给我 一个例子?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我解决了问题。
    我在UART_WRITE (UART_HANDLE,txBuf,16)之前添加了一个DELAY ();然后它进入UART_TX_callback,延迟时间必须大于或等于一个字节时间, 因此,它在完成传输一组日期时将进入UART_TX_callback。但我想在 传输一个字节后立即进入UART_TX_callback,那么如何实现此函数?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将TX引脚连接到Rx。

    红线表示Rx callback LEDR_toggle (); 蓝色表示TX引脚, 绿色表示Tx回调 Ledg_toggle ();  

    所以它不会在  完成传输后进入UART_TX_callback,有一个延迟,大约180us。

       在完成传输后,它还会延迟(27US)进入UART_RX_callback。

    我尝试更改 IFL.RXSEL和 IFL.TXSEL以及 IMSC.TXIM、IMSC.RXIM,没有改进。

    那么,CC2650 UART是否可以实现此功能?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    您必须禁用FIFO,以便通过在驱动程序中注释掉以下代码来获得每个字节的中断:

    /*启用UART FIFO */
    //HWREG (UART0_BASE + UART_O_LCRH)|= UART_LCRH_Fen;

    祝你一切顺利