PT60 ADC FIFO,上周调试失败,今天中改了下ADC时钟,竟然莫名其妙的能够正常了,复原成原配置:bus clock = 8M,ADCK=bus clock=8M,无分频,这个时候ADC只采完了配置的第一个通道就卡死了,COCO一直被置位,无法继续工作。
PT60的ADC工作频率为0.4M~8M,我还怀疑了会不会是因为跑到ADC最高频率会有问题。
于是我将Bus clock变为16M,然后ADC的输入源变为BusCLK/2,即ADCK还是等于8M,这个时候FIFO确实正常工作的。
同样都是8M,所以就肯定不是配置或者其他逻辑上的问题了。
这个时候我就想可能会是MCU本身的bug了,就去查了MASKSET为0N53H的PT60 ERRATA, 果然发现ADC FIFO是有bug的
按照errata的说明,当bus clock小于ADCK/2的话,FIFO功能就会无法工作的。之后我使用异步时钟(典型值为3.3M)作为ADC的时钟源,然后在讲bus clock改为1M,这时候FIFO确实是无法工作了,但因为本身异步时钟的误差就很大,所以这个测试参考意义有限。
但这个情况和我遇到的还是不同的,我推论是:当ADC直接使用bus clock作为时钟源且不分频的话,ADC 的FIFO就无法工作。
之后我又实验很多次,在ADC的正常工作范围内,只要BusClk作为ADC的时钟源并不分频,FIFO功能都无法工作,所以这应该就是PT60的一个bug。
结论:在ADC的正常工作范围内,当ADC直接使用bus clock作为时钟源且不分频的话,ADC 的FIFO就无法工作。