当我使用串口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本身就不适合处理这种断续的传输,适合处理的是连续持续不断的数据传输。