ADI 技术
直播中

汪岑

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

关于AD2S1210并行读取模式切换问题

您好!
我在调试AD2S1210时,使用并行接口进行读写。
全部工作在配置模式下时,代码如下,读取的速度,位置和错误寄存器值均正确。在电机不转的情况下速度和角度值均为一条直线。
ReadRegFromAD2S1210(CONFIG, POSItiONMSB, &buf_data);  
Position[0] =  buf_data;   
ReadRegFromAD2S1210(CONFIG, POSITIONLSB, &buf_data);  
Position[1] =  buf_data;
ReadRegFromAD2S1210(CONFIG, VELOCITYLSB, &buf_data);  
Speed[1] =  buf_data;
ReadRegFromAD2S1210(CONFIG, VELOCITYMSB, &buf_data);  
Speed[0] =  buf_data;
ReadRegFromAD2S1210(CONFIG, FAULT, &fault);   

工作在普通模式下,只读取速度和位置时值是对的,代码如下。
ReadPFromAD2S1210(POSITION,&Pos);
Position[1]=Pos&0x00ff;
Position[0]=(Pos>>8)&0x00ff;

ReadPFromAD2S1210(VELOCITY,&Vel);
Speed[1]=Vel&0x00ff;
Speed[0]=(Vel>>8)&0x00ff;


当在上边代码后边加入切换到配置模式,读取错误寄存器的代码后,
即加入
ReadRegFromAD2S1210(CONFIG, FAULT, &fault);
读出的值会有大概率出错现象。即度回来的值不是一条直线 。
此外,我按照手册上的波形图,在读取完位置和速度值后立刻读取错误寄存器。(读取循环前已经向地址寄存器写入0xFF)得到的结果同前面一样,也是有错误的数据。


经调试,我发现只要在读取过程中存在普通模式与配置模式的切换,读到的值就会出现问题。

请问是我对读取操作的哪个地方理解有误呢?
硬件上,采用2812控制,WR使用总线功能的WR,RD采用IO口控制,CS采用IO口控制。下面是读写函数的定义。



多谢百忙之中的解答。

回帖(4)

汪岑

2018-8-8 07:52:34
是我使用的问题,还是PCB设计问题呢?调试了好久了,一直就是不对
举报

黄鸿江

2018-8-8 08:00:25
AD2S1210普通模式用的是多少位的?和配置模式一致吗?能把原理图贴出来吗?另外能抓一组配置模式下CS/WR/RD时序图吗?A0/A1是怎么处理的
举报

dspplusfpga

2018-12-15 19:56:51
最近也遇到这个问题,您解决了吗
举报

dspplusfpga

2018-12-15 20:05:11
你好,我最近也遇到了,你解决了吗?
举报

更多回帖

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