13.21.6.2.1 Initialization

The following registers are enable-protected, meaning that they can only be written when the SPI is disabled (CTRL.ENABLE=0):

  • Control A register (CTRLA), except Enable (CTRLA.ENABLE) and Software Reset (CTRLA.SWRST)
  • Control B register (CTRLB), except Receiver Enable (CTRLB.RXEN)
  • Baud register (BAUD)
  • Address register (ADDR)

When the SPI is enabled or is being enabled (CTRLA.ENABLE=1), any writing to these registers will be discarded.

when the SPI is being disabled, writing to these registers will be completed after the disabling.

Enable-protection is denoted by the Enable-Protection property in the register description.

Initialize the SPI by following these steps:
  1. Select SPI mode in master / slave operation in the Operating Mode bit group in the CTRLA register (CTRLA.MODE= 0x2 or 0x3 ).
  2. Select transfer mode for the Clock Polarity bit and the Clock Phase bit in the CTRLA register (CTRLA.CPOL and CTRLA.CPHA) if desired.
  3. Select the Frame Format value in the CTRLA register (CTRLA.FORM).
  4. Configure the Data In Pinout field in the Control A register (CTRLA.DIPO) for SERCOM pads of the receiver.
  5. Configure the Data Out Pinout bit group in the Control A register (CTRLA.DOPO) for SERCOM pads of the transmitter.
  6. Select the Character Size value in the CTRLB register (CTRLB.CHSIZE).
  7. Write the Data Order bit in the CTRLA register (CTRLA.DORD) for data direction.
  8. If the SPI is used in master mode:
    1. Select the desired baud rate by writing to the Baud register (BAUD).
    2. If Hardware SS control is required, write '1' to the Master Slave Select Enable bit in CTRLB register (CTRLB.MSSEN).
  9. Enable the receiver by writing the Receiver Enable bit in the CTRLB register (CTRLB.RXEN=1).