TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2538: CC2538使用DMA进行不定长串口传输的问题

Part Number:CC2538

使用DMA进行串口接收的开发时遇到了问题,希望请各位前辈专家帮忙解答。

1.查看用户手册发现,外设使用DMA时中断调用的是外设对应的中断处理函数,而外设产生的中断会被屏蔽掉(不知理解是否有误?)。

那么通常使用DMA+串口空闲中断来接收不定长数据的方式无法达成。如何在CC2538中实现不定长串口数据的接收处理呢?

2.在使用串口的同时,也有使用RF接收的需求。这种情况下如何设置RF的DMA控制及处理,没有找到例程。

3.在网上寻找资料的时候,看到有人使用STM32的HAL库代替TI给的例程来实现。这样是可行的吗?可以摆脱TI给的例程按照cortex-M3的

方式直接开发吗?

谢谢

Nick Sun:

您好,

感谢您的对TI产品的关注!为更加有效地解决您的问题,我需要多一些时间查看这个问题,稍后会为您解答。

,

Nick Sun:

您好,

可以配置 DMA 的目标地址和传输大小。代码示例中有最大 RX/TX 传输大小定义,但可以在整个分配的传输大小被填满之前从外设生成中断并为 DMA 提供服务。他们将受益于 Z-Stack (通过 UART DMA 接收的 MT API 数据大小不同)和 Foundation Firmware 中提供的示例。
在线上社区提供了示例,请参阅类似的 similar E2E thread 和 ContikiNG radio control。
如果在项目的构建中提供并引用了合适的库,这是可能的。ContikiNG 和 RIOT  也是存在这种可能性的。这最终取决于实际操作。

,

PU duan:

您好:

       感谢答复。

请问,“可以在整个分配的传输大小被填满之前从外设生成中断并为 DMA 提供服务”这里的外设可以是uart的overrun中断吗?我看用户手册描述好像不行。那或者可以是定时器中断吗?

,

Nick Sun:

您好,

帮您同步工程师,得到回复给您答复。

,

Nick Sun:

您好,

CC2538 User's Guide的第10.3.1和10.3.2节提供了 DMA 支持的不同外设。中断、包括优先级和控制在第5章中有进一步的解释。其理念是应快速处理和退出中断、有时会发出一个标志来处理主事件循环期间的进一步处理、以便 MCU 不会长时间保持在 ISR 状态内。

赞(0)
未经允许不得转载:TI中文支持网 » CC2538: CC2538使用DMA进行不定长串口传输的问题
分享到: 更多 (0)