主题中讨论的其他部件: DAC8560
你(们)好
我将ADS1247连接到atxmega128a1u,但当我通过示波器检查时钟信号时,不会显示任何内容。 我很确定我的SPI配置没有任何问题,因为我通过RFID模块使用4MHz时钟信号检查了它,一切都正常。 此外,示波器上的其他信号(如/CS和DOUT)看起来正常,但时钟信号在重置后只有一个脉冲,然后变为低电平。
如果你能帮我的话,我真的很感激。
此致。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你(们)好
我将ADS1247连接到atxmega128a1u,但当我通过示波器检查时钟信号时,不会显示任何内容。 我很确定我的SPI配置没有任何问题,因为我通过RFID模块使用4MHz时钟信号检查了它,一切都正常。 此外,示波器上的其他信号(如/CS和DOUT)看起来正常,但时钟信号在重置后只有一个脉冲,然后变为低电平。
如果你能帮我的话,我真的很感激。
此致。
您好,Joseph,感谢您的及时回复。
我要说的是SPI时钟信号。 当我检查时钟和/DRDY信号时,不会显示任何内容,但是DOUT/DRDY信号在示波器上有脉冲,看起来正常。 我的实际问题是,当我将时钟信号连接到我的微电脑时,为什么看不到它的脉冲信号? 换言之,我应该可以看到示波器上的时钟信号脉冲,而当我在该端口上使用其他模块(如RFID)时,我可以看到时钟信号脉冲。 我想说ADC上的时钟引脚损坏了,但它最初有一个脉冲。
您好,Joseph:
很抱歉我的回复延迟,我很忙,感谢您的耐心等待。
你的说法是对的,我的解决办法不准确,实际上,一切都很好,在检测到我的问题后,我发现我无法从我的注册表中得到答案的原因是NOP指令。
我的意思是,在这个代码之后:
SPI_Transmit (0x40);
SPI_Transmit (0x03);
SPI_Transmit (0x01);
SPI_Transmit (0x00);
SPI_Transmit (0x03);
SPI_Transmit (0x42);
我想阅读我的注册:
SPI_Transmit (0x20);
SPI_Transmit (0x03);
但当我将"SPI_Transmit(0xFF);"放在"SPI_receive();"之前时,我得到了0x0万,但当我删除"SPI_Transmit(0xFF):"时,一切都很好。 现在,我可以准确地读取我的寄存器。
现在 ,我的ADC读数也有同样的问题。 当我输入"SPI_Transmit(0xFF):"时,我得到了0x0万,但当我删除它时,我得到了0x7FFFFFFF。 请帮帮我。 我无法从我的ADC中读取数据。
此致。
MIL,
我很高兴您能够阅读这些注册表。
对于7FFFFFh的数据,您可能收到了正确的数据,但在设置中出现了错误或意外情况。 请注意,7FFFFFh是正满刻度的输出。 ADC可能正在测量的是满量程或过量程的输入。
有几种情况可能会导致此读取:
1.输入是浮动的。 这可能会拉开ADC输入以获得非常大的读数
2.基准短路。 如果参考设置为0,则任何输入或偶数偏移都将被视为超范围输入。
3.增益校准寄存器(FSR)设置不正确。 如果FSR设置不正确,您可能会比预期更快地超出输入范围。 如果偏移寄存器(OCR)设置也不正确,我确信您可以执行相同的操作。
4. PGA设置为比预期更大的增益。 如果增益设置过高,则小输入可能会给出一个范围过大的值。
我会验证所有寄存器设置,以确保您进行了正确的测量。 尤其要检查输入多路复用器设置和PGA增益。 然后,我将使用万用表测量输入电压和参考值,以使电压符合您的预期。 如果仍有问题,请重新发布寄存器设置和电压,以便我们可以查看它们。
吴若瑟
您好,
感谢您的详尽回答!
对于您的最后一个问题,我应该说我无法获得任何正确的读数,我只获得7F FFFFh。
对于您的第二个问题,我现在不设置任何校准设置。
你的第一个问题:我将第三个字节设置为0x00 (我知道这不正确)的原因是,当我将它设置为0x01时,我得到了7F FFFFh。 实际上,我想,因为我只有AIN0,所以没有必要设置AIN1。
第三个问题是,我使用RDATA模式进行读取,当然,在RDATA命令之前,我发出SDATAC命令,就像数据表中的伪代码建议的那样。 此外,我不在代码中使用任何中断,但代码中的主要问题是等待DRDY引脚转至低转位不能正常工作,因为当我在范围上检查它时,DRDY大约每15秒转至低转位,但转换操作重复。 换言之,我希望下面的行每15秒运行一次,但它不会。
当(gPIO_PIN_is_HIGH (DRDY_Pin));//DRDY引脚处于活动低电平时
已附上我的代码 以阻止任何confusion.e2e.ti.com/.../ADS1247.c
此致,
米拉德
您好,Joseph:
感谢您的所有帮助! 这就是我无法进行测量的原因。
现在我可以通过DAC获得分辨率为1mV的测量值,但OFC寄存器未设置,我只使用SELFOCAL命令,延迟3500ms。 我得到了20个大致的输出,比如0x7Fxxxxh,然后转到0mV,1mV,...,127mV和128mV,这是全刻度范围(GPGA =16)。 我的问题是如何删除第一个输出?
此致,
米拉德
您好,Joseph:
我附上了ADC的输出文件,其中显示了原始数据。
我添加到代码中的唯一命令是Daley为3500毫秒的SELFOCAL命令。 另外,OFC寄存器为0。
很抱歉混淆了!e2e.ti.com/.../raw-data.txt
此致,
米拉德
您好,Joseph:
实际上,我的代码有问题,我发现了它。 之后,为了确保自己,我将ADC设置为环境温度,并从其中获得119mV。 现在,我用DAC到PGA=16,SPS=5来测量它,并设置偏移寄存器,我应该得到0-128mV,但在一些测量结果如5之后,它变为0,1,...,126mV。 我的意思是,有些数据被遗漏了。 是否可以,或者我应该对此做些什么?
此致,
米拉德
您好,Joseph:
此附件文件通过DAC (0-1024mV)显示PGA=2和SPS=160的原始数据。
我有这么多的测量结果几秒钟后一切都很好,所以我认为它很好,不是吗?
e2e.ti.com/.../3426.raw-data.txt
此致,
米拉德
米拉德
我认为它看起来不错。 如果你只是用DAC增加信号,那么你似乎是从接近0到满量程:
如果您仍然关注测量值,则应设置恒定输入电压,然后使用精密万用表进行测量。 如果您进行数次从0到满刻度的测量,您可以从ADC中看到增益和非线性错误。 您可以使用类似Agilent 3458A的设备,对于万用表范围(作为标准),非线性误差可能为0.1ppm。 手持式万用表可能不足以进行精确测量。
此时,您似乎正在进行正确的测量。 现在我将关闭此帖子。 如有疑问,您可以一如既往地发布更多问题。
吴若瑟