相关商品

浏览历史

当前位置: 首页 > 传感器常见问题 > ADXL345采用SPI模式与VC5509A接口
ADXL345采用SPI模式与VC5509A接口
传感器常见问题 / 2012-12-23

 VC5509AMcBSP接口能够配置成4线SPI模式,因而可直接与ADXL345通信。仍然使用了实验室自制的DSP主板SDUST VC5509A V1.1。该板的JP2扩展接口引出了McBSP0接口。该主板上还通过McBSP0AIC23B0进行数据通信。如果不做处理,会影响到与ADXL345的通信。根据DSP主板的原理图,拆除了电阻R37R79R80R81R82R75,使得McBSPAIC23B0的通信线断开。

在调试I2C模式时,ADXL345模块焊接了必要的上拉电阻,而在SPI模式时,这些上拉电阻是不需要的。将三个上拉电阻拆除即可。下图为VC5509AADXL345通信的原理图(SPI模式)。

ADXL3455509A主板连线(SPI)原理图

分析上图,McBSP0CLKX0充当SCK信号,DR0充当MISO信号,DX0充当MOSI信号,FSX0充当SS信号,INT0n充当INTn信号。这些信号分别与ADXL345的对应引脚直接相连即可。下图为完整的原理图:

ADXL3455509A主板连线(SPI)原理图

调试要点小结:

1)将VC5509AMcBSP0配置在时钟停止模式。此时,CLKX用作SCK信号,FSX用作SS信号,CLKR内部与CLKX相连,FSR内部与FSX相连。在这里,McBSP工作在主模式,DX充当MOSI信号;DR充当MISO信号。

2)程序编写的关键是要把McBSP0正确的配置在时钟停止模式。使用CSL来完成该配置工作,容易实现,避免了一些不必要的错误。在McBSP的数据手册中,有配置McBSP工作在SPI模式的详细步骤(6-8)。下面为配置步骤:

1)复位发送和接收器。XRST=0RRST=0

2)复位采样率生成器。GRST=0

3)修改影响SPI工作的寄存器。需要修改的一些信息列出如下:

1> 根据ADXL345的手册中SPI的时序图,得出数据在SCK时钟的下降沿发送,在上升沿接收。所以配置CLKSTP=10bCLKXP=1bCLKRP=0b

2> CLKX充当SCK信号,该信号由VC5509A产生,CLKX应配置为输出。所以配置CLKXM=1b

3> 时钟信号由McBSP的采样率生成器提供。所以配置SCLKME=0bCLKSM=1b

4> 系统时钟工作在144MHz,如果要让ADXL345的数据输出速率达到3200Hz,需要使得SCK时钟频率高于2MHz;为避免时钟过高造成负面影响,推荐SCK时钟不高于5MHz。在这里设定SCK频率为4MHz。所以配置CLKGDV=36144/4=36)。

5> FSX充当SS信号,为输出信号;且ADXL345CS信号为低电平有效。所以配置FSXM=1bFSGM=0bFSXP=1b

6> 为保证FSX信号的正确性,需配置XDATDLY=01bRDATDLY=01b

7> SPI模式时,还需注意只能使用单帧模式,帧长固定为1。需要配置XPHASE=0RPHASE=0XFRLEN1=0

8> 因为在时钟停止模式下,发送和接收电路同步于同一个时钟信号,所以需要将XWDLEN1RWDLEN1设为相同值。这里根据ADXL345的读写时序,设定其长度均为16

4)使能采样率生成器。GRST=1

5)使能发送和接收器。XRST=1RRST=1

6)使能帧同步逻辑。FRST=1

3)调试中,碰到了一些比较奇怪的现象。比如不连接ADXL345MISO上也有很杂散的信号输出,SS信号高电平仅为2.2V左右。后来发现是由于AIC23B0的干扰,拆除终端匹配电阻后,信号恢复正常。

4)开始调试时,程序无法进入中断,不容易观察读写时序。使用循环读取寄存器清除中断的方式来构造读写时序。这时可看到中断信号的变化,SCK信号也为设定的4MHz。根据波形,对比时序图,来寻找bug。这要比单纯修改程序代码要高效的多。

5)关于MISO信号。该信号由ADXL345输出。根据时序图,高8位应当为无效数据,但实际观察的波形和读取的数据表明,高8位的确也存在数据。为凸显出问题,修改为循环读取1个寄存器,发现高8位和低8位相同;改为循环读取2个寄存器,发现高8位和低8位数据交错。找到了规律:在读取数据时,高8位上次读取过的数据;低8位为这次要读取的数据。所以只需将高8位数据屏蔽即可。

6MISO信号在最后输出高电平后,有一个很缓慢的下降沿;分析这是由于ADXL345在输出完最后一个数据(高电平)后,即保持高阻抗,所以表现出一个缓慢的下降沿。不会对数据传输的正确性造成影响。

7)对ADXL345的执行写操作时,也需要执行一条读操作。否则读取的数据会发生错乱。

8)在程序的开始,需要清除ADXL345的中断信号,才能触发中断循环。在这里读取一次寄存器,也能够进入中断,但此时DATA_RDY中断还没有产生,所以无法触发中断循环。所以添加了一个循环和标志位,循环检测标志位并读取寄存器;在有效中断时将标志位置1,当检测到标志位为1后,表明已触发中断循环,退出读取循环,继续下面的操作。但是有一点,这种方式在测试程序中是可行的;而在真正使用中是行不通的。因为若ADXL345存在问题,则程序死在这里,使得其他功能也无法实现。实际中可在此实际一个有限循环,而非无限循环。

9)最后测试,将速率设置为3200Hz,通过示波器观察中断,大约300us中断一次,对应3200Hz。中断的低电平时间基本一致,说明能够规律的进入中断,而不像先前杂乱的中断信号。测试中断函数的指令大约为9000条,占时为大约54us,支持中断频率大约19kHz

程序编写展望:

1)将McBSP0DMA结合,可进一步提升数据读写的效率。这种方式在需要对读取的数据进行大量数据运算时很有优势。但实现有难度,需要把XINT0RINT0INT0中断和DMA配合好。实现难度比较大。

2)现在由于缓冲区的限制,只能观察到部分加速度波形,如果能添加RTDX,并编写一个上位机软件,可以将采集到的加速度信息存储到上位机,并可观察到完整的加速度信息。


本文标题: ADXL345采用SPI模式与VC5509A接口
本文地址: http://www.rdbuy.cn/article-146.html
本文标签: ADXL345采用SPI模式与VC5509A接口

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 游客
E-mail:
评价等级:
评论内容:

挑选商品 > 确认购买 > 网上支付/货到付款 > 验货满意 > 点评商品

原装正品 金牌服务 购物有保障
  • 放心:我们的任何商品,均为原装正品
  • 舒心:倾力为您打造人性化的购物平台
  • 省心:把麻烦交给我,把快乐网购交给您
新手上路
售后流程
购物流程
订购方式
配送与支付
货到付款区域
配送支付智能查询
支付方式说明
会员中心
资金管理
我的收藏
我的订单
服务保证
退换货原则
售后服务保证
产品质量保证
联系我们
网站故障报告
选机咨询
投诉与建议