搜索
bottom↓
回复: 10

ADIS16350 spi读取数据正常,写控制命令写不进去,请教!

[复制链接]

出0入0汤圆

发表于 2009-11-28 14:41:31 | 显示全部楼层 |阅读模式
向ADIS16350的控制寄存器写一个字节数据
//***********SPI Write to Register****************
unsigned int Write_Reg(unsigned int address,unsigned char data)
{
        unsigned int addr;
        addr = address;
        addr <<= 8;
        addr &= 0xFF00;
        addr |= data;
        addr |= 0x8000;
        addr &= 0xBFFF;
        SPI2BUF = addr;
        while(!IFS1bits.SPI2IF);      //等待发送完成
    IFS1bits.SPI2IF=0;            //清除发送完成标志位
        return SPI2BUF;               //读取接收寄存器(即使是无效数据也需清空
}

谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-11-28 14:44:56 | 显示全部楼层
片选后需要延时一段时间~

出0入0汤圆

 楼主| 发表于 2009-11-28 15:08:20 | 显示全部楼层
好像不是延时的问题,我试了好多都不行,下面是向0x39,0x38地址里写0x0402,写进去数据之后读出来还是原来的数
        CS =0;
        DelayMS(10);
        Nop();
        Nop();
        filter_temp = Write_Reg(0x0038,0x02);
        Nop();
        Nop();
//        CS = 1;
        Nop();
        Nop();
//        CS =0;
//        DelayNS(100);
        Nop();
        Nop();
        filter_temp = Write_Reg(0x0039,0x04);
        Nop();
        Nop();
        CS = 1;
        Nop();
        Nop();

出0入0汤圆

发表于 2009-11-28 20:51:09 | 显示全部楼层
默认值就是0402,你读出来是什么呢?

出0入0汤圆

发表于 2009-11-28 21:09:00 | 显示全部楼层
还有注意下DATASHEET上关于Tdatastall、Tdatarate的描述:


(原文件名:未命名.JPG)

Data stall time, fast mode SMPL_ PRD ≤ 0x09 (fS ≥ 164 Hz) 9 μs
Data Stall time, normal mode (, SMPL_ PRD ≥ 0x0A (fS ≤ 149 Hz) 75 μs

Tdatarate Data rate time, fast mode, SMPL_ PRD ≤ 0x09 (fS ≥ 164 Hz) 40 μs
Data rate time, normal mode, SMPL_ PRD ≥ 0x0A (fS ≤ 149 Hz) 160 μs

出0入0汤圆

 楼主| 发表于 2009-11-30 19:10:25 | 显示全部楼层
feng_matrix 悟   您好
我知道ADIS16350在0x39,0x38寄存器默认的值是0x0402,之前我想改变这个值,调整内部滤波器的的参数,但是写不进去,所以我用了DEMO软件改变了寄存器的值,变成了0x0406,所以读出来的数是0x0406。在程序里我往寄存器里写0x0402根本写不进去。
关于您说的stall time 和 rate time 的问题,我的理解应该是片选信号有效的相关问题,我在片选信号之后尝试延时了不同长度的时间,都写不进值,而且读数都是正常的,所以我觉得可能问题不在这,但是也不知道怎么回事,希望再帮帮忙

出0入0汤圆

 楼主| 发表于 2009-11-30 19:31:38 | 显示全部楼层
feng_matrix:看了您在论坛上很热心帮助大伙,加了您的MSN,想跟您了解下有关ADIS16350的问题,可几天都没见您上线。
我现在遇到的最大问题就是漂移问题,从ADIS16350得到的角速度信号,通过单片机采集积分之后输出角度,但是偏移量很大,我的采样速率在4ms,也不算太慢,传感器内部的Bartlett Windows Fir已经调到最大0x0406了,效果依然不好,我又在外面设计了Kalman滤波器感觉没有太大改善,希望能进一步交流,也希望用过ADIS16350的大虾们多多指点

出0入0汤圆

发表于 2009-12-1 11:19:34 | 显示全部楼层
第一个问题:
ADIS16350的SPI接口最高速度2M,你用的多少?你的MCU用什么?如果命令格式无误,怀疑多数是时序问题
还有最好别用NOP、DELAY之类去控制通信延时,浪费MCU处理资源且不时间不准
一般SPI接口函数中应该已经有相应的控制参数,比如AVR32的software_framework中SPI接口定义:

//! Option structure for SPI channels.
typedef struct
{
  //! The SPI channel to set up.
  unsigned char reg;

  //! Preferred baudrate for the SPI.
  unsigned int baudrate;

  //! Number of bits in each character (8 to 16).
  unsigned char bits;

  //! Delay before first clock pulse after selecting slave (in PBA clock periods).
  unsigned char spck_delay;

  //! Delay between each transfer/character (in PBA clock periods).
  unsigned char trans_delay;

  //! Sets this chip to stay active after last transfer to it.
  unsigned char stay_act;

  //! Which SPI mode to use when transmitting.
  unsigned char spi_mode;

  //! Disables the mode fault detection.
  //! With this bit cleared, the SPI master mode will disable itself if another
  //! master tries to address it.
  unsigned char modfdis;
} spi_options_t;


第二个问题:
你想把16350放在哪方面应用上?静态姿态检测情况多?还是动态姿态检测多?平面运动?还是3D运动?

积分角度不准,这个很正常,除了提高积分间隔时间Dt准确度外,关键在惯性导航算法
可参考此贴13楼:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3546165&bbs_page_no=1&bbs_id=9999
如果陀螺仪算角度没有漂移问题,16350里要三轴加速度传感器干吗啊?

出0入0汤圆

 楼主| 发表于 2009-12-1 14:47:39 | 显示全部楼层
第一个问题已经解决了,用的方法就是重复多写几次,基本就可以写进去了。

我的16350是安装在一个移动的四足机器人身上,及时了解它的三维运动姿态。16350的采样最高采样频率是819.2HZ,我用的是PIC的16位单片机6014A,采样频率在250HZ。现在用的方法一种是对采样数据积分累加,发现漂移较大,另一种是用x和y轴与重力加速度的夹角来反正弦得出俯仰角和横滚角,但是在角度较大是误差很大。我使用了16350内部的滤波器,自己又设计了一个简单的KM滤波器,效果都不理想。看了你所介绍的惯导姿态结算方法,我现在没有磁力计,所以即使可以也只能在俯仰和横滚上提高精度,还没有实现。。。现在就是不知道16350能提供多大精度的数据

出0入0汤圆

发表于 2010-1-3 21:22:20 | 显示全部楼层
to feng_matix:
   买16355的时候说有过静电损坏的情况,如何设计保护电路啊?

出0入0汤圆

发表于 2013-5-31 15:46:40 | 显示全部楼层
feng_matrix 发表于 2009-12-1 11:19
第一个问题:
ADIS16350的SPI接口最高速度2M,你用的多少?你的MCU用什么?如果命令格式无误,怀疑多数是时 ...

您能不能给我一个关于关于对这个惯性测量单元进行数据采集的程序吗?类似的也可以   谢谢啦
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表