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.

[参考译文] CC2652R7:通过 UART 仿真器(传感器控制器)发送中断

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1115241/cc2652r7-send-break-via-uart-emulator-sensor-controller

器件型号:CC2652R7

您好!

我将传感器控制器用作 UART 仿真器、并根据 BLE 外设示例将其集成到我的项目中。 我想知道如何使用 UART 仿真器发送 TX 中断。

我找到了以下参考资料、其中介绍了如何使用 UART 仿真器发送中断。 我的波特率为9600、并且希望在发送数据之前发送中断。 但低于1是不适合我的。 请就此向我提供帮助。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/595455/rtos-launchxl-cc2640r2-sent-break-signal-via-uart

      scifUartSetBaudRate (9600);   

      scifUartTxPutChar (stBuff.data_buff[0]);

      scifWaitOnNbl(500);

      //启用波特率生成

      scifUartSetBaudRate (19200);       

      scifUartTxPutChars (&stBuff.data_buff[1]、u8Length -1);

 

此致、

Madhudhan

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

    大家好、Madhusdhan、

    您可以通过在 GPIO 模式下使用引脚或通过较慢的波特率发送0x0值来生成中断条件(正如您在问题中所建议的那样)。

    我尝试根据您的建议修改 Sensor Controller Studio 中的 UART 仿真器示例、它似乎在我这边工作。

    void taskFxn(UArg a0, UArg a1) {
    
        // Initialize the Sensor Controller
        scifOsalInit();
        scifOsalRegisterCtrlReadyCallback(scCtrlReadyCallback);
        scifOsalRegisterTaskAlertCallback(scTaskAlertCallback);
        scifInit(&scifDriverSetup);
    
        // Start the UART emulator
        scifExecuteTasksOnceNbl(BV(SCIF_UART_EMULATOR_TASK_ID));
    
        // Enable baud rate generation
        // set slow baud rate for break generation
        scifUartSetBaudRate(9600);
    
        // Enable RX (10 idle bit periods required before enabling start bit detection)
        scifUartSetRxFifoThr(SCIF_UART_RX_FIFO_MAX_COUNT / 2);
        scifUartSetRxTimeout(10 * 2);
        scifUartSetRxEnableReqIdleCount(10 * 2);
        scifUartRxEnable(1);
    
        // Enable events (half full RX FIFO or 10 bit period timeout
        scifUartSetEventMask(BV_SCIF_UART_ALERT_RX_FIFO_ABOVE_THR | BV_SCIF_UART_ALERT_RX_BYTE_TIMEOUT);
    
        // ## send break event ##
        scifUartTxPutChar(0);
        scifWaitOnNbl(500);
    
        // finally set correct baud rate
        scifUartSetBaudRate(57600);
        
        // rest of example unchanged...

    我可以使用逻辑分析仪观察中断事件:

    您如何在协议中使用中断条件? 究竟什么对您不起作用呢?

    此致、

    高斯图

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

    您好!

    我使用的波特率是9600。 为了生成中断、我以4800波特发送了0。 我还遇到了组帧错误、就像您使用逻辑分析仪时遇到的情况一样。  我想知道是否有任何方法来模拟适当的中断、以便它在逻辑分析仪中显示为中断。

    此致、

    Madhudhan

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

    您好!

    我正在使用 Saleae 逻辑分析仪、据我所知、帧错误和中断条件是相同的。 帧错误/中断条件可被其他协议使用、例如 LIN、用来发出一个传输中的特定事件的信号(https://stackoverflow.com/questions/37540293/what-does-break-mean-in-real-terms-while-using-a-uart)。 当将逻辑分析仪设置为对 LIN 进行解码时、我可以对中断条件进行解码。

    因此、我相信您正在生成正确的中断、您可能只是使用基本的异步串行协议进行解码、在该协议中、中断会被解码为组帧错误。

    此致、

    高斯图