【电路】板上 spi & iic 接口芯片功能分析

分析几个芯片的控制接口,为下一步写verilog代码做准备。

首先,受限于adc的work频率最大27mhz,整个控制模块的平台 clk=20mhz,50ns。

供电芯片  4个共用一个spi接口,通过/sync[4:1]来区分,相当于片选信号

时序分析

t1=20ns(min)@3.3V,sclk的速率最大达到50MHz;

t4=10ns(min),/sync=low理论上可以和sclk的rising一起动作;在rising送数据/移位,芯片在falling采样sdi,从bit28到bit0;

t6=5ns(min),t5=150ns(min);t7=5ns(min);t8=7ns(min);/sync=high需要等一拍;

t9=75ns(max),t10=1.65us(1DACx1)2.3us(2DACx1)2.95us(3DACx1)3.6us(4DACx1)270ns(other)

检测/busy=low的状态,抓到/busy=high后释放。

操作指导

一般情况,每个指令下发后,都需要等待busy时间才能释放,接着bram才能读取下个指令。t10是us级的。

建议,每次都先读busy状态,然后再发指令。这样指令生效的busy时间跟bram读下条指令的时间重叠,节省时间。

下发一串指令29*50ns*2=3us,读一次bram参数5*50ns*2=0.5us,接近busy最大的3.6us,很合理。

 

ADC采样芯片:采用read-only的spi接口

时序分析

tCLK=37ns(min),最大工作时钟27MHz,外部用了一个20Mhz的有源晶振;最好让fCLK/fSCLK成倍数关系,取10Mhz;

抓/DRDY-falling,第一个bit先输出MSB,然后在SCLK的falling沿,其他23个bit再依次输出,所以user应该在sclk的rising沿sample数据;

那么数据采样过程应该是,/DRDY下降沿,采样MSB@SCLK-rising,然后发falling让ADC出数据,接着在rising采样。

转换周期tCONV,在high-speed模式下典型值是256个clk周期(20mhz下就是12.8us)(25mhz的clk下需要10.24us)

其中读取数据的时间是24个bit的时间是24*50ns*2(只占用其中的2.4us)。在连续指令下可以不遗漏地抓取每次更新值。

一定要抓取/DRDY的falling,而不是低电平。如果采样的是靠后的low,有很大概率抓到正在刷新的数据,采样到错误数据。

所以等采样命令下达后,再抓DRDY下降沿发出sclk的话,最大的间隔是1个CONV周期,12.8us;(推荐)(conv决定了采样刷新率)

如果每次DRDY都默认存数据,采样指令到达直接拿数据,每次的时间间隔还是1个CONV周期,而且sclk一直在工作,且需要刷新标志,不推荐这种方式;

 

DRDY空跑的高脉宽是一个clk周期,采样该高电平是否有问题?

从空闲态抓取falling确实只有一个clk间隙,一旦开始采data,高电平将会占大多数的conv时间。

IIC扩展IO:

采用IIC的fast-mode-400khz,scl的高电平0.6us-min,低电平1.3us-min;

start/stop的建立保持时间也是0.6us-min;所以最小逻辑节拍是0.6us;

sda数据在scl高电平期间要保持稳定,sda数据在scl-rising出现前100ns就要建立,保持到scl-falling处即可;

可以按照L0.6us-H0.6us-L0.6us来分配节拍;

 数字电位器:

注意区分 CMD与REG EE与RDAC。REG=0,先调整RDAC,调整完毕写EE。

Quick Command的模式跟上面不一致,暂时不使用。

 

附上IIC总线规范之AC特性

原文地址:https://www.cnblogs.com/kevinchase/p/6963142.html