请教马老师:关于M128扩展SPI接口AD转换器的问题
想用M128接SPI口的ADC(ADS1281),用IO口模拟时序,AD分辨率24bit,也就是说,完成一次采样,需要连续有24个SCLK的动作,再加上其他指令,不知道这些动作在250个微秒的时间内能否完成(如果M128工作在8M的时钟下的话),如果这个用IO模拟可以实现的话,我就不用扩展CPLD了?另外,我用3片ADC同时工作,共享一个SCLK信号,3个SDIO信号分别接3个IO,不知道这种方式有没有什么问题。 AD芯片的同步操作(SYNC)也是由单片机的同一个IO口给出的。 为什么会这么冷清呢?
无奈的顶顶···· 你可以简单计算一下:
8M时钟,一条汇编指令时间是1/8M = 0.125us. 200us/0.125us = 1600. 1600条指令应该能完成一次采样,就看你怎样写了.
第2个问题也是可以的,不过程序要设计的好一点. 我用SPI硬件方式驱动过CS55532,这个时间取决于这些条件:
1,MCU和ADC芯片中最低的IO口速率,高速的必须迁就低速的;
2,可以直接用硬件方式读取,既然是SPI的就应该可以用,除非你的ADC不是标准的字节操作,就像HT1621的命令我无法用SPI来做,因为有些指令不是8位的整数倍。
3,如果用IO模拟方式读取,则必须考虑接收变量的一位以及计数变量的循环判别所占据的时间,这些时间往往比较关键,特别是用C写的程序,用示波器可以明显看出CLK波形上下不对称,就是时间惹的祸,还好不影响使用。
强烈建议用硬件SPI读写,速度快,可以用中断方式,占用MCU资源少,你同时读写3个ADC,而且对速度要求那么高,考虑下吧。 3楼的建议值得考虑.
如果3个ADC不需要严格的"同步",使用硬件SPI口最方便,速度比较好掌握.
用I/O口模拟,考虑嵌汇编的方式.
不管什么方法,对程序设计的要求比较高.时间肯定够的(AVR还可以工作在16M),关键是你如何处理了. 谢谢马老师和三楼。
我也希望用硬件的SPI,但是需要3通道同时采样,MCU上没有3通道SPI啊:(
看来只有做个试验,试试IO模拟的方式速度够不够了。
再次谢谢 MCU里面指令是顺序执行的, 无论如何也会有时间差
如果需要同时, IO模拟得做到在一个SPI时钟周期里面读三个IO的值并做相应处理...
如果不够快的话, 上个便宜CPLD来伺候三个ADC吧~
页:
[1]