<?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[I2C 主机最大接收长度限制说明]]></title><description><![CDATA[<h1>1. 问题背景</h1>
<ol>
<li>软件：MD24 SDK 1_4_0_HF001 I2c_Master_Demo</li>
<li>硬件：MD24 EVB</li>
<li>背景描述：</li>
</ol>
<ul>
<li>客户反馈 MD24 I2C1 Master 接收超过 256 Byte 数据后出现接收异常的情况</li>
<li>实际测试最大只能接收 256 Byte，如果设置 rxSize 是 259 Byte，理论上 i2c master SCL 应该发送 259 Byte 的时钟波形，但实际只发送 3 byte 就结束了，259 Byte - 256 Byte = 3 Byte</li>
<li>I2C_DRV_MasterReceiveData 断言判断对 rxSize 要求不大于 256 Byte</li>
</ul>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/710/3b2a0db9-e7fb-4284-ae25-4f104a673f3e.png" alt="2e2776f2-6a05-4e37-b8d2-cd7ae47f2306-image.png" class=" img-fluid img-markdown" /></p>
<h1>2. 原因分析</h1>
<ol>
<li>关于 I2C Master、Slave 一次性可以收发多少 Data 取决于 MDATA、SDATA 和 Functional Description。</li>
</ol>
<p dir="auto"><img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/710/6883b5c7-0607-4520-bc26-2fd2c3e475ff.png" alt="be539550-ff81-4792-a710-ac955704274d-image.png" class=" img-fluid img-markdown" /><br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/710/77fc5193-112f-4587-bd79-bb318b969d41.png" alt="83821aca-9259-4c00-99f0-4fee7afbf05b-image.png" class=" img-fluid img-markdown" /></p>
<ol start="2">
<li>I2C Master Receive 的命令需要告知接收数据长度，即 I2C_DRV_MasterReceiveData API 的第三个参数 rxSize</li>
<li>Receive(DATA + 1) 对应的就是 MDATA 寄存器的 RXDATA 位（7bit，最大值为 255），所以 I2C Master Receive 最大一次只能接收 256 Byte。</li>
</ol>
<h1>3. 结论</h1>
<ol>
<li>I2C 的操作命令只有对 Master Receive 的命令需要提前传入 MDATA.RXDATA</li>
<li>Master Transfer、Slave Receive 和 Slave Transfer 都对 MDATA.TXDATA、SDATA.TXDATA 和 SDATA.RXDATA 无要求</li>
<li>综上所述，<strong>I2C Master Receive 一次性最大接收长度为 256 Byte</strong>。属于 IP 硬件限制，若需要 I2C Master Receive 超过 256 Byte，可以使用 GPIO 软解模拟 I2C 实现。</li>
</ol>
<pre><code>/* rxSize 的值，最大不能超过 256 */
I2C_DRV_MasterReceiveData(INST_I2C, rxBuff, rxSize, true);
</code></pre>
]]></description><link>https://forum.ytmicro.com/topic/2134/i2c-主机最大接收长度限制说明</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 21:05:15 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2134.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Jul 2026 07:40:40 GMT</pubDate><ttl>60</ttl></channel></rss>