完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教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个回答
|
|
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带读写信息的波形贴出来吗? |
|
|
|
|
|
|
|
这里面指的是转换时间,AD2S1210内部环路更新频率为1/2 sysclk,sample一次到数据读取出来大概5us |
|
|
|
谢谢您的回复。 关于寄存器配置后,第二次读取为0的,SPI信号,以及程序如下。 |
|
|
|
你这个时序应该是对的,读寄存器值的时候,多次读取,连续写地址就可以,你相当于先写了0X7F,然后写0X00,所以后面读取出来是0X00 |
|
|
|
非常感谢您的解答!
我还要请教俩个问题: 1. 您说的“”AD2S1210内部环路更新频率为1/2 sysclk,sample一次到数据读取出来大概5us“” , 是不是TypeII的环路计算周期时间大约5us?而采样周期是 AD2S1210 datasheet 中第32页所说的(1/4.096MHz=244ns) 我的时钟频率是从DSP输出的,只能输出8MHz,采样周期是不是就是1/4MHz=250ns? 2. 串口时序图中,是不是在SAMPLE下降沿后必须满足t30,才能使能的WR/FSync信号来读取SPI数据? |
|
|
|
1. 环路更新周期为1/2系统时钟,如果系统时钟为8M,更新时间为250ns 2.对的 |
|
|
|
|
|
|
|
60user106 发表于 2019-1-22 12:32 如果算真正的延时,那要算上读取一次数据需要的时间,就是sample到读取到数据时间,一个周期大概是5us |
|
|
|
只有小组成员才能发言,加入小组>>
2281个成员聚集在这个小组
加入小组996 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1389 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1940 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4272 浏览 2 评论
9063 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1535浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1695浏览 2评论
996浏览 2评论
1674浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1389浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 04:28 , Processed in 0.727818 second(s), Total 61, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号