5366|12

124

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

大家帮忙解决下AD7721 的采集问题!谢谢 [复制链接]

[img]https://bbs.eeworld.com.cn/[/img]
大家好!
最近在调一片AD遇到点麻烦 请大家多多指教指教
大概是这样子的 前端的模拟信号(单端信号)进AD7721 然后串行送FPGA (其实串并行均可),在FPGA内部做串转并,大概是200K的时钟,但是FPGA控制AD7721的程序 实在是搞不出来,感觉主要是对δ-γ类型的AD器件 不是很了解 之前也没有用过 ,说白了 就是状态机控制AD时序 老是不对,我贴的图大家不知道能不能看到,我把我的时序先写出来大家看看

st0 => 初始化 standby mode ,单端uni模式,cal 模式,sync模式,
st1 => normal operation mode  if drdy = '1'  then
st2 => start sync if drdy = '0' then
st3 => start rfs  then st0
或许我理解的根本就不对,对串行AD的内部的CAL和SYNC 这两个信号 理解有偏差 硬件图 是参考数据手册上面的跟ADSP的链接方式连的,其中RFS是跟DRDY连在一起的,但是我看串行模式上面,只有当RFS为低电平逻辑时 data 才有效 这样一来在drdy变高 表示数据可取后 是应该加入同步还是校准 ,上面写在一个同步或校准周期内 DRDY为低  但是为什么RFS 是一个输入信号,那岂不是可以人为拉低它,但是好像也不合常理啊,我是郁闷了 大家有做过的 或是了解AD比较多的帮帮忙! 代码我就不上了 不好意思上 怕大家笑话 不过这个问题 如果解决了  我会把帖子整理出来 给大家完整的一个 FPGA控制AD的完整逻辑  也算分享了 谢谢 最后谢谢琳子姐!辛苦

7721.jpg (271.2 KB, 下载次数: 0)

串行function

串行function

7721ctrl.jpg (86.12 KB, 下载次数: 0)

控制寄存器

控制寄存器

time.jpg (38.95 KB, 下载次数: 0)

时序

时序

硬件.jpg (21.02 KB, 下载次数: 0)

硬件连接

硬件连接
此帖出自FPGA/CPLD论坛

最新回复

呵呵 谢谢分享 :)  详情 回复 发表于 2010-4-27 19:06
点赞 关注
 

回复
举报

394

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
其实如果只看时序图模拟指令的话,有点像spi或i2c的意思,但是无所谓啦,这个串口模拟的东西,除了时序,没别的要求。注意片选的前提下,就是时钟与读写数据料,细致下。
此帖出自FPGA/CPLD论坛
 
 

回复

370

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

提个意建吧,

1.FPGA控外设时,最好选定一种外设模式,初始化 standby mode ,单端uni模式,cal 模式,sync模式,这么复杂没必要,因为芯片做成这样是为了适合不同的处理器.
2.st2 => start sync if drdy = '0' then
st3 => start rfs  then st0
我不知对需要不需要控制sync信号,但我从手册与电路上感到rfs随是AD7721的输入信号,但可能不要FPGA去控制,真的直接把DRDY转回就可.
3.总的说在串口用法下,FPGA表现为AD7721的从设备,AD7721自已产生所有的信号.波形上也表明,口串口工作下,所有信号为输出信号.
此帖出自FPGA/CPLD论坛
 
 
 

回复

316

帖子

0

TA的资源

裸片初长成(中级)

4
 
可以看一下MCBSP的接口定义,就能大概熟悉这几个信号的含义。我的理解,这种AD其实就是一个SPI读AD结果的过程,同时加一个输入IO检查RFS/DRDY的状态,在适合的时候通过SPI口去读数据。其他可以不管,就这个SPI通讯的时序图看明白就行,至于其内部到底是什么类型的AD和你要写的驱动没有什么关系。
此帖出自FPGA/CPLD论坛
 
 
 

回复

124

帖子

0

TA的资源

五彩晶圆(初级)

5
 

回复 4楼 莫恩 的帖子

刚开始我也这么想的 采样时钟和AD7721 做为主设备的主驱动时钟按接法应该是可以产生的,只要去接收数据就ok了 但是 我用示波器看 serial clk 根本就没有产生,而且drdy一直表现为高,所以我就在想恐怕要加一个同步或者校准,但是话说回来 按照我的理解 所谓同步 我想该是多片AD 多通道采集的时候 为了保证能采集到同一时刻的数据 而设的 校准这个东西 我实在是想不到 我就一路信号 所以用不到同步 !RFS是接收帧同步 因为串行是一帧一帧的接收 但是按照串口的帧数据接法 应该是在帧头 加一些标志 当然我的理解比较肤浅,不知道这个RFS该怎么用 谢谢你
此帖出自FPGA/CPLD论坛
 
 
 

回复

124

帖子

0

TA的资源

五彩晶圆(初级)

6
 

回复 板凳 qushaobo 的帖子

刚开始我也不想用状态机来控制的 我也比较同意你的说法 如果AD内部做好了的话 我只要 去根据DRDY的触发信号 接收数据就ok了 但是我细看玩 好像没这么简单 但是中间的逻辑 时序图没有给出 我也闹不明白 可能我的理解不到位吧!谢谢
此帖出自FPGA/CPLD论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(初级)

7
 
感觉ad的初始化都是硬件已经设定了,
我们只要读串口数据就可以了
DRDY为一个上升沿中断信号
当RFS为低电平时开始读取数据;
数据为当CLK为上升沿时SDATA为有效数据位。
连续读取16个SDATA就组成了当前AD转换的东东了。
此帖出自FPGA/CPLD论坛
 
 
 

回复

316

帖子

0

TA的资源

裸片初长成(中级)

8
 
RFS按图上接DRDY,他这个可能是防止你在进行AD转换的时候读数据,所以,你读数据之情通过输入管脚判断一下这个管脚的状态,他的时序图也是这样的,四个信号线,RFS和DRDY是接在一起的。
此帖出自FPGA/CPLD论坛
 
 
 

回复

370

帖子

0

TA的资源

纯净的硅(中级)

9
 

反对灾难政治学

这个不是SPI接口吧,可能是这个公司自定义的,接口标准是有专利的.
此帖出自FPGA/CPLD论坛
 
 
 

回复

986

帖子

0

TA的资源

五彩晶圆(初级)

10
 
楼主把问题写得非常清楚,佩服!
串行AD接口逻辑我有一个固定的写法,给出一个代码框架,希望对你用帮助。

--1.先设计一个计数器作为读写状态机
process (clk, reset, count) -- State machine with 63 states
begin
  if clk'event and clk = '1' then
   if reset = '0' then
    count <= (others => '0');
   else
    count <= count + 1;
   end if;
  end if;
end process;

--2.对数据进行锁存
process (clk, reset) -- Latched data  begin
  if clk'event and clk = '1' then
   if reset = '0' then
    dinbuff <= '0';
   elsif count(0) = '0' then -- store A/D data bit
    dinbuff <= din;
   end if;
  end if;
end process;

--3.生成AD片选信号
process (clk, reset, count) -- A/D chip select
variable sint: integer range 0 to 63;
begin
  sint := conv_integer(count);
  if clk'event and clk = '1' then
   if reset = '0' then
    cs <= '1';
   elsif sint = 23 or sint = 24 or sint = 55 or sint = 56 then
    cs <= '1';
   else cs <= '0';
   end if;
  end if;
end process;

--4.生产AD操作时钟
process (clk, reset, count) -- A/D clock
variable sint: integer range 0 to 63;
begin
  sint := conv_integer(count);
  if clk'event and clk = '1' then
   if reset = '0' then
    adclock <= '0';
   elsif sint = 24 or sint = 25 or sint = 56 or sint = 57 then
    adclock <= '0';
   else
    adclock <= not scount(0);
   end if;
  end if;
end process;

--5.生成AD操作命令
类似生成时钟的方法,生成 AD操作指令,送到数据输出

--6.读取数据数线电平,作串并转换,并锁存

码代码真累,没有把代码框架写完,供参考。

[ 本帖最后由 kata 于 2010-4-22 11:10 编辑 ]
此帖出自FPGA/CPLD论坛
个人签名电子工程师技术交流QQ群:12425841,专注于自动控制、数字电源等
 
 
 

回复

202

帖子

0

TA的资源

一粒金砂(高级)

11
 

从图上看,你时钟下降沿数据更新

你在时钟上升沿读数据
此帖出自FPGA/CPLD论坛
 
 
 

回复

124

帖子

0

TA的资源

五彩晶圆(初级)

12
 
问题基本解决 谢谢大家 回帖晚了
其实问题好像没我想象的那么复杂 AD内部确实做好了 一切 从简单的时序也可以看出 应该用不着 状态机来控制 只要依据AD输出的主时钟 来读数据就ok了
先说问题 吧 问题是做板子的将我的standby脚 拉高了 所以 才什么都没有 真是晕死
在这儿我把我找的δ-γ 类型的AD 内部 结构资料 附上 以便大家研究 我其实也没怎么看懂 高手可以研习
对了 那个cal 校准的东西 我细看资料 应该是AD内部做好的 对转换精度 和转换位的校准 具体用法 不详 水平有限 谢谢各位

Sigma-Delta ADC 簡介.pdf

444.69 KB, 下载次数: 7

此帖出自FPGA/CPLD论坛
 
 
 

回复

2万

帖子

74

TA的资源

管理员

13
 

回复 12楼 lixinsir 的帖子

呵呵 谢谢分享 :)
此帖出自FPGA/CPLD论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表