完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好,我正在尝试与LTC2442电池燃料表通信。但不能读取价值。在试图用示波器进行故障检修时,SCL在停止位之后直到下一个启动位将变低。我不明白问题是什么,请任何人帮助我。
|
|
相关推荐
16个回答
|
|
|
你是在从主人到奴隶的最后一次传输后读取ACK/NAK吗?可能是SCL被从机取下以传输一个ACK,但是您没有对它进行计时。您应该为这种问题共享代码。P.S不要复制线程。
|
|
|
|
|
|
这不仅仅是I2C,你想读的是什么价值?是TelTC2442配置的吗?芯片对地址有响应吗?你有范围捕获吗?
|
|
|
|
|
|
不是,SCL只由大师计时。有些奴隶可以把SCL保持在低位(=“时钟伸展”),但只有在大师已经把SCL调低之后。我的钱被大师代码中的一个bug占用了。
|
|
|
|
|
|
SMBus是将保持时钟低的一种精确的奴隶。但是它应该在40ms内释放它。告诉谁把时钟保持低是把一个100欧姆电阻与地连成一体。该范围将显示一个较低的接地电压。小心一步,奴隶可以很快地超时。
|
|
|
|
|
|
你是在从主人到奴隶的最后一次传输后读取ACK/NAK吗?可能是SCL被从机拿下来传输一个ACK,但是你没有计时。你应该为这种问题共享代码。P.S不要重复线程。
|
|
|
|
|
|
嗨,谢谢你的回复。现在SCL正在回到很高的水平。但是我不能从奴隶那里读到任何价值。请找到我的射程。
|
|
|
|
|
|
问题?这真的是1 / div吗?因为SMBDAT/SDA是1.4VPK-PK。I2C输入高类似于0.7VDD,这意味着你在运行VDD=2V?还是在那里?低于LTC2442所需的VDD?什么是你的仰卧起坐,Vdd是什么?其他事情:提示:使用[代码]…一些代码在这里…[/COD](减去空格)来格式化代码。这是一个更容易阅读的地狱。你也可以放大范围到第一个“ACK/NAK”位和时钟拉伸。我发现很难说出发生了什么,因为时钟边缘之间的空间很小。还有,包括你的时间刻度和电压刻度。在SMBus中,从机可以通过以下两种方式发出NAK信号:不拉动(SDA)SMBDAT在第9位上,将ACK/NAK位之后的时钟延长到最低。启动BIT2。地址字节(1100100)3。ACK/NACK位(ACK为低)4。时钟拉伸?5。重新发送地址字节如果我没记错的话,在NAK(高SMBDATor时钟延伸到第9位)之后,您应该发送一个停止位,它是一个低SMDDATand SMBClk,SMBClk上升到Vdd,然后SMBDAT上升到Vdd。i2c模块可能无法检测到这个[扩展时钟NAK]。我会重新构造代码,很难读出发生了什么。您应该具有5个关键函数:void i2c_init(void);-初始化i2c模块化i2c_start(void);-start位生成起始位。uint8_t i2c_send(uint8_t dataToSend);-send'dataToSend',返回0,如果NAK表示为void i2c_end(void);-stop bit uint8_t i2c_read()。-返回读字节,你可以做这样的事情:更容易阅读,更容易对模块进行单元测试。重试和超时很容易实现。没有证据证明,祝你好运,马修&编辑;
|
|
|
|
|
|
谢谢你的建议。我改变了你提到的代码。我的电源电压是3.3V,4.7K上拉电阻。并找到相应的波形:AckStop:
|
|
|
|
|
|
代码看起来更容易阅读,它看起来很好,而且它似乎在传输中产生“某种”正确的波形。SCL在传输之前和之后仍然很低,在程序开始时,它是坏的Maykay.做I2CyIn()。不要认为你应该不止一次地调用它。请确保您没有禁用I2C模块,因为您将恢复到数字IO功能。SCL频率为100kHz,应该可以。全VDD(3.3V)在SCL和SDA上均达到峰值电压,这是很好的。下拉机是很有价值的。但是还是有些东西打乱了你的时钟。暗中乱戳:如果你只有I2C上的两个设备,那我就检查一下你有SCL和SDA到SCL和SDA的电线。你可以将它们交叉连接(碰巧是我们当中最好的)。显然LTC2942的SMBus实际上不能进行时钟扩展,因为SCL/SMBCLK只被输入,所以时钟扩展的理论不适用。如果唯一的奴隶不能把SCL拉下来,它必须是微控制器。检查一下,然后回到我们这里。但是如果你(BF)在工作,不要改变它。
|
|
|
|
|
|
感谢您的回复,现在更改了i2cIn();我相信我并没有禁用I2C。请找到我的主要功能。我也重新检查了我的连接。
|
|
|
|
|
|
MatthewM让你走上正确的轨道,但你的代码仍然需要一些调整。首先,我建议轮询SSPIF标志,而不是轮询控制位。我试过你的代码,它和你一样被卡住了。我改变了所有的投票,使用SSPIF,现在它工作。我还做了一些其他的调整(比如恢复您在原始帖子中的重试),我在下面用WAS和IS注释进行了注释。如果你仍然有阅读困难,那么请张贴显示你正在做的代码。
|
|
|
|
|
|
非常感谢你的帮助。现在写的部分工作完美,我试图读取设备的电压值,我得到一些错误。这是我的代码。
|
|
|
|
|
|
LTC2942数据表表示在发出单电压转换命令和读取结果之间需要等待10ms。我认为如果你在命令和重新启动指令之间放置10毫秒的延迟,那么它将工作。[Ed]将代码格式化。
|
|
|
|
|
|
我认为如果你在命令和重新启动指令之间加上10毫秒的延迟,那么它会起作用。谢谢WB,它对我来说是有效的!
|
|
|
|
|
|
谢谢你,问题解决了!
|
|
|
|
|
|
很高兴听到!
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475 浏览 0 评论
5794 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1098浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:16 , Processed in 1.332537 second(s), Total 72, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1261