<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[HA0 I2C NACK电平无法恢复]]></title><description><![CDATA[<h1><strong>背景</strong></h1>
<p dir="auto">软件版本：HA0 MCAL 2_3_0<br />
硬件：YTM32B1HA01 EVB</p>
<h1><strong>问题描述</strong></h1>
<p dir="auto">I2C master I2C_STANDARD_MODE模式通信，如果主机未收到应答信号，SCL会持续保持低电平状态，直到下次开始通信。</p>
<h1><strong>问题原因</strong></h1>
<p dir="auto">在从机返回NACK时，驱动中会调用I2C_Lld_MasterEndTransfer复位TX和RX FIFO，若通信速率较低，那么可能会出现硬件还没完成收尾动作软件便清FIFO结束传输的情况。</p>
<h1><strong>解决方案</strong></h1>
<p dir="auto">I2C_Lld_MasterNACKDetEventHdl函数中在调用I2C_Lld_MasterEndTransfer清除FIFO之前预留超时时间，如下图：<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/1298/db3eaed8-e5a4-448d-8be7-5aeffb9e78de.png" alt="7b336797-86f8-4894-bb2d-2923a6e5b7f1-image.png" class=" img-fluid img-markdown" /><br />
[CddI2c_Master_Slave_Demo_YTM32B1HA0.7z](无效文件格式，允许的格式有：.png, .jpg, .bmp, .txt, .webp, .webm, .mp4, .gif, .hex, .bin, .s19, .elf, .zip, .patch, .pdf, .yct, .jpeg) <a href="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/1298/90b19ce4-79a7-437f-ab8d-3969c0321a13.zip" rel="nofollow ugc">CddI2c_Master_Slave_Demo_YTM32B1HA0 (2).zip</a></p>
]]></description><link>https://forum.ytmicro.com/topic/2325/ha0-i2c-nack电平无法恢复</link><generator>RSS for Node</generator><lastBuildDate>Mon, 26 Oct 2026 09:23:47 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2325.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Oct 2026 07:16:10 GMT</pubDate><ttl>60</ttl></channel></rss>