<?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[Troubles with serial connection between Core2 and AtomMatrix]]></title><description><![CDATA[<p dir="auto">Wow, this should have been simple but apparently I am overseeing something.<br />
I have a M5Stack Core 2 connected to M5AtomMatrix using the Port A on Core 2 and HY2.0-4P port on the Matrix. Included the code of sender and receiver. But I dont see any transmission going on. Which obvious mistake am I making here?<br />
M5Stack Core 2 code :</p>
<p dir="auto">#include &lt;M5Core2.h&gt;<br />
#include &lt;Wire.h&gt;<br />
#define I2C_DEV_ADDR 0x55<br />
uint32_t i = 0;</p>
<p dir="auto">void setup() {</p>
<pre><code>M5.begin(true, true, true, true);
delay(300);

Serial.setDebugOutput(true);
Wire.begin(32,33);  // SDA SCL M5Stack Core 2
</code></pre>
<p dir="auto">}</p>
<p dir="auto">void loop() {<br />
delay(5000);</p>
<p dir="auto">//Write message to the slave<br />
Wire.beginTransmission(I2C_DEV_ADDR);<br />
Wire.printf("Hello World! %u", i++);<br />
uint8_t error = Wire.endTransmission(true);<br />
Serial.printf("endTransmission: %u\n", error);</p>
<p dir="auto">//Read 16 bytes from the slave<br />
error = Wire.requestFrom(I2C_DEV_ADDR, 16);<br />
Serial.printf("requestFrom: %u\n", error);<br />
if(error){<br />
uint8_t temp[error];<br />
Wire.readBytes(temp, error);<br />
log_print_buf(temp, error);<br />
}</p>
<p dir="auto">}</p>
<p dir="auto">M5Atom Matrix code here:</p>
<p dir="auto">//#include "M5Atom.h"<br />
#include "M5StickC.h"<br />
#include &lt;Wire.h&gt;<br />
#define I2C_DEV_ADDR 0x55</p>
<p dir="auto">uint32_t i = 0;</p>
<p dir="auto">void onRequest(){<br />
Wire.print(i++);<br />
Wire.print(" Packets.");<br />
Serial.println("onRequest");<br />
}</p>
<p dir="auto">void onReceive(int len){<br />
Serial.printf("onReceive[%d]: ", len);<br />
while(Wire.available()){<br />
Serial.write(Wire.read());<br />
}<br />
Serial.println();<br />
}</p>
<p dir="auto">void setup() {</p>
<pre><code>M5.begin(true,true,true);
delay(300);
</code></pre>
<p dir="auto">Serial.begin(115200);<br />
Serial.setDebugOutput(true);<br />
Wire.onReceive(onReceive);<br />
Wire.onRequest(onRequest);<br />
Wire.begin(26,32); // SDA SCL M5Atom</p>
<p dir="auto">}</p>
<p dir="auto">void loop() {</p>
<p dir="auto">}</p>
]]></description><link>https://community.m5stack.com/topic/4596/troubles-with-serial-connection-between-core2-and-atommatrix</link><generator>RSS for Node</generator><lastBuildDate>Sun, 08 Mar 2026 04:38:23 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/4596.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Sep 2022 13:37:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Troubles with serial connection between Core2 and AtomMatrix on Thu, 08 Sep 2022 21:15:49 GMT]]></title><description><![CDATA[<p dir="auto">Hello <a class="mention plugin-mentions-user plugin-mentions-a" href="https://community.m5stack.com/uid/7741">@HappyUser</a></p>
<p dir="auto">you are so close. Right now you are setting up both devices as I2C masters. However M5Atom needs to be an I2C slave. To do this the first parameter of <code>Wire.begin()</code> needs to be the slave address. Try this:</p>
<pre><code>Wire.begin((uint8_t)I2C_DEV_ADDR, 26, 32);
</code></pre>
<p dir="auto">Thanks<br />
Felix</p>
]]></description><link>https://community.m5stack.com/post/18573</link><guid isPermaLink="true">https://community.m5stack.com/post/18573</guid><dc:creator><![CDATA[felmue]]></dc:creator><pubDate>Thu, 08 Sep 2022 21:15:49 GMT</pubDate></item></channel></rss>