完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
|
相关推荐
2个回答
|
|
|
|
|
|
|
|
首先,我们需要了解ADS8345的工作原理和特性。ADS8345是一款16位逐次逼近型模数转换器(ADC),具有4个差分输入通道和8个单端输入通道。在单端输入模式下,其输出结果的最大值是32767,而不是65535。这是因为ADS8345的输出是16位的,而16位的最大值是2^16-1=65535。但是,由于ADS8345的输入范围是±Vref,所以当输入电压为0V时,输出值应该是0,而当输入电压为Vref时,输出值应该是32767。因此,最大值是32767,而不是65535。
关于您提到的两个问题: ① 输入0V时,输出第二位一直是高电平(0x40):这是因为在单端输入模式下,ADS8345的输出值是以补码形式表示的。当输入电压为0V时,输出值应该是0,但是在补码表示中,0的二进制表示是全0,即0x0000。然而,由于SPI通信协议的原因,我们接收到的数据是以字节为单位的,所以第一个字节(8位)是0x40,表示补码中的负数。实际上,这个值对应的十进制数是-16384,但是由于输入电压为0V,所以这个值是无效的。 ② 输入电压小于参考电压时,输出值一直是高位:这是因为在单端输入模式下,ADS8345的输出值是以补码形式表示的。当输入电压小于参考电压时,输出值应该是负数。在补码表示中,负数的二进制表示是高位的。因此,当输入电压小于参考电压时,输出值的高位会一直保持为1。 关于您提供的代码片段,我注意到您使用了SPI_WriteByte函数来发送数据,并使用了ADC_DCS函数来触发ADC转换。您的代码片段中,x1、x2和x3分别表示接收到的三个字节的数据。然后,您将这些数据组合起来,得到最终的ADC值。这个代码片段看起来是正确的,但是您需要确保您的SPI通信设置正确,并且您的硬件连接也正确。 总之,ADS8345的输出值是以补码形式表示的,所以在单端输入模式下,最大值是32767,而不是65535。您提到的两个问题都是由于补码表示和SPI通信协议的原因导致的。希望这些解释能帮助您理解ADS8345的工作原理和特性。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1757浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:13 , Processed in 0.740462 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3067