Just a little gotcha, I've been using the Core2 with IoT Base CatM for UART (Port C) to connect to micro:bit (Keyestudio Ks0360 rather than M5:bit).
Core2 (vs original Core) on IoT Base CatM config appears to be that pins 13/14 are used for UART (vs 17/18) hence:
Groove cable (M5Stack spec) W|Y|R|B = 13(R)|14(T)|VCC|GND
Connected to micro:bit W|Y|R|B = 15(T)|16(R)|VCC|GND
NB I am using Keyestudio shield/carrier board to match power to 5V and control to 3V3. Minor mods to the code above with a little pause for effect and it's working to flash LEDs [0, 0], [2, 2] and [4, 4] and send back text strings from buttons A and B to label.