完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现使用AD2S1210,读故障寄存器发现总报错误0x8000,提示为削波错误,但发现实际硬件LOT和DOS引脚都已拉高,应该没有故障,在读取位置信号时,初始位置为0x8080,而不是0x0000,请问这是为什么?
|
|
相关推荐
19个回答
|
|
您好,此问题已经提交给ADI相关专家,专家会尽快回答您的问题。谢谢!
|
|
|
|
请问读取时序是否正确,您是在什么模式下读取的位置信息呢?如果手动转动弦变一圈的话,是否能看到位置信息的变化呢?
|
|
|
|
我是在配置模式下读取的信息,手动转动旋变一周确实有变化,但是转一个电角度是从0x8080~0xFFF0(12位),而不是从0x0000开始,读故障寄存器发现总报错误0x8000,提示为削波错误,但发现实际硬件LOT和DOS引脚都已拉高,应该没有故障,这是为什么呢? |
|
|
|
60user152 发表于 2018-11-5 08:06 建议按照数据手册31页中的Figure37来进行上电复位操作,然后再读取故障寄存器看是否还有报错。请您再确认一下,是否首位和D[7]始终为1。您使用的是串行输出还是并行输出? |
|
|
|
saber_miku 发表于 2018-11-5 08:11 我使用的串行方式,读所有寄存器都会多读出一个0x0080,也就是D[7]始终为1,不知道为什么,请教一下 |
|
|
|
saber_miku 发表于 2018-11-5 08:11 确实按数据手册31页中的Figure37来进行上电复位操作,从示波器上看,没有任何故障,只是读所有寄存器的值都是最高位是1,相当于比实际值多了一个0x0080,请教一下原因 |
|
|
|
60user152 发表于 2018-11-5 08:34 您好,您的问题已经提交给ADI相关专家,我们会尽快回答您的问题,请等待,谢谢! |
|
|
|
|
|
|
|
您好,按照示例代码修改了程序,还是所有寄存器回读的数据最高位D7都被置1 ,应该不存故障了,请问是什么原因? |
|
|
|
是否方便从示波器截取一下时序图发送过来帮您查看,应该还是时序的问题。 |
|
|
|
1.电路设计说明 设计的旋变驱动EXC和S1-S3/S2-S4的电路设计如下图1和图2: 图1为激励放大信号电路,图2为正弦和余弦的滤波信号电路。 2.信号实测和设计值的比较 选用的旋变变压比为0.286。测得的旋变激励信号的如图3所示,激励信号的Vpp为4V左右,手册上说的标准值为3.6V。通过放大电路计算的激励的输出为4×1.54=6.16V, 实测激励放大的输出如图4所示为6.08V,通过此可以计算出正弦和余弦的峰峰值为6.08×2×0.286=3.48V。通过旋转旋变转子,测得转子在某一位置时,用示波器差分探头测得SIN和SIN_LO的差分输出最大值为3.56V左右,如图5所示,可以满足AD2S1210的正弦和余弦的峰峰值输入要求。某一时刻 的SIN,SINLO,COS,COSLO信号如图6所示。 图1 图2 图3 图4 图5 图6 某一刻的SIN,SINLO,COS,COSLO信号 3.软件时序控制 软件设计如下:采用SPI串行通信,波特率2M,一直处于AD2S1210配置模式下,软件部分语句如下: (1)初始化操作: ResetClear(); DELAY_US(1); SampleSet(); DELAY_US(20); // tRST = 20us ResetSet(); // reset 拉高 DELAY_US(20000); // tTRACK = 20ms SampleClear(); // Sample 拉低 DELAY_US(1); SampleSet(); // Sample 拉高 FaultStatus = DecoderRead(FAULT); // 读取故障寄存器 DELAY_US(1); SampleClear(); //Sample 拉低 时序图如下:蓝色波形为Sample 信号,绿色为SPI时钟信号,黄色为Reset信号(波形前面有从低 到高的跳变),都是按数据手册31页进行的操作 (2)读操作 WRClear(); //WR拉低 SpiaRegs.SPITXBUF = add; //地址 while(!SpiaRegs.SPISTS.bit.INT_FLAG){} //等待发送完成 SpiaRegs.SPICCR.all = 0x0047; SpiaRegs.SPICCR.all = 0x00c7; WRSet(); //WR拉高 DELAY_US(1); WRClear(); SpiaRegs.SPITXBUF = add; while(!SpiaRegs.SPISTS.bit.INT_FLAG){} SpiaRegs.SPICCR.all = 0x0047; SpiaRegs.SPICCR.all = 0x00c7; WRSet(); 时序图如下:按数据手册29页进行读操作,黄色为SPI时钟信号,蓝色为发送的地址数据(故障寄存 器地址0xFF),紫色为WR信号, 绿色为读出的数据,可以看出第二个接收到的数据为0x80, 在读取每一个寄存器时,最高位都是1,上电复位操作后,LOT和DOS引脚也没有被拉高,但只从波形上看,并没有发生正余弦消波现象,请问专家,上述硬件设计和软件操作有什么不对的地方,谢谢 |
|
|
|
60user56 发表于 2018-11-5 09:34 您的时序图如果能更清楚一点就好了。但是从时序图上来看,第二串黄色时钟的上升沿对应的数据是全0的。不太清楚您是使用SCLK的上升沿还是下降沿来读取数据的。 数据手册第28页中的“SDO output”提到数据是在SCLK的上升沿出来的。您再检查一下吧。 |
|
|
|
saber_miku 发表于 2018-11-5 09:41 您好,按您的提示,现已经基本调出来了,但时序和28页中“SDO output”是在SCLK的上升沿出来的不太一样,而且发现读和写时序也是不一样的。 1.读取数据时用的是下降沿移入DSP,也就是下降沿移出AD2S1210, 2. 写数据时用的是下降沿移出DSP,也就是下降沿移入AD2S1210, 为什么两者会不一样呢,如果改成同样的边沿极性,读或写就会有一个不行,请问为什么? |
|
|
|
60user56 发表于 2018-11-5 09:47 SDI是使用SCLK的下降沿移入,而SDO是使用SCLK的上升沿移出数据。这个在AD2S1210数据手册的第28页中有说,您可以看一下。 |
|
|
|
请问AD2S1210串行口通信的最大波特率能到多大,我试过10M以上好像就不行了,读出的数据少了一半 |
|
|
|
数据手册第7页中给出了不同电源电压对应的SCLK的最高频率,是15M,20M和25M。 |
|
|
|
60user56 发表于 2018-11-5 09:34 您好 我想问下 输入的SIN、COS峰峰值的范围是最大峰峰值的范围不用考虑最小峰峰值,还是峰峰值的最小值要大于他给的最小值峰峰值的最大值要小于他的最小值。 |
|
|
|
京西重工瞿先生 发表于 2018-11-5 10:40 手册中sin/cos信号电平的定义指的是:sin-sinlo和cos-coslo信号的包络的峰峰值。峰峰值要在要在手册规定的2.3~4.0的范围内就可以。 |
|
|
|
saber_miku 发表于 2018-11-5 10:46 我明白你的意思了 我去试试 谢谢 |
|
|
|
只有小组成员才能发言,加入小组>>
2298个成员聚集在这个小组
加入小组1127 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1486 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
2012 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4331 浏览 2 评论
9148 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1837浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1773浏览 2评论
1127浏览 2评论
1774浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1486浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-24 19:46 , Processed in 0.959239 second(s), Total 80, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191