Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207446
  • 博文数量: 93
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 978
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-10 15:46
个人简介

青春无悔

文章分类

全部博文(93)

文章存档

2015年(16)

2014年(77)

我的朋友

分类: C/C++

2014-12-26 18:06:18

硬件平台:ADSP-BF512

硬件概况:

1、用内部时钟,CLKSEL=高电平。硬件设置

2、需要使用内部参考源,参考源选2.4V

3PWDN引脚,我已经硬件上拉了,软件不用处理

4PF3(原来的FASTE),连接到RESET

5PH5(原来的CAL_DRV),连接到DRDY

6PF0(原来的DeFibr_OUTE),连接到START

7PG3(原来的RESP_RESET),连接到CS

8SCLKPG12Flash

9MISODOUT

10MOSIDIN

SPI接口:

1、标准SPI接口:/CS,SCLK,DIN,DOUT;另外转换完成/DRDY

 

/CS:

1、必须通信过程都要保持低电平;

2、大于4Tclk才恢复高电平(4/2048khz=2us);

3、高电平后,SPI处在复位[SCLK,DIN不顾;Dout高阻态]/DRDY正常

 

SCLK

1、/CS低电平情况下,SCLK不允许有差错,因为很敏感到1ns

2、8SCLK后,芯片内部执行指令;若出错执行,进行/CS拉高再拉低操作,即可恢复正常;

3、建议SCLK8的倍数;

4、最快50ns;公式:Tsclk < (tDR-4Tclk)/(Nbits*Nchannels+24)

例如8-kSPS(8channels,24bit resolution) 最小SCLK1.72MHz

5、数据读取可以RDATAC模式、或者RDATA命令

 

DIN

1、SCLK下降沿写数据;

 

DOUT

1、SCLK上升沿移数据;/CS为高时,为高阻态;

2、连续读模式:DOUT同时具备数据转换完成标志功能;在周期内可重复读数据。

 

数据获取:

RDATAC(开机默认):连续读,适合只配置1次,以后只读的场合。

RDATA:单个读。适合用于寄存器频繁操作场合。

1、SCLK第一个上升沿,MSB就锁定在DOUT了;第一个SCLK下降沿后,/DRDY就恢复高电平;DIN必须保持低电平,在整个读取过程

2、SCLK的个数。[24bits状态位数*通道数]。某个通道不使用,输出为0.

3、允许多次读结果。DAISY_IN置位1


Setting time建立时间

根据CONFIG1寄存器的DR[2:0]fclk决定


 

注意:STRT信号转至高电平,需要等待第4DRDY脉冲才有效数据,因为3tDR用于滤波器。


OFFSETCAL:

在每次PGA改变增益都需要重新校准。


==================问题记录分界线==========================
1.读芯片ID内容出错
分析结论:CS的拉高时序没有满足要求:>4*Tclk=4/2.048MHz=2us

2.SCLK不能太快。
CLK=片外1.024MHz时,使用6.6MHz出现问题,改为2.2MHz就可以。
阅读(4143) | 评论(0) | 转发(0) |
0

上一篇:C高质量代码

下一篇:ADI服务之中断管理

给主人留下些什么吧!~~