So I was doing some work with the SAML21 part and setting up the I2C in master mode. Since I have done this on the SAMD20, SAMD51, and SAMD21 I figured it would be a trival task. However being burned by the SAMD51 and the SERCOM going through major changes from the SAMD21 I figured I better read the datasheet.
So I notice most everything is the same to start talking to slave from idle you need to write the address to the address register.
OK we better check the register maps and make sure they have not changed...
What the ..... There is only three address bits? How in the heck can you use the peripheral with the typical 7 or 10 bit addressing when their is only 3 address bits?
At this point if you have used Microchip (Atmel) parts you know the dataheets only exist to confuse you more, it is a game their engineers play. See the Microchip engineers have invested all their retirement into TI, STM, etc. So the worse they write the datasheets the worse Microchip does until they drive Microchip customers to other vendors. Therefore they like to put bugs in the datasheet that management does not catch to increase their portfolios.
So you know you can not believe the datasheets, they are more suggestions than data... Therefore you have to look at the CMSIS. Sure enough the I2C master address register has the first 11 bits being the address...
We would not expect less from Microchip.