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.

[参考译文] CC3235MODSF:UART 串行中断问题

Guru**** 2558250 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061223/cc3235modsf-uart-serial-interrupt-issue

器件型号:CC3235MODSF
Thread 中讨论的其他器件:SysConfig

大家好、

客户打算编写自己的串行接收中断功能来接收从0x10 02开始到0x10 03结束的数据包、即使用串行端口接收中断并实时处理接收帧。

问题:

1. 在 SysConfig 中配置串行端口的引脚并在.c 文件中调用 UART2_open()。 显然、UART2_Params_init 中的回调为 NULL。 使用 Hwi_create (INT_XX、fxn)创建 Hwi 对象和 uart0或 uart1的关联。 此时未找到串行中断(INT_XX)的确切名称。

是否可以通过使用以下方法来实现?

2.在 Hwi_create (INT_UARTA0、UART_Rx、&hwi_uart0_params、NULL)处输入了一个死循环;可能是由于串行端口的中断函数已经在 UART2_open ()中注册了。 如何解决此问题?

3. dirverlib 的帮助文档在哪里? 当前的方法是读取响应的.c 和.h 文件。

您可以帮助检查此案例吗? 谢谢。

此致、

樱桃

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

    您好!

    我是否可以知道有任何更新?

    谢谢、此致、

    樱桃

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

    您好、Cherry、

    我将接管这个线程。 我不确定我是否理解整个场景。 您是否正在尝试基于特定的字节集进行中断或针对每个字节进行中断? 您确定 TI 驱动程序不会为您解决此问题吗? 使用 TI 驱动程序比使用 driverlib 更容易。  

    您可以通过 SDK 安装中的 docs 文件夹找到 driverlib 文档:  

    /docs/drivers/doxygen/html/index.html

    您还可以在 TIREX 上找到相同的内容:  

    https://dev.ti.com/tirex/explore/node?node=AIQLpsWAlAhNbRw7tZeAww__fc2e6sr__LATEST 

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

    您好!

    [引用 userid="313399" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061223/cc3235modsf-uart-serial-interrupt-issue/3928530 #3928530"]您是否正在尝试基于特定的字节集或每个字节上的中断? 您确定 TI 驱动程序不会为您解决此问题吗?

    是的、 这正是客户想要做的事情。

    之前使用的单片单元通常基于串行接收中断进行处理:接收中断包括接收到的1个字节、或接收到的达到 RX FIFO 阈值的字节、或者 RX FIFO 有数据、但在指定时间内没有新数据可用(接收超时中断)。 但是、TI 驱动程序必须执行 UART_READ()而不进行基于事件的回调、否则接收不需要回调。

    实际上、客户也希望使用 TI 驱动程序、但 UART2可能无法满足他们当前的需求。

    此外,如果使用 UART_read(),它必须在这里有一个任务并且 始终执行它。 中断功能具有更好的实时性能。

    谢谢、此致、

    樱桃

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

    您好!

    我不认为可以检查 UART 流的特定值、然后创建中断、UART 外设根本就不能这样做。   

    [引用 userid="496057" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061223/cc3235modsf-uart-serial-interrupt-issue/3929209 #3929209"]此外,如果使用 UART_READ(),它必须在这里有一个任务并 始终执行它。 中断功能具有更好的实时性能。[/quot]

    阻塞模式也是如此。 但是、在回调模式下、"UART_READ()不会阻止任务执行。 相反、  传输完成后会调用由 UART_Params::readCallback 指定的回调函数。 回调函数可以在调用方的上下文中、也可以在 HWI 或 SWI 上下文中发生、具体取决于特定于器件的实现方式。   在调用 UART_Close ()之前,必须始终使用 UART_readCancel()来取消未完成的异步读取操作。"

    请查看回调模式。 您可以用确定的大小填充缓冲区、一旦缓冲区已满、将执行回调函数。 然后、您可以读取整个缓冲区并以这种方式解析帧。 如果您的帧具有不同的长度和/或大于缓冲区大小、则需要执行更多的操作、但在回调函数中应该可以执行所有操作。