完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用DSP28335和AD7606配合使用的时候,发现AD7606的转换时间非常长,在4倍过采样率的时候转换时间达到300us了,和官方资料说的17us相差甚大,查了几天了,用其他的最小系统版的话是有一个最小系统版是可以用的,转换时间是对的,但是一共用了6块最小系统版只有一块最小系统版有用,而且只要把AD7606的程序屏蔽了,程序是可以正常跑的,所以 应该又不是最小系统版的问题。我的程序如下:
void AD7606_Init(void) { EALLOW; //--------------------------外扩AD控制----------------------------- GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0; GpioCtrlRegs.GPADIR.bit.GPIO15 = 1; //输出 OS[0] GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 0; GpioCtrlRegs.GPADIR.bit.GPIO16 = 1; //输出 OS[1] GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO58 = 1; //输出 OS[2] GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 0; // AD_BUSY GpioCtrlRegs.GPADIR.bit.GPIO28 = 0; // 入 GpioDataRegs.GPADAT.bit.GPIO28=0; GpioCtrlRegs.GPBPUD.bit.GPIO49 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 0; // AD_FRSTDATA GpioCtrlRegs.GPBDIR.bit.GPIO49 = 0; // 入 GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0; GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 0; // AD_FRSTDATA GpioCtrlRegs.GPBDIR.bit.GPIO35 = 1; // 入 GpioDataRegs.GPBDAT.bit.GPIO35=0; GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1; //输出 GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO63 = 1; //输出 GpioDataRegs.GPBDAT.bit.GPIO63=1; GpioCtrlRegs.GPBPUD.bit.GPIO59 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 0; GpioCtrlRegs.GPBDIR.bit.GPIO59 = 1; //输出 GpioDataRegs.GPBDAT.bit.GPIO59=0; EDIS; //-----------电平初始化--------------- //-----------释放总线----- AD_CS_RD=1; //--------过采样率设成2^3=8----------- AD_SAMPLE_OS0=0; AD_SAMPLE_OS1=0; AD_SAMPLE_OS2=1; //-------复位AD7609,使能配置----------- AD_RESET=0; DELAY_US(100);//上电和RESET脉冲之间应经过:t-WAKE_UP SHUTDOWN:最大100us AD_RESET=1; DELAY_US(1);//RESET高电平脉冲宽度:tRESET:最低50ns AD_RESET=0; DELAY_US(1);//RESET低电平到CONVST x高电平之间的最短延迟时间25ns //------------------------------------ AD_CONVEST=0; } 以上是AD7606初始化的程序 /*************************************************************************************************************
int AD7606data=0;int *AD7606rambase; int DB7606[8]={0,0,0,0,0,0,0,0}; int Read_FromXint7606(void) {
} // 读AD7606程序
} //这是读程序,FlagOK_ADsample是有pwm模块给出的定时标志位,每1/9000s置位一次FlagOK_ADsample void ReadFrom7606(void) { int i; for(i=0;i<8;i++) { AD_CS_RD=0; //选通总线,准备读取 DB7606=Read_FromXint7606(); //从CS直到DB[15:0]三态禁用的延迟时间:t13, // 最长30ns(调用函数定义指针变量历时70ns) AD_CS_RD=1; //释放总线 //CS高电平脉冲宽度,CS与RD相连:t12, //最低22ns(for循环里一次判断历时40ns } AD_CONVEST=0; } 实验中我测量GpioDataRegs.GPBDAT.bit.GPIO51的高电平,也就是BUSY信号的高电平,AD7606的转换时间。4倍过采样率的时候是300us,有没有人遇到过这样的问题?如果有的话希望帮助一下我,我的联系方式是ztm_hfut@outlook.com。谢谢! |
||||||||
相关推荐
1个回答
|
||||||||
请仔细检查OS[2:0]三个引脚的焊接,并用万用表测量确认。300us大约是64倍过采样。
|
|
|
|
只有小组成员才能发言,加入小组>>
2282个成员聚集在这个小组
加入小组1023 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1409 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1953 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4283 浏览 2 评论
9079 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1593浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1709浏览 2评论
1024浏览 2评论
1695浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1410浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-3 05:16 , Processed in 0.548397 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号