完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
|
相关推荐
2个回答
|
|
|
从数据手册看, 串行数据的输出是在上升沿后的。而你的程序是在下降沿后读取,所以就会少了一位。
|
|
|
|
|
|
ADC122S706是一个12位的模数转换器(ADC),其输出数据范围为0到4095(即2^12-1)。然而,您提到的情况是数据相当于11位ADC的采样结果,最大值为2047(即2^11-1)。这可能是因为您的程序或硬件配置中存在一些问题。
首先,让我们分析一下您提供的程序代码。您的代码主要负责从ADC122S706读取数据,并将数据存储在temp1和temp2变量中。以下是代码的一些关键部分: 1. 定义了一些宏,用于控制P1端口的高低电平。 2. AD_RX函数负责从ADC122S706读取数据。 然而,您的代码中存在一些错误和不完整的部分,这可能导致数据读取不正确。以下是一些建议和修正: 1. 确保您的硬件连接正确,特别是ADC122S706的数据线和控制线。 2. 检查您的代码中的宏定义,确保它们正确地控制P1端口的高低电平。 3. 在AD_RX函数中,您需要确保正确地读取ADC122S706的数据。您可以尝试使用一个循环来读取12位数据,而不是只读取11位数据。 以下是修正后的代码示例: ```c #define lowall P1OUT &= (~(BIT1 | BIT0)); #define highall P1OUT = ~P1OUT; #define LOW P1OUT &= ~BIT1; #define HIGH P1OUT |= BIT1; unsigned int AD_RX() { unsigned int temp = 0; unsigned char i; lowall; for (i = 0; i < 12; i++) { LOW; if ((P1IN & BIT2) == 0) { temp <<= 1; temp |= 1; } else { temp <<= 1; } if ((P1IN & BIT3) == 0) { temp <<= 1; temp |= 1; } else { temp <<= 1; } } return temp; } ``` 请注意,这个示例代码仅供参考,您可能需要根据您的硬件和需求进行调整。希望这些建议能帮助您解决问题。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
550 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1514 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1338 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1759浏览 29评论
2786浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1726浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1636浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1647浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 22:20 , Processed in 0.667214 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3101