完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
|
相关推荐
3个回答
|
|
|
你还是先完成寄存器的正常读写操作,再来调试转化结果
|
|
|
|
|
|
我这有个参考代码,你看看。
#include long a[512]; unsigned int j; unsigned char nop=0xff; unsigned char rdatac=0x14; int test; int main(void) { volatile unsigned int i; WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer P1IES |= BIT0; //P5.1口作为ADC的DRDY接口,下降沿触发中断 P1IE |= BIT0; //P5.1中断使能 P1IFG &= ~BIT0; P6DIR |= BIT7; //P1.1 as start signal P6OUT |= BIT7; test=0; for(i=0;i<512;i++) { a=0; } P4SEL |= BIT4+BIT5+BIT0; // P4.0,4,5 option select UCA1CTL1 |= UCSWRST; // **Put state machine in reset** UCA1CTL0 |= UCMST+UCSYNC+UCMSB; // 3-pin, 8-bit SPI master UCA1CTL1 |= UCSSEL_2; // SMCLK UCA1BR0 = 0; // UCA1BR1 = 0; // UCA1MCTL = 0; // No modulation UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine** j=0; for(i=50000;i>0;i--); // Wait for slave to initialize while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x42; while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x01; while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x60; //MUX1 while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x02; //SYS0 while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x4A; while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x01; while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x04; //IDAC0 while (!(UCA1IFG&UCTXIFG)); UCA1TXBUF = 0x23; //IDAC1 while (!(UCA1IFG&UCTXIFG)); // USCI_A0 TX buffer ready? UCA1TXBUF = rdatac; // Transmit first character for(i=0;i<100;i++); while(1) { if((P1IN & BIT0)==0) { for(i=0;i<3;i++) { while (!(UCA1IFG&UCTXIFG)); // USCI_A0 TX buffer ready? UCA1TXBUF = nop; // Transmit first character while (!(UCA1IFG&UCRXIFG)); a[j] = a[j]*256+UCA1RXBUF; } j++; if(j>511) { j=0; for(i=0;i<100;i++); while(1); for(i=0;i<512;i++) { a=0; } } } } } |
|
|
|
|
|
从您的描述来看,您在使用ADS1247进行数据采集时遇到了一些问题。以下是一些建议和可能的原因:
1. 寄存器值无法读取:这可能是由于通信问题导致的。请检查您的SPI通信线路是否正确连接,以及时钟信号是否稳定。此外,确保您的代码正确地发送了读取寄存器的命令。 2. 采集数据范围不符合预期:您提到希望在0V时采集到的数据为0000000,而在2.5V时采集到的数据为7FFFFF。这可能与您的PGA(可编程增益放大器)设置和寄存器配置有关。以下是一些建议: a. 检查PGA设置:您提到PGA=1,这意味着增益为1。请确保这是您期望的增益值。如果需要调整增益,请参考ADS1247的数据手册,找到合适的PGA设置。 b. 检查寄存器配置:您需要配置ADS1247的寄存器以设置正确的输入范围和分辨率。请参考数据手册中的寄存器配置部分,确保您正确设置了参考电压、增益和数据格式等参数。 c. 校准ADC:您可能需要对ADC进行校准,以确保在0V和2.5V时采集到的数据分别为0000000和7FFFFF。这通常涉及到在已知电压下读取ADC值,并根据这些值调整寄存器配置。 3. 数据采集不稳定:您提到在AIN2输入为0时,低16位数据一直变化。这可能是由于ADC的噪声或不稳定的模拟输入信号导致的。请检查您的模拟信号输入是否稳定,并考虑在ADC输入端添加低通滤波器以减少噪声。 总之,您需要仔细检查您的硬件连接和代码,确保正确配置ADS1247的寄存器,并进行必要的校准。希望这些建议能帮助您解决问题。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1756浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1723浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:09 , Processed in 0.786642 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
307