微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC2541的串口DMA发送,完成中断怎么跟实际发送的不符呢?比如发送5个字节,实际刚发送3个就已经进入中断了,怎么回事?

CC2541的串口DMA发送,完成中断怎么跟实际发送的不符呢?比如发送5个字节,实际刚发送3个就已经进入中断了,怎么回事?

时间:12-22 整理:3721RD 点击:

  TI工程师,您们好,问题如题。我确认程序没有问题,都是用库做的,DMA进入中断后,用示波器观察,实际上只是发送了3个字节出去,剩余的2个字节还没发送就已经进行了中断。

Pleae understand that DMA completed does not means UART has completely send the data since DMA just move the data to the UART buffer. Then, it will take time for UART to shift the data out to the TX pin.

Generally, TI chip will go to sleep when no task is waiting. So, you may try to add a delay after DMA completed. Or, put the chip in PWRMGR_ALWAYS_ON or disable the POWER_SAVING mode for testing purpuse.

您好  jerry,难道只能要延迟吗?我已经尝试了很多种办法,比较难,因为我TX和RX是连接在一起的,我需要准确及时的切换,否则我返回来的数据就会被叠加,我用TX和RX模拟单线通信。谢谢

问题解决,  大家以后用到的可以参考下,  用

count=0xffff;

while((UxCSR & CSR_ACTIVE) ||(count--)); 

来检测是否串口执行完毕当前操作。

您好,我编译后出现如下报错

Error[Pe020]: identifier "UxCSR" is undefined 

Error[Pe020]: identifier "CSR_ACTIVE" is undefined

是否是因为我没看开启流控制呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top