安 发表于 2016-11-8 14:12
103测试,ADC采集1000个数据,当HT产生时CNDTR值为491,TC产生时CNDTR的值为0。
如果在HT产生时加了中断, ...
没错,我也测试过了,我的CNDTR也是对的。但是HT产生中断所需要的时间却是和TC产生所需要的时间一样,这怎么解释?
五哥1 发表于 2016-11-8 11:24
根据楼主的情况,结合以往,绝大多数的问题都是提出问题的楼主自行解决的,因为所有发言的人都是在你提供的 ...
所有源码都贴上了,你还看不懂,真无语
安 发表于 2016-11-8 14:12
103测试,ADC采集1000个数据,当HT产生时CNDTR值为491,TC产生时CNDTR的值为0。
如果在HT产生时加了中断, ...
我就说我这边的时间: 我是ADC DMA方式, ADC采样2.2us采集一次。 DMA buff大小500,理论上TC中断一次需要1100us,HT中断一次需要550us。结果测出来HT也是1100us中断一次。
我测试1us下,HT和TC产生的中断和下次产生的间隔相差为500us,我用的是1000组采集。定时器为10us。如下:
ADC_ConvHalfCp:9029,496
ConvCplt:9029,0
ADC_ConvHalfCp:9079,496
ConvCplt:9079,0
ADC_ConvHalfCp:9130,496
ConvCplt:9130,0
TC情况下测试的是1000us,定时器为10us,如下:
ConvCplt:190,0
ConvCplt:290,0
ConvCplt:391,0
ConvCplt:492,0
ConvCplt:593,0
ConvCplt:694,0
ConvCplt:794,0
安 发表于 2016-11-10 11:07
我测试1us下,HT和TC产生的中断和下次产生的间隔相差为500us,我用的是1000组采集。定时器为10us。如下:
A ...
我看看你的源码,我跑一下试试
我用的是103测试的。楼主可以看一下。
这个应该是没有问题的,在音频应用方面,I2S传输,靠的就是它的DMA的HT和TC中断来对音频数据缓存来回交错传输到外部Codec,要是HT和TC没有,那音频没得玩了,估计是楼主那个地方忽略或理解错误。
安 发表于 2016-11-10 15:38
我用的是103测试的。楼主可以看一下。
我明白了,我们的程序没问题。 是我误会了其中的意思了,半传输中断,只在DMA传输到一半时才产生。第一次中断是在传输了BUFF/2之时,第二次中断也是在传输了BUFF/2之时。两次中断间隔之间,其实传输了整个BUFF。 也就是说每中断一次需要的时间是传输整个BUFF的时间。也就是说TC中断时间=HT中断时间。
建议在中断里快速将寄存器值转存一下,在主程序里分析,调试工具跟踪速度是跟不上DMA传送的速度的
做技术最常见的就是相信自己过于相信别人...
但是问问题的时候,也是在花费别人的时间...