Here's a few problems I've found with Atmel Start's synchronous master driver.
1. There are hard-coded timeouts (decrement and loop 65536 times) which are too short for my application. With a SAMD51 running at 120Mhz with cache enabled, these timeouts trip even though the bus is fully functional.
2. The driver isn't actually synchronous. If you do not check that the bus is actually idle before communicating, and the SERCOM peripheral is still pushing bits from your last operation, it will fail with an I2C_BUS_ERR triggered by an ARBLOST error. This is a single-master I2C bus.