ADI 技术
直播中

颜婷

7年用户 198经验值
私信 关注
[问答]

请问AD2S1210数据更新到SPI寄存器的时间,是否是ns级别?

请教5个问题:

1.  数据更新到SPI寄存器的时间,是否是ns级别?(时钟是8M)如果Sample保持低电平或高电平,是不是不会更新数据到SPI寄存器中?
  2  使用12位情况下,角度阶跃改变10°/179° 时,芯片跟踪角度的延时是多少?分别是2.2ms/4.75ms吗?这是不是从信号输入到旋变到角度输出的延时?

3. 配置模式下,写入寄存器后,第一次读取到的数据tempBuf1是0x7E,紧接着再读取后tempBuf2就不是0x7E了,试了其它寄存器也一样,只能读取一次,第二次就返回默认值了?
   ad2s1210SPIConfigWrite(AD2S1210_DOSRSTMITHRES, 0x7E);
   ad2s1210SPIConfigRead(AD2S1210_DOSRSTMITHRES, &tempBuf1); /*read register  */
   ad2s1210SPIConfigRead(AD2S1210_DOSRSTMITHRES, &tempBuf2); /*read register  */

4. datasheet30页串口时序图,*注是什么意思?,如下图中读取position后是不是要设为Velocity(A0=0,A1=1)模式才读取到速度信息,中间需不需有时间间隔?  t34的时间间隔是不是必须要的?

5. 请问如下代码有没有时序上的问题,不知道为啥我读取到的fault总是和Velocity一个值?
void ENC_QSPI_ISR(void)
{
   EncPosVolBuf[EncPosVolBufIndex] = getReg(QSPI0_SPDRR);
   EncPosVolBufIndex++;
   if (EncPosVolBufIndex > 4)
   {
      EncPosVolBufIndex = 0;
      AD2S1210_POSITION_MODE;
      QSPI_SSPIN_PULL_HIGH;

      f16PositionEl = ((Frac16)((((unsigned int)EncPosVolBuf[0])<<8)|(unsigned int)(EncPosVolBuf[1]))) + f16PosAdd ;
      f16Speed = (Frac16)((((unsigned int)EncPosVolBuf[2])<<8)|(unsigned int)EncPosVolBuf[3]);
      u16Fault = EncPosVolBuf[4];
      return ;
   }
   else if (EncPosVolBufIndex > 1)
   {
      AD2S1210_VELOCITY_MODE;      
      QSPI_SSPIN_PULL_HIGH;  
      QSPI_SSPIN_PULL_LOW;     
   }
   setReg(QSPI0_SPDTR, AD2S1210_POS_VEL);
}

多谢!

回帖(9)

黄鸿江

2019-1-22 11:10:39
1.  数据更新到SPI寄存器的时间,是否是ns级别?(时钟是8M)如果Sample保持低电平或高电平,是不是不会更新数据到SPI寄存器中?
 
从内部寄存器更新到SPI可访问的速度角度寄存器是根据SAMPLE信号的下降沿进行触发的
 
2.  使用12位情况下,角度阶跃改变10°/179° 时,芯片跟踪角度的延时是多少?分别是2.2ms/4.75ms吗?这是不是从信号输入到旋变到角度输出的延时?
 
手册中给出的这个指标是阶跃响应的曲线
 
3. 配置模式下,写入寄存器后,第一次读取到的数据tempBuf1是0x7E,紧接着再读取后tempBuf2就不是0x7E了,试了其它寄存器也一样,只能读取一次,第二次就返回默认值了?
 
检查下SPI读写时序,对于芯片的可读写寄存器,只要没有硬件复位和上电操作是不会自动恢复默认值的
 
4. datasheet30页串口时序图,*注是什么意思?,如下图中读取position后是不是要设为Velocity(A0=0,A1=1)模式才读取到速度信息,中间需不需有时间间隔?  t34的时间间隔是不是必须要的?
 
T34时间是需要的,最短10ns时间,读取position需要配置A0A1的模式,注释的意思是如果上次访问的寄存器是故障寄存器地址,再次在配置模式下读取故障寄存器不需要重新写故障寄存器地址操作
 
5. 请问如下代码有没有时序上的问题,不知道为啥我读取到的fault总是和Velocity一个值?
 
同3,你的时序应该有些问题,能把SPI带读写信息的波形贴出来吗?
举报

颜婷

2019-1-22 11:18:16
多摩川AU6802N的中有写延时,所以我知道AD2S1210从旋变的信号输入到角度数据的输出的延时是多少?
举报

黄鸿江

2019-1-22 11:28:15
引用: 60user106 发表于 2019-1-22 11:18
多摩川AU6802N的中有写延时,所以我知道AD2S1210从旋变的信号输入到角度数据的输出的延时是多少?

这里面指的是转换时间,AD2S1210内部环路更新频率为1/2 sysclk,sample一次到数据读取出来大概5us
举报

颜婷

2019-1-22 11:35:40
引用: 宋小辉1 发表于 2019-1-22 11:28
这里面指的是转换时间,AD2S1210内部环路更新频率为1/2 sysclk,sample一次到数据读取出来大概5us

谢谢您的回复。
关于寄存器配置后,第二次读取为0的,SPI信号,以及程序如下。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分