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:
- 8.1.Select the desired baud rate by writing to the Baud register (BAUD).
- 8.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).