t113的dma是否有bug??????????
-
请问一下t113的dma是否有bug,我在测试uart3的rxd接收dma,配置为dma1,然后开始接收数据,比如我配置为接收256个字节产生dma完成中断,这个是没有问题的,并且也能正常接收到数据,但是想实现任意长度数据的接收,然后就想到读取dma寄存器的
0x0118 + N*0x0040 DMAC Channel Byte Counter Left Register N (Default Value: 0x0000_0000)这个寄存器,看资料这个寄存器里面读出来的数据就是代表本次dma传输剩余的数据,比如我上位机发送10个数据过去,然后这里应该读取出来的是(256-10)=246个,打是我在读取中发现这里的数据固定为256.....只有当上位机发送128个字节之后,这里的数据变成128 ,然后继续保持128不变,直到上位机发送完256个字节这里才变成0,
也就是说这个寄存器里面的数据是按照128字节跳跃的,并不是接收到多少个,这里减少多少个,是我配置的问题还是这个芯片本身的bug,如果按照128字节跳跃的话,我该如何实现dma接收不定长数据的功能
-
-
是啥sdk有这个bug
-
@yuzukitsuru 我用的是裸机,我测试出来的结果就是用dma接收串口数据的时候,不是串口接收到一个dma就捕获一个,而是需要等到128字节,dma才会从串口获取128字节,当然如果我配置为dma长度为16字节,那么16字节就可以.
-
@yuzukitsuru 以前用的smt32之类的单片机都是一个个接收的啊,串口缓冲区有一个数据dma就传输一个,并不是这样128字节一起传输啊,这个你们有没有碰到过,串口比较特殊的,接收到的数据可能是不定长的,并不能事先设置固定的dma长度啊
-
@smiletiger 我记得好像有寄存器可以设置,不过我没搞过
-
@smiletiger 串口的DMA确实是有点问题的,因为不知道每次接收的长度,使用DMA搬运并不知道一次搬多少,只能配置为CPU读取。不说了,知道垃圾就行。
-
@chengwei_peng 哦,cpu读取的话占用cpu比较高,因为我用到的波特率是1.5Mbps,我在研究研究吧,只能曲线救国了
-
挖个坟?dma接收不定长数据的功能,需要配合timeout来完成。楼主看试试能不能行
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号