As mentioned in the note of my first post:
The simple examples in the SDK (such as lpcxpresso55s36_i3c_polling_b2b_transfer_master) use a Single message format, which means:
Write: Slave Address (RnW = 0) → Data
Read: Slave Address (RnW = 1) → Data
However, almost all sensors in the industry (for example, lpcxpresso55s36_i3c_master_read_sensor_icm42688p) use a Combined format, which means:
Write: Slave Address (RnW = 0) → Register Address → Data
Read: Slave Address (RnW = 0) → Register Address → repeated START → Slave Address (RnW = 1) → Data
This explains why your Single message example can reach up to 2.0 Mbps, while my Combined format example can only achieve a maximum of 1.25 Mbps.
In lpcxpresso55s36_i3c_polling_b2b_transfer_master, if you modify masterXfer to use the Combined format by adding the following code, it will switch to the Combined format. Then you will observe that the maximum achievable speed drops to 1.25 Mbps. Please refer to the attachment in this reply.
masterXfer.subaddress = 0x34;
masterXfer.subaddressSize = 1;
Additionally, the most important point is that the I3C specification defines the baud rate to support up to 12.5 Mbps. Both Single message (Max = 2.0 Mbps) and Combined format (Max = 1.25 Mbps) are far below this limit. This is why I would like to know if there is any way to improve the Slave’s capability to accept higher baud rates.