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

TM4C1294NCPDT 串口uDMA如何处理最后一包数据

当我使用串口DMA的时候,将uDMA配置成工作在ping-pong模式。定义了两个数组buffer_A[1024]和buffer_B[1024]。

比如当我通过上位机传送一个2K多的数据给单片机的时候,DMA收到1024字节就产生一个中断,前2K数据中断都是正常,但是后面的数据

由于没有填满一个1024大小buffer,程序不产生中断,这个该怎么处理呢?

怎么样可以获得最后这一包数据有多少个和里面的数据呢?在STM32的DMA里面有一个DMA_GetCurrDataCounter可以查看DMA收到多少字节?不知道Ti这个芯片是怎么处理的?

 

谢谢!帮帮忙!

xyz549040622:

看了看TM4C123x的寄存器和库函数,好像没有这样的寄存器的。

奋斗的我们:

回复 xyz549040622:

就是啊,我在想Ti的DMA如果遇到这种情况还没有办法处理了。

user5208020:

回复 奋斗的我们:

您好,请问你的串口接收dma怎么配置的,为什么我在使用串口dma接收数据的过程中,定义了4K的一个缓冲区,分为a和b两个区域作为ping-pong区,但是每次都发现dma从a+1024和b+1024的地址开始存数据,而且每1024个字节就进一次中断。谢谢

user5772160:

回复 user5208020:

写个协议呀,不如上位机给个报文FF 01 表示升级 xxx文件大小 crc,单片收了动态设置缓冲区

xyz549040622:

回复 user5208020:

贴代码看看,哪里设置错误了?

xyz549040622:

回复 奋斗的我们:

又仔细看了一遍数据手册,两年后再看这个问题,发现ping-pong本身就不适合处理这种断续的传输,适合处理的是连续持续不断的数据传输。

赞(0)
未经允许不得转载:TI中文支持网 » TM4C1294NCPDT 串口uDMA如何处理最后一包数据
分享到: 更多 (0)