请教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页串口时序图,*注是什么意思?,如下图中读取posi
tion后是不是要设为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);
}
多谢!