完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我之前在8位微论坛http://www.micro..com/for./m943113.aspx上发表过一篇文章,我发现需要使用PIC16LF18325通过I2C与两个传感器(Si7006,MMA8452q)进行通信,其中要求在完成masterWrite和MasterRead时,必须有一点inbet不能停止。MCC生成的I2C代码的默认值似乎有停止位,有没有一种干净/简单的方法来实现它,所以有时我不发送停止位,有时我会?另一个传感器(LPS22HB)需要停止位。谢谢。
|
|
相关推荐
4个回答
|
|
该代码用于替换该线程中的OP在第一条消息中张贴的代码。不是调用I2C1_MasterWrite然后调用I2C1_MasterRead,而是使用I2C1_MasterReadTRBBuild和I2C1_MasterWriteTRBBuild构建读写TRB,然后用I2C1_MasterTRBInsert将它们添加到队列中。在写入完成之前,读取被添加到队列中,驱动程序发出重新启动而不是停止-启动序列。您必须确保I2C1_CON._TR_QUEUE_LENGTH大于1。我不记得它在哪个标题,只是搜索它。
|
|
|
|
你好,西蒙,谢谢你这么快地回复我,这是我使用的函数,利用你的代码,我得到了奇怪的结果:void whoAmI(void){uint8_tread.[2];uint8_t writeBuffer[2];uint8_t status=0;静态I2C2_TRANSAC._REQUEST_BLOCK trBlockW;静态I2C2_TRANSAC._REQUCK_REQUEST块trBlockR;I2C2_MESSAGE_STATUS标志;写缓冲器[0]=MMA_谁_am_i_MMA_0]=MMA_MMA_m_MMA_i;I2C2_MasterC2_MasterW主写TRBBBBBBBBuild(&trBlo块W,写入缓冲器,1,MMA_Address,读缓冲器,1,1,MMA_Address,读缓冲器,1,MMA_Address;写缓冲器[0]=MMA_写入缓冲器[0]=MMA_MMA_MMA_MMA_MMA_WMMA_am_am_am_am_am_am_am_am_am_am_am_am_am_am_am_到目前为止,您觉得这样做正确吗?它肯定是发送正确的地址,得到ACK,然后发送0x0D(MMAYHOWYAMAMI),然后什么都没有回来。它与MC3I2C V3.15有什么关系吗?编辑:还有,如果我执行I2C2_MasterWriteTRBBuild(&TRBlockW,writeBuffer,2,MMA_Address)[即使缓冲区中只有一个项],我看到它在发送0x0D(MMA_who_am_i)之后,它发送(或接收)0xB9,我无法解释。
|
|
|
|
您没有插入读取TRB。顺序是:-Build TRB。插入写入TRB(检查错误)插入读取TRB(检查错误)等待读取完成(同时((I2C_Rflag!= I2C1YMasaGeLead)和(和(NoSt==0));在我的原始代码中)读取结果
|
|
|
|
只是想弄清楚如何用V3.15MCC生成代码来实现它,它们没有R国旗等。我对此很陌生
|
|
|
|
只有小组成员才能发言,加入小组>>
5244 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3214 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2261 浏览 5 评论
779浏览 1评论
675浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
601浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
683浏览 0评论
580浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 23:21 , Processed in 1.349230 second(s), Total 84, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号