完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
参考手册上的原话是“如果在上一次数据传输结束之前TxE位已置1,但数据字节尚未写入DR寄存器,则BTF位会置1,而接口会一直延长SCL低电平,等待I2C_DR寄存器被写入,以将BTF清零。”
我结合着ST的HAL库,对主发送器发送数据的时候,BTF何时置1有两种理解:1、当数据在发送的时候,即移位寄存器中有值,但DR为空,BTF会马上被置1,当数据发送完毕,这时才会延长SCL为低电平。2、当数据在发送的时候,DR为空,但BTF不会马上置1,当数据发送完毕,BTF置1,同时延长SCL为低电平。 不知道我的理解哪里有问题? |
|
相关推荐
1个回答
|
|
在I2C通信中,BTF(Bus Transfer Finished)位用于指示一次数据传输是否完成。根据您的描述,我们可以分析两种情况:
1. 当数据在发送时,移位寄存器中有值,但DR(Data Register)为空,BTF会马上被置1。这种情况下,BTF位的置1表示数据传输尚未完成,但已经开始。此时,SCL不会被延长为低电平,因为数据仍在发送过程中。 2. 当数据发送完毕,BTF置1,同时延长SCL为低电平。这种情况下,BTF位的置1表示数据传输已经完成。此时,SCL会被延长为低电平,以便在下一次数据传输之前给从设备足够的时间来准备数据。 根据您的描述,这两种理解都是正确的。BTF位在数据传输过程中的不同阶段会有不同的表现。在数据发送时,BTF位可能会置1,表示传输已经开始但尚未完成。而在数据发送完毕后,BTF位置1并延长SCL为低电平,表示传输已经完成。 在实际应用中,您需要根据具体的通信协议和时序要求来判断BTF位何时置1以及如何控制SCL信号。通常,您可以通过监控BTF位的状态来判断数据传输是否完成,并据此调整SCL信号。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
863 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
639 浏览 1 评论
407 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
317 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
724 浏览 2 评论
1466浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
139浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
175浏览 3评论
161浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
156浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-6-25 14:34 , Processed in 1.006054 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号