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.

[参考译文] TMS570LC4357:TMS570LC4357:在 ISR 中接收数据时丢失

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/579547/tms570lc4357-tms570lc4357-missing-data-while-receiving-in-isr

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

尊敬的 e2e:

 我正在尝试通过 UART (SCI)与 GSM 模块和控制器通信。  我在轮询中向模块发送数据、在中断方法中接收数据。 在接收数据时、某些数据丢失。

我 将 UART 配置为115200波特率、1个开始位、1个停止位和8位数据。 我在 halcogen 的 sci 选项卡中启用 Rx int 模式。  

以下是中断服务例程的代码。

extern unsigned char rx_str[500];

unsigned char rx_k = 0;

void sciNotification (sciBASE-t * sci、uint32标志)


sciReceive (sciREG1、50、rx_str);
RX_k++;

可以帮助我解决此问题吗?

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

    无论数据是配置为轮询模式还是中断模式、sciReceive 函数都会负责接收数据。 请勿从通知函数调用 sciReceive。 它可以从您的应用程序调用。 作为参数传递给函数的参数'data'将使用接收到的数据进行更新。
    如果用户希望在接收到数据后执行任何附加代码、则会为其提供通知功能。 作为 HALCoGen 的一部分提供的 SCI ISR 用于读取数据和更新缓冲区。

    谢谢、此致、
    Veena
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、Veena
    在我们的应用中配置 sciRecieve 时、一些数据丢失、因此我使用中断来接收数据、因此没有数据丢失。 但即使在 ISR 中、也会丢失一些数据。

    您能否发送示例程序来实施 sciNotification?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chehthan、

    我做了一个简单的 SCI 接收示例。 我在 HALCoGen GUI 中启用了 Rx 中断。 在 main 中、我初始化 SCI 并调用 sciReceive 函数

    void main (void)

    uint8 RxData[]={0、0、0};

    _enable_IRQ ();
    sciInit();

    sciReceive (sciREG1、3、RxData);

    while (1);


    我已将 sciNotification 函数留空。 不应在 sciNotification 函数中调用 sciReceive。 启用 Rx 中断并使用适当的参数调用 sciRecieve 函数后、SCI ISR 会在收到数据时进行读取。 ISR 将接收到的数据保存在缓冲区中、作为 sciRecieve 的参数传递。

    在此示例中、当我调用 sciRecieve 函数时、SCI ISR 被配置为侦听 Rx 通道、读取接收到的数据并将其存储在 RxData 缓冲区中。 一旦接收到全部3个字节、ISR 最终会分支到 sciNotification 函数。

    请注意、sciNotification 不是实际的 SCI Rx ISR。 Rx ISR 作为 HALCoGen 驱动程序的一部分实现、sciNotification 是一个应用程序回调、在接收到配置的数据数量后调用。

    希望这能解答您的问题。

    谢谢、此致、
    Veena