1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我已经使用Mplab代码配置器v3来使I2C工作以将数据发送到我正在与之连接的从站,但我无法获得从站接收数据的重新启动条件。在我的理解中,主机必须写入正确的位置,发送重启条件,并从从属设备读取。这是我尝试过的,但是我得到了一个停止函数,在这两个函数之间开始。这里有什么我不了解的吗?
|
|
相关推荐
7个回答
|
|
如果您不是在多主机环境中,停止后跟启动在功能上等同于重新启动。I2CJMistRead()函数是否为您设置从地址中的读取位?
|
|
|
|
我只有一个主人和一个奴隶如果我理解正确,我不应该担心停止和开始之间的条件?是的,I2C.MistRead处理设置读BITI有一个信号的图片。
|
|
|
|
这是正确的。别担心,那个信号看起来不错。读地址设置为0位,从地址ACKed,从地址响应一个值。唯一有趣的是,您的代码设置了一个要发送的两个字节的数据数组,但是您只告诉它发送第一个字节。
|
|
|
|
YaTybyTes用于测试其他函数,只是为了测试读取过程而没有改变它。谢谢你的帮助。
|
|
|
|
典型地:[开始] [地址W/Wrd] [命令] [重新启动] [地址W/Read ] [读,ACK] [读,ACK]…[读,NACK] [停止]
|
|
|
|
嗨,是的,我使用了MCC生成的I2C驱动程序,R/W位由API函数I2C_MasterWrite(...)和I2C_MasterRead(...)处理,请注意,这两个函数的SlaveAddress参数都是严格的7位地址,pos<0>;中没有R/W位,这使得地址的有效范围变大。es是0到127,或者更严格地说是8到119,考虑到保留的地址。(除非生成的代码已经更改。)在每个函数返回之后,MSG_STATUS的内容是什么?MCC生成的代码可能是具有任务队列的中断驱动程序,这取决于生成代码时在MCC中选择什么设置。I2C是慢速协议,因此在快速循环中调用这些函数将很快将队列填充到最大。y I2C_MasterRead(),您应该测试变量MSG_STATUS中放置的值,并等待(MSG_STATUS==I2C_MESSAGE_COMPLETE)。此外,我认为API中存在一个弱点,如果您在之前调用相同的I2C_MasterWrite()函数,则有可能覆盖传输请求包。在MCC生成的驱动程序中,中断传输机器旨在使组合/链接I2C操作成为可能,比如Start-Write-Restart-Read-Stop,但是在我看来,使用这个API有点尴尬。正如瑞克所解释的那样,通常不是Mysil。
|
|
|
|
嗨,我面临的问题,同时使用重复启动条件。只有地址和数据正在写入,它只停留在该序列中。这是我阅读数据的代码。我还把CixEdi2C1xCopyTrxQueLeEL长度改为2。
|
|
|
|
只有小组成员才能发言,加入小组>>
5242 浏览 9 评论
2031 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3207 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2256 浏览 5 评论
778浏览 1评论
666浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
595浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
677浏览 0评论
576浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 13:44 , Processed in 1.443186 second(s), Total 87, Slave 71 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号