完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
您好!
1.如何利用RDY引脚触发SPI中断进行数据接收? 2.另外我现在需要采集多路模拟信号,但是在进行通道切换的时候无法正常读取数据,我通过置位接口模式寄存器配置中的AD717X_IFMODE_REG_DATA_STAT位,数据输出为32位,[24..31]位为状态寄存器的值,以此来判断我每次读取的是哪个通道的。寄存器初始化配置如下: ad717x_st_reg ad7172_2_regs[] = { { AD717X_STATUS_REG, 0x00, 1 }, { AD717X_ADCMODE_REG, 0x0000, 2 }, { AD717X_IFMODE_REG, AD717X_IFMODE_REG_DOUT_RESET | AD717X_IFMODE_REG_CRC_EN | AD717X_IFMODE_REG_DATA_STAT, 2 }, { AD717X_REGCHECK_REG, 0x0000, 3}, { AD717X_DATA_REG, 0x0000, 4 }, { AD717X_GPIOCON_REG, 0x0000, 2 }, { AD717X_ID_REG, 0x0000, 2 }, { AD717X_CHMAP0_REG, AD717X_CHMAP_REG_CH_EN | AD717X_CHMAP_REG_AINPOS(0) | AD717X_CHMAP_REG_AINNEG(0x16), 2 }, { AD717X_CHMAP1_REG, AD717X_CHMAP_REG_CH_EN,| AD717X_CHMAP_REG_AINPOS(1) | AD717X_CHMAP_REG_AINNEG(0x16), 2 }, { AD717X_CHMAP2_REG, AD717X_CHMAP_REG_CH_EN | AD717X_CHMAP_REG_AINPOS(2) | AD717X_CHMAP_REG_AINNEG(0x16), 2 }, { AD717X_CHMAP3_REG, AD717X_CHMAP_REG_CH_EN | AD717X_CHMAP_REG_AINPOS(3) | AD717X_CHMAP_REG_AINNEG(0x16), 2 }, { AD717X_SETUPCON0_REG, 0x0000, 2 }, { AD717X_SETUPCON1_REG, 0x0000, 2 }, { AD717X_SETUPCON2_REG, 0x0000, 2 }, { AD717X_SETUPCON3_REG, 0x0000, 2 }, { AD717X_FILTCON0_REG, /*通道0 滤波器设置:*/ AD717X_FILT_CONF_REG_ENHFILT(2) | AD717X_FILT_CONF_REG_ODR(14), 2 }, { AD717X_FILTCON1_REG, AD717X_FILT_CONF_REG_ENHFILT(2), 2 }, { AD717X_FILTCON2_REG, AD717X_FILT_CONF_REG_ENHFILT(2), 2 }, { AD717X_FILTCON3_REG, AD717X_FILT_CONF_REG_ENHFILT(2), 2 }, { AD717X_OFFSET0_REG, 0, 3 }, { AD717X_OFFSET1_REG, 0, 3 }, { AD717X_OFFSET2_REG, 0, 3 }, { AD717X_OFFSET3_REG, 0, 3 }, { AD717X_GAIN0_REG, 0, 3 }, { AD717X_GAIN1_REG, 0, 3 }, { AD717X_GAIN2_REG, 0, 3 }, { AD717X_GAIN3_REG, 0, 3 }, }; 数据读取如下: void Get_AD717X_Data(void) { AD717X_ReadData(&my_ad7172_2,&AD7172_Data); switch((uint8_t)(AD7172_Data>>24)&0x3) { case 0x00: buf[0]= AD7172_Data&(0xffffff);break; case 0x01: buf[1]= AD7172_Data&(0xffffff);break; case 0x02: buf[2]= AD7172_Data&(0xffffff);break; case 0x03: buf[3]= AD7172_Data&(0xffffff);break; default:break; } } |
|
相关推荐
6个回答
|
|
|
DRY在转换完成时有一个低电平信号,此时配置MCU侦测到该信号的下降沿后产生一个中断,中断中启动SPI读取数据。
至于读取通道数据和数据通道切换,都是需要参照手册上的寄存器功能介绍,按照功能说明操作,然后查看修改的寄存器有没有生效即可。 |
|
|
|
|
dsdaiztt 发表于 2019-1-9 17:49 很感谢您的回复。 现在遇到的主要问题就是按照手册设置为多通道后,数据输出就是不对,单通道读取正常;多通道使能后,最高8为输出的状态寄存器值显示的通道并没有进行切换。我想了解下是否有工程师这样做过,是否成功了呢。 |
|
|
|
|
jj568318653 发表于 2019-1-9 18:04 我使用的是AD7124,设置多通道后正常。一般是现把寄存器修改为下一个通道,启动或者等等通道转换完成后读取该通道的数据,在读取的过程中或者读取完成后再进行通道切换。在AD的手册中会有详细的说明,主要是注意一些细节,我此前的使用中也出现一些问题,在手册中基本上可以找到答案。 |
|
|
|
|
jj568318653 发表于 2019-1-9 18:04 设置成多通道后,最低8位是状态寄存器,读取数据的时候,前3个byte数据数据寄存器,最后1个byte状态寄存器,估计是这里弄反了。 友情提示: 你在使用Sigma Delta的多通道功能时,一定要注意建立时间的问题。Sinc5+Sinc1还能好点,Sinc3、Sinc4就可得当心了。 |
|
|
|
|
深圳王先生 发表于 2019-1-9 18:40 谢谢你的提示,这些滤波等功能都需要严格仔细测试的。祝你顺利! |
|
|
|
|
深圳王先生 发表于 2019-1-9 18:40 谢谢。的确搞反了,状态字节在最低位。多通道读取得到的数据,噪声明显大了许多。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
寻求ADF5355类似的微波源,在DC-15GHz内,锁频时间在1ms内
1787 浏览 0 评论
1627 浏览 0 评论
999 浏览 0 评论
1098 浏览 0 评论
ADF5355失锁: 在用ADF5355进行多次扫频时,延时给了500ms还是经常会失锁
1189 浏览 0 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
2843浏览 3评论
2086浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
2119浏览 2评论
1173浏览 2评论
使用ADI官方提供的no-OS來接收GPS L1(1575.42MHz)的資料
1405浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:11 , Processed in 0.956189 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
557