CMSIS-Driver_PIC32CM-PL  
Peripheral Library (PLIB) Documentation
 
Loading...
Searching...
No Matches
SERCOM Interface

Driver API for SERCOM (plib_sercom0_i2c_host.h) More...

Macros

#define I2C_CLIENT_ERROR_BUSERR   SERCOM_I2CS_STATUS_BUSERR_Msk
 Bus error detected on the I2C bus.
 
#define I2C_CLIENT_ERROR_COLL   SERCOM_I2CS_STATUS_COLL_Msk
 Collision detected on the I2C bus.
 
#define I2C_CLIENT_ERROR_LOWTOUT   SERCOM_I2CS_STATUS_LOWTOUT_Msk
 SCL low timeout error detected.
 
#define I2C_CLIENT_ERROR_SEXTTOUT   SERCOM_I2CS_STATUS_SEXTTOUT_Msk
 Slave SCL extend timeout error detected.
 
#define I2C_CLIENT_ERROR_ALL   (I2C_CLIENT_ERROR_BUSERR | I2C_CLIENT_ERROR_COLL | I2C_CLIENT_ERROR_LOWTOUT | I2C_CLIENT_ERROR_SEXTTOUT)
 Mask for all I2C client error conditions.
 
#define SERCOM_SPI_BAUD_MAX   (0xFFU)
 Maximum value for the SPI baud rate register.
 
#define USART_ERROR_NONE   0U
 Error status when no error has occurred.
 
#define USART_ERROR_PARITY   SERCOM_USART_STATUS_PERR_Msk
 Error status when a parity error has occurred.
 
#define USART_ERROR_FRAMING   SERCOM_USART_STATUS_FERR_Msk
 Error status when a framing error has occurred.
 
#define USART_ERROR_OVERRUN   SERCOM_USART_STATUS_BUFOVF_Msk
 Error status when an overrun error has occurred.
 
#define USART_ERROR_COLLISION   SERCOM_USART_STATUS_COLL_Msk
 Error status when a collision detection has occurred.
 

Typedefs

typedef void(* SERCOM_INTERRUPT_HANDLER) (void)
 Function pointer type for SERCOM interrupt handlers.
 
typedef void(* SERCOM_I2C_CALLBACK_HANDLER) (void)
 Function pointer type for SERCOM I2C event callback handler.
 
typedef void(* SERCOM_SPI_CALLBACK) (uint8_t intr)
 Callback function type for SPI interrupts.
 
typedef uint16_t USART_ERROR
 Type for representing USART error status.
 
typedef void(* SERCOM_USART_CALLBACK_HANDLER) (USART_EVENT event)
 Function pointer type for SERCOM USART event callback handler.
 

Enumerations

enum  I2C_OPMODE { CLIENT_MODE = 0x4U , HOST_MODE = 0x5U }
 I2C operating mode selection. More...
 
enum  I2C_HOST_HWREG_STATUS {
  I2C_HOST_HWREG_OK = 0 , I2C_HOST_HWREG_ERROR , I2C_HOST_HWREG_INVALID_PARAM , I2C_HOST_HWREG_TIMEOUT ,
  I2C_HOST_HWREG_BUSY , I2C_HOST_HWREG_UNSUPPORTED
}
 Status codes for USART hardware register operations. More...
 
enum  I2C_HOST_EVENT { I2C_HOST_EVENT_BUS_ERROR = 1U , I2C_HOST_EVENT_ARBITRATION_LOST = 2U , I2C_HOST_EVENT_NACK = 4U , I2C_HOST_EVENT_TRANSFER = 8U }
 I2C interrupt event codes. More...
 
enum  I2C_HOST_INTERRUPT { HOST_ON_BUS_INTERRUPT = SERCOM_I2CM_INTENSET_MB_Msk , CLIENT_ON_BUS_INTERRUPT = SERCOM_I2CM_INTENSET_SB_Msk , ERROR_INTERRUPT = SERCOM_I2CM_INTENSET_ERROR_Msk , HOST_INTERRUPT_ALL = SERCOM_I2CM_INTENSET_Msk }
 I2C Interrupts selection. More...
 
enum  I2C_HOST_TRANSFER_SPEED_MODE { I2C_HOST_STANDARD_MODE = 0UL , I2C_HOST_FAST_MODE = 0UL , I2C_HOST_FAST_MODE_PLUS = 1UL , I2C_HOST_HIGH_SPEED_MODE = 2UL }
 I2C Speed mode selection. More...
 
enum  I2C_HOST_ACK_ACTION { I2C_HOST_SEND_ACK = 0 , I2C_HOST_SEND_NACK = 1 }
 Acknowledge Action selection. More...
 
enum  I2C_HOST_SDA_HOLD_TIME { I2C_HOST_HOLD_TIME_DISABLE = 0x0 , I2C_HOST_HOLD_TIME_75NS = 0x1 , I2C_HOST_HOLD_TIME_450NS = 0x2 , I2C_HOST_HOLD_TIME_600NS = 0x3 }
 SDA Hold time selection. More...
 
enum  I2C_HOST_SCL_CLK_STRETCH_MODE { SLC_STRETCH_BEFORE_OR_AFTER_ACK = 0 , SLC_STRETCH_ONLY_AFTER_ACK = 1 }
 Selection for stretching SCL for software interaction. More...
 
enum  I2C_CLIENT_DIR { I2C_CLIENT_DIR_WRITE = 0 , I2C_CLIENT_DIR_READ = 1 }
 I2C client transfer direction. More...
 
enum  I2C_CLIENT_ACK_STATUS { I2C_CLIENT_ACK_RECEIVED = 0 , I2C_CLIENT_NACK_RECEIVED = 1 }
 ACK/NACK status for last data packet sent. More...
 
enum  I2C_CLIENT_COMMAND { I2C_CLIENT_COMMAND_SEND_ACK = 0 , I2C_CLIENT_COMMAND_SEND_NAK , I2C_CLIENT_COMMAND_RECEIVE_ACK_NAK , I2C_CLIENT_COMMAND_WAIT_FOR_START }
 I2C client command actions. More...
 
enum  I2C_CLIENT_TRANSFER_EVENT {
  I2C_CLIENT_TRANSFER_EVENT_NONE = 0 , I2C_CLIENT_TRANSFER_EVENT_ADDR_MATCH , I2C_CLIENT_TRANSFER_EVENT_RX_READY , I2C_CLIENT_TRANSFER_EVENT_TX_READY ,
  I2C_CLIENT_TRANSFER_EVENT_STOP_BIT_RECEIVED , I2C_CLIENT_TRANSFER_EVENT_ERROR
}
 I2C client transfer event types. More...
 
enum  I2C_CLIENT_INTERRUPT {
  I2C_CLIENT_INT_ERROR = SERCOM_I2CS_INTENSET_ERROR_Msk , I2C_CLIENT_INT_DRDY = SERCOM_I2CS_INTENSET_DRDY_Msk , I2C_CLIENT_INT_AMATCH = SERCOM_I2CS_INTENSET_AMATCH_Msk , I2C_CLIENT_INT_PREC = SERCOM_I2CS_INTENSET_PREC_Msk ,
  I2C_CLIENT_INT_ALL = SERCOM_I2CS_INTENSET_Msk
}
 I2C Client Interrupt options. More...
 
enum  I2C_CLIENT_INTFLAG {
  I2C_CLIENT_INTFLAG_PREC = SERCOM_I2CS_INTFLAG_PREC_Msk , I2C_CLIENT_INTFLAG_AMATCH = SERCOM_I2CS_INTFLAG_AMATCH_Msk , I2C_CLIENT_INTFLAG_DRDY = SERCOM_I2CS_INTFLAG_DRDY_Msk , I2C_CLIENT_INTFLAG_ERROR = SERCOM_I2CS_INTFLAG_ERROR_Msk ,
  I2C_CLIENT_INTFLAG_ALL = SERCOM_I2CS_INTFLAG_Msk
}
 SERCOM I2C interrupt flag bits. More...
 
enum  SPI_HWREG_STATUS {
  SPI_HWREG_OK = 0 , SPI_HWREG_ERROR , SPI_HWREG_INVALID_PARAM , SPI_HWREG_TIMEOUT ,
  SPI_HWREG_BUSY , SPI_HWREG_UNSUPPORTED
}
 Status codes for SPI hardware register operations. More...
 
enum  SPI_OPERATING_MODE { SPI_CLIENT_MODE = 2U , SPI_HOST_MODE = 3U }
 SPI operating modes. More...
 
enum  SERCOM_SPI_CHSIZE { SPI_CHSIZE_8BIT = SERCOM_SPI_CTRLB_CHSIZE(0U) , SPI_CHSIZE_9BIT = SERCOM_SPI_CTRLB_CHSIZE(1U) }
 SPI character size options. More...
 
enum  SPI_ADDRESS_MODE { SPI_AMODE_MASK = SERCOM_SPI_CTRLB_AMODE(0) , SPI_AMODE_2ADDRS = SERCOM_SPI_CTRLB_AMODE(1) , SPI_AMODE_RANGE = SERCOM_SPI_CTRLB_AMODE(2) }
 SPI address mode options. More...
 
enum  SPI_DATAIN_PIN { SPI_DI_PAD0 = SERCOM_SPI_CTRLA_DIPO(0) , SPI_DI_PAD1 = SERCOM_SPI_CTRLA_DIPO(1) , SPI_DI_PAD2 = SERCOM_SPI_CTRLA_DIPO(2) , SPI_DI_PAD3 = SERCOM_SPI_CTRLA_DIPO(3) }
 Enumeration of SERCOM SPI data input (DI) pin configurations. More...
 
enum  SPI_DATAOUT_PIN { SPI_DO_PAD0_SCK_PAD1_SS_PAD2 = SERCOM_SPI_CTRLA_DOPO(0) , SPI_DO_PAD2_SCK_PAD3_SS_PAD1 = SERCOM_SPI_CTRLA_DOPO(1) , SPI_DO_PAD3_SCK_PAD1_SS_PAD2 = SERCOM_SPI_CTRLA_DOPO(2) , SPI_DO_PAD0_SCK_PAD3_SS_PAD1 = SERCOM_SPI_CTRLA_DOPO(3) }
 Enumeration of possible SERCOM SPI data output pin configurations. More...
 
enum  SPI_INTERRUPT_SOURCE {
  SPI_INTERRUPT_NONE = 0U , SPI_INTERRUPT_DRE = SERCOM_SPI_INTENSET_DRE_Msk , SPI_INTERRUPT_TXC = SERCOM_SPI_INTENSET_TXC_Msk , SPI_INTERRUPT_RXC = SERCOM_SPI_INTENSET_RXC_Msk ,
  SPI_INTERRUPT_SSL = SERCOM_SPI_INTENSET_SSL_Msk , SPI_INTERRUPT_ERROR = SERCOM_SPI_INTENSET_ERROR_Msk , SPI_INTERRUPT_ALL = SERCOM_SPI_INTENSET_Msk
}
 SPI interrupt sources. More...
 
enum  SPI_INTERRUPT_FLAG {
  SPI_FLAG_ERROR = SERCOM_SPI_INTFLAG_ERROR_Msk , SPI_FLAG_SSL = SERCOM_SPI_INTFLAG_SSL_Msk , SPI_FLAG_TXC = SERCOM_SPI_INTFLAG_TXC_Msk , SPI_FLAG_DRE = SERCOM_SPI_INTFLAG_DRE_Msk ,
  SPI_FLAG_RXC = SERCOM_SPI_INTFLAG_RXC_Msk , SPI_FLAG_ALL = SERCOM_SPI_INTFLAG_Msk
}
 SPI interrupt flags. More...
 
enum  USART_HWREG_STATUS {
  USART_HWREG_OK = 0 , USART_HWREG_ERROR , USART_HWREG_INVALID_PARAM , USART_HWREG_TIMEOUT ,
  USART_HWREG_BUSY , USART_HWREG_UNSUPPORTED
}
 Status codes for USART hardware register operations. More...
 
enum  USART_OPMODE { USART_EXT = 0 , USART_INT = 1 }
 USART operating mode selection. More...
 
enum  USART_CHARSIZE {
  USART_DATA_8_BIT = 0 , USART_DATA_9_BIT = 1 , USART_DATA_5_BIT = 5 , USART_DATA_6_BIT = 6 ,
  USART_DATA_7_BIT = 7
}
 USART character size selection. More...
 
enum  USART_FRAME_FORMAT { USART_FRAME = 0 , USART_FRAME_WITH_PARITY = 1 }
 USART frame format selection. More...
 
enum  USART_PARITY_MODE { USART_EVEN_PARITY = 0 , USART_ODD_PARITY = 1 }
 USART parity mode selection. More...
 
enum  USART_COMM_MODE { USART_ASYNC_MODE = 0 , USART_SYNC_MODE = 1 }
 USART communication mode selection. More...
 
enum  USART_STOPBITS { USART_STOP_1_BIT = 0 , USART_STOP_2_BIT = 1 }
 USART stop bits selection. More...
 
enum  USART_DATA_ORDER { USART_MSB_FIRST = 0 , USART_LSB_FIRST = 1 }
 USART data order selection. More...
 
enum  USART_RXDATA_PINOUT { USART_RX_PAD0 = 0 , USART_RX_PAD1 = 1 , USART_RX_PAD2 = 2 , USART_RX_PAD3 = 3 }
 USART RX data pinout selection. More...
 
enum  USART_TXDATA_PINOUT { USART_TX_PAD0 = 0 , USART_TX_PAD2 = 1 , USART_TX_PAD0_WITH_RTS_CTS = 2 , USART_TX_PAD0_WITH_TE = 3 }
 USART TX data pinout selection. More...
 
enum  USART_EVENT { USART_EVENT_REGISTER_EMPTY = 0 , USART_EVENT_TRANSMIT_COMPLETE , USART_EVENT_RECEIVE_COMPLETE , USART_EVENT_ERROR }
 USART interrupt event list. More...
 

Functions

void SERCOM0_I2CS_ResetSoftware (void)
 Resets the SERCOM0 I2C client peripheral.
 
void SERCOM0_I2CS_Enable (void)
 Enables the SERCOM0 I2C client peripheral.
 
void SERCOM0_I2CS_Disable (void)
 Disables the SERCOM0 I2C client peripheral.
 
void SERCOM0_I2CS_SetOperatingMode (void)
 Sets up the SERCOM0 I2C client mode.
 
void SERCOM0_I2CS_Set7bitAddress (uint8_t addr)
 Sets the I2C client address.
 
void SERCOM0_I2CS_Set7bitAddressMask (uint8_t addr_mask)
 Sets the I2C client address mask.
 
void SERCOM0_I2CS_SetGeneralCall (bool value)
 Enables or disables general call address recognition.
 
uint8_t SERCOM0_I2CS_ReceiveData (void)
 Reads a byte of data from the I2C client.
 
void SERCOM0_I2CS_SendData (uint8_t data)
 Writes a byte of data to the I2C client.
 
uint32_t SERCOM0_I2CS_GetError (void)
 Gets and clears error status for the I2C client.
 
I2C_CLIENT_DIR SERCOM0_I2CS_GetTransferDirection (void)
 Gets the current transfer direction (read/write).
 
I2C_CLIENT_ACK_STATUS SERCOM0_I2CS_GetLastByteAckStatus (void)
 Gets the ACK/NACK status for the last data packet sent.
 
void SERCOM0_I2CS_SetCommand (I2C_CLIENT_COMMAND command)
 Sets a command for the I2C client.
 
I2C_CLIENT_TRANSFER_EVENT SERCOM0_I2CS_GetBusStatus (void)
 Get current I2C bus status for SERCOM0.
 
void SERCOM0_I2CS_EnableInterrupts (I2C_CLIENT_INTERRUPT interrupts)
 Enables specific I2C client interrupts.
 
void SERCOM0_I2CS_DisableInterrupts (I2C_CLIENT_INTERRUPT interrupts)
 Disables specific I2C client interrupts.
 
void SERCOM0_I2CS_ClearInterruptFlags (I2C_CLIENT_INTFLAG interrupt_flags)
 Clears specific I2C client interrupt flags.
 
void SERCOM0_I2CM_Enable (void)
 Enables the SERCOM0 I2C peripheral.
 
void SERCOM0_I2CM_Disable (void)
 Disables the SERCOM0 I2C peripheral.
 
void SERCOM0_I2CM_SetTransferSpeed (I2C_HOST_TRANSFER_SPEED_MODE transfer_speed)
 Sets the I2C transfer speed mode for SERCOM0.
 
void SERCOM0_I2CM_SetIdle (void)
 Sets the SERCOM0 I2C peripheral to idle state.
 
void SERCOM0_I2CM_ResetSoftware (void)
 Performs a software reset of the SERCOM0 I2C peripheral.
 
void SERCOM0_I2CM_EnableSmartMode (bool smart_mode)
 Enables or disables Smart Mode for SERCOM0 I2C.
 
void SERCOM0_I2CM_SetOperatingMode (void)
 Sets the operating mode for SERCOM0 I2C.
 
void SERCOM0_I2CM_SetSDAHoldTime (I2C_HOST_SDA_HOLD_TIME hold_time)
 Sets the SDA hold time for SERCOM0 I2C.
 
void SERCOM0_I2CM_SetSCLCLockStretchMode (I2C_HOST_SCL_CLK_STRETCH_MODE clock_stretch_mode)
 Sets the SCL clock stretch mode for SERCOM0 I2C.
 
I2C_HOST_HWREG_STATUS SERCOM0_I2CM_SetBaudRate (uint32_t srcClkFreq, uint32_t i2cClkSpeed)
 Sets the SERCOM0 I2C baud rate.
 
void SERCOM0_I2CM_SetAckAction (I2C_HOST_ACK_ACTION ack_action)
 Sets the ACK action for SERCOM0 I2C.
 
void SERCOM0_I2CM_SendAddress (uint32_t address, bool direction)
 Sends an I2C address on the SERCOM0 bus.
 
bool SERCOM0_I2CM_BusIsIdle (void)
 Checks if the SERCOM0 I2C bus is idle.
 
void SERCOM0_I2CM_SendStop (void)
 Sends a STOP condition on the SERCOM0 I2C bus.
 
void SERCOM0_I2CM_SendData (uint8_t data)
 Sends a data byte on the SERCOM0 I2C bus.
 
uint8_t SERCOM0_I2CM_ReceiveData (void)
 Receives a data byte from the SERCOM0 I2C bus.
 
uint8_t SERCOM0_I2CM_GetSyncBusyStatus (void)
 Gets the synchronization busy status for SERCOM0 I2C.
 
void SERCOM0_I2CM_EnableInterrupts (I2C_HOST_INTERRUPT interrupts)
 Enables specific SERCOM0 I2C interrupts.
 
void SERCOM0_I2CM_DisableInterrupts (I2C_HOST_INTERRUPT interrupts)
 Disables specific SERCOM0 I2C interrupts.
 
void SERCOM0_I2CM_ClearInterruptFlag (I2C_HOST_INTERRUPT interrupt_flag)
 Clears specific SERCOM0 I2C interrupt flags.
 
void SERCOM0_I2CM_SetCallbackHandler (SERCOM_I2C_CALLBACK_HANDLER callback)
 Sets the callback handler for SERCOM0 I2C events.
 
void SERCOM0_I2CM_SetInterruptHandler (void)
 Assigns the interrupt handler for SERCOM0 I2C.
 
uint32_t SERCOM0_I2CM_GetBusStatus (void)
 Gets SERCOM0 I2C bus status, reads the status register.
 
void SERCOM0_SPI_Enable (void)
 Enables the SERCOM0 SPI peripheral.
 
void SERCOM0_SPI_Disable (void)
 Disables the SERCOM0 SPI peripheral.
 
void SERCOM0_SPI_ResetSoftware (void)
 Performs a software reset of the SERCOM0 SPI peripheral.
 
void SERCOM0_SPI_EnableReceiver (void)
 Enables the SPI receiver.
 
void SERCOM0_SPI_DisableReceiver (void)
 Disables the SPI receiver.
 
SPI_HWREG_STATUS SERCOM0_SPI_SetBusSpeed (uint32_t bus_speed, uint32_t clk_frequency)
 Sets the SPI bus speed.
 
uint32_t SERCOM0_SPI_GetBusSpeed (uint32_t clk_frequency)
 Returns the SPI bus speed.
 
void SERCOM0_SPI_SetDataOrder (bool lsb_first)
 Sets the SPI data order.
 
void SERCOM0_SPI_SetClockPolarity (bool cpol_high)
 Sets the SPI clock polarity.
 
void SERCOM0_SPI_SetClockPhase (bool cpha_trailing)
 Sets the SPI clock phase.
 
void SERCOM0_SPI_SetOperatingMode (SPI_OPERATING_MODE mode)
 Sets the SPI operating mode.
 
void SERCOM0_SPI_SetCharacterSize (SERCOM_SPI_CHSIZE chsize)
 Sets the character size for the SERCOM0 SPI module.
 
void SERCOM0_SPI_SetPinOut (SPI_DATAIN_PIN dipo, SPI_DATAOUT_PIN dopo)
 Set SERCOM0 SPI data in (DIPO) and data out (DOPO) pinout.
 
void SERCOM0_SPI_Send (uint16_t data)
 Writes data to the SPI bus.
 
uint16_t SERCOM0_SPI_Receive (void)
 Reads data from the SPI bus.
 
bool SERCOM0_SPI_RxIsReady (void)
 Checks if the SPI receive buffer is ready.
 
bool SERCOM0_SPI_TxIsReady (void)
 Checks if the SPI transmit buffer is ready.
 
void SERCOM0_SPI_SetImmediateBufferOverflow (bool immediate)
 Sets immediate buffer overflow behavior.
 
bool SERCOM0_SPI_BufferIsOverflow (void)
 Checks for SPI buffer overflow.
 
void SERCOM0_SPI_ClearBufferOverflow (void)
 Clears the SPI buffer overflow flag.
 
void SERCOM0_SPI_SetAddressMode (SPI_ADDRESS_MODE mode)
 Sets the SPI address mode.
 
void SERCOM0_SPI_EnableHardwareSS (bool enable)
 Enables or disables hardware slave select (SS) management.
 
void SERCOM0_SPI_EnableSSLowDetect (bool enable)
 Enables or disables slave select low detect.
 
void SERCOM0_SPI_SetRunInStandby (bool run_stdby)
 Sets the SPI to run in standby mode.
 
void SERCOM0_SPI_EnablePreload (bool enable)
 Enables or disables SPI preload feature.
 
void SERCOM0_SPI_EnableInterrupt (SPI_INTERRUPT_SOURCE src)
 Enables a specific SPI interrupt source.
 
void SERCOM0_SPI_DisableInterrupt (SPI_INTERRUPT_SOURCE src)
 Disables a specific SPI interrupt source.
 
bool SERCOM0_SPI_InterruptFlagIsSet (SPI_INTERRUPT_FLAG flag)
 Checks if the specified SPI interrupt flag is set.
 
void SERCOM0_SPI_ClearInterruptFlag (SPI_INTERRUPT_FLAG flag)
 Clears the specified SPI interrupt flag.
 
void SERCOM0_SPI_SetCallbackHandler (SERCOM_SPI_CALLBACK cb)
 Registers a callback function for SPI interrupts.
 
void SERCOM0_SPI_SetInterruptHandler (void)
 Assigns the interrupt handler for SERCOM0 SPI.
 
void SERCOM0_USART_Enable (void)
 Enables the SERCOM USART peripheral.
 
void SERCOM0_USART_Disable (void)
 Disables the SERCOM USART peripheral.
 
void SERCOM0_USART_EnableTransmitter (void)
 Enables the USART transmitter.
 
void SERCOM0_USART_DisableTransmitter (void)
 Disables the USART transmitter.
 
void SERCOM0_USART_EnableReceiver (void)
 Enables the USART receiver.
 
void SERCOM0_USART_DisableReceiver (void)
 Disables the USART receiver.
 
void SERCOM0_USART_SetOperatingMode (USART_OPMODE mode)
 Sets the USART operating mode.
 
void SERCOM0_USART_SetCommunicationMode (USART_COMM_MODE comm_mode)
 Sets the USART communication mode.
 
void SERCOM0_USART_SetTxDataPinout (USART_TXDATA_PINOUT tx_pinout)
 Sets the USART TX data pinout.
 
void SERCOM0_USART_SetRxDataPinout (USART_RXDATA_PINOUT rx_pinout)
 Sets the USART RX data pinout.
 
void SERCOM0_USART_SetDataSize (USART_CHARSIZE char_size)
 Sets the USART data size.
 
void SERCOM0_USART_SetFrameFormat (USART_FRAME_FORMAT frame_format)
 Sets the USART frame format.
 
void SERCOM0_USART_SetParityMode (USART_PARITY_MODE parity)
 Sets the USART parity mode.
 
void SERCOM0_USART_SetStopBits (USART_STOPBITS stop_bits)
 Sets the USART stop bits.
 
void SERCOM0_USART_SetDataOrder (USART_DATA_ORDER data_order)
 Sets the USART data order.
 
USART_HWREG_STATUS SERCOM0_USART_SetBaudrate (uint32_t baud, uint32_t clk_frequency)
 Sets the USART baud rate.
 
void SERCOM0_USART_DisableRxCompleteInterrupt (void)
 Disables the receive complete interrupt.
 
void SERCOM0_USART_EnableRxCompleteInterrupt (void)
 Enables the receive complete interrupt.
 
void SERCOM0_USART_DisableTxCompleteInterrupt (void)
 Disables the transmit complete interrupt.
 
void SERCOM0_USART_EnableTxCompleteInterrupt (void)
 Enables the transmit complete interrupt.
 
void SERCOM0_USART_DisableDataRegEmptyInterrupt (void)
 Disables the data register empty interrupt.
 
void SERCOM0_USART_EnableDataRegEmptyInterrupt (void)
 Enables the data register empty interrupt.
 
void SERCOM0_USART_DisableErrorInterrupt (void)
 Disables the error interrupt.
 
void SERCOM0_USART_EnableErrorInterrupt (void)
 Enables the error interrupt.
 
void SERCOM0_USART_EnableCollisionDetection (bool collision_detection)
 Enables or disables collision detection.
 
void SERCOM0_USART_Send (uint8_t data)
 Sends a byte of data via USART.
 
uint8_t SERCOM0_USART_Receive (void)
 Receives a byte of data from USART.
 
void SERCOM0_USART_Send9Bit (uint16_t data)
 Sends 9-bit data via USART.
 
uint16_t SERCOM0_USART_Receive9Bit (void)
 Receives 9-bit data from USART.
 
bool SERCOM0_USART_TxIsReady (void)
 Checks if the USART transmitter is ready.
 
bool SERCOM0_USART_RxIsReady (void)
 Checks if the USART receiver is ready.
 
bool SERCOM0_USART_TxIsDone (void)
 Checks if the USART transmission is complete.
 
USART_ERROR SERCOM0_USART_ErrorGet (void)
 Gets the current USART error status and clears it.
 
void SERCOM0_USART_SetCallbackHandler (SERCOM_USART_CALLBACK_HANDLER callback)
 Registers callback for the USART interrupt events.
 
void SERCOM0_USART_ResetSoftware (void)
 Performs a software reset of the USART peripheral.
 
void SERCOM0_USART_SetInterruptHandler (void)
 Assigns the interrupt handler for SERCOM0 USART.
 

Variables

volatile SERCOM_INTERRUPT_HANDLER SERCOM0_InterruptHandler
 Interrupt handler for SERCOM0 peripheral.
 

Description

Driver API for SERCOM (plib_sercom0_i2c_host.h)

Driver API for SERCOM (plib_sercom0_spi.h)

Driver API for SERCOM (plib_sercom0_interrupt.h)

Macro Definition Documentation

◆ I2C_CLIENT_ERROR_ALL

Mask for all I2C client error conditions.

◆ I2C_CLIENT_ERROR_BUSERR

#define I2C_CLIENT_ERROR_BUSERR   SERCOM_I2CS_STATUS_BUSERR_Msk

Bus error detected on the I2C bus.

◆ I2C_CLIENT_ERROR_COLL

#define I2C_CLIENT_ERROR_COLL   SERCOM_I2CS_STATUS_COLL_Msk

Collision detected on the I2C bus.

◆ I2C_CLIENT_ERROR_LOWTOUT

#define I2C_CLIENT_ERROR_LOWTOUT   SERCOM_I2CS_STATUS_LOWTOUT_Msk

SCL low timeout error detected.

◆ I2C_CLIENT_ERROR_SEXTTOUT

#define I2C_CLIENT_ERROR_SEXTTOUT   SERCOM_I2CS_STATUS_SEXTTOUT_Msk

Slave SCL extend timeout error detected.

◆ SERCOM_SPI_BAUD_MAX

#define SERCOM_SPI_BAUD_MAX   (0xFFU)

Maximum value for the SPI baud rate register.

◆ USART_ERROR_COLLISION

#define USART_ERROR_COLLISION   SERCOM_USART_STATUS_COLL_Msk

Error status when a collision detection has occurred.

◆ USART_ERROR_FRAMING

#define USART_ERROR_FRAMING   SERCOM_USART_STATUS_FERR_Msk

Error status when a framing error has occurred.

◆ USART_ERROR_NONE

#define USART_ERROR_NONE   0U

Error status when no error has occurred.

◆ USART_ERROR_OVERRUN

#define USART_ERROR_OVERRUN   SERCOM_USART_STATUS_BUFOVF_Msk

Error status when an overrun error has occurred.

◆ USART_ERROR_PARITY

#define USART_ERROR_PARITY   SERCOM_USART_STATUS_PERR_Msk

Error status when a parity error has occurred.

Typedef Documentation

◆ SERCOM_I2C_CALLBACK_HANDLER

SERCOM_I2C_CALLBACK_HANDLER

Function pointer type for SERCOM I2C event callback handler.

◆ SERCOM_INTERRUPT_HANDLER

SERCOM_INTERRUPT_HANDLER

Function pointer type for SERCOM interrupt handlers.

This typedef defines a function pointer for interrupt handlers associated with SERCOM. The handler function must take no parameters and return void.

◆ SERCOM_SPI_CALLBACK

SERCOM_SPI_CALLBACK

Callback function type for SPI interrupts.

Parameters
intrThe interrupt source that triggered the callback.

◆ SERCOM_USART_CALLBACK_HANDLER

SERCOM_USART_CALLBACK_HANDLER

Function pointer type for SERCOM USART event callback handler.

This typedef defines a callback function type that is called when a USART event occurs. The callback receives a single parameter indicating the event type.

Parameters
eventThe USART event that triggered the callback.
See also
USART_EVENT

◆ USART_ERROR

Type for representing USART error status.

Enumeration Type Documentation

◆ I2C_CLIENT_ACK_STATUS

ACK/NACK status for last data packet sent.

Enumerator
I2C_CLIENT_ACK_RECEIVED 

Host responded with ACK.

I2C_CLIENT_NACK_RECEIVED 

Host responded with NACK.

◆ I2C_CLIENT_COMMAND

I2C client command actions.

Enumerator
I2C_CLIENT_COMMAND_SEND_ACK 

Send ACK to the host.

I2C_CLIENT_COMMAND_SEND_NAK 

Send NAK to the host.

I2C_CLIENT_COMMAND_RECEIVE_ACK_NAK 

Receive ACK/NAK from the host (no ACKACT update).

I2C_CLIENT_COMMAND_WAIT_FOR_START 

Wait for a new START condition.

◆ I2C_CLIENT_DIR

I2C client transfer direction.

Enumerator
I2C_CLIENT_DIR_WRITE 

I2C Host is writing to client.

I2C_CLIENT_DIR_READ 

I2C Host is reading from client.

◆ I2C_CLIENT_INTERRUPT

I2C Client Interrupt options.

Enumerator
I2C_CLIENT_INT_ERROR 

I2C Client Error Interrupt.

I2C_CLIENT_INT_DRDY 

I2C Client Data Ready Interrupt.

I2C_CLIENT_INT_AMATCH 

I2C Client Address Match Interrupt.

I2C_CLIENT_INT_PREC 

I2C Client Stop Received Interrupt.

I2C_CLIENT_INT_ALL 

I2C Client all Interrupts.

◆ I2C_CLIENT_INTFLAG

SERCOM I2C interrupt flag bits.

Enumerator
I2C_CLIENT_INTFLAG_PREC 

Stop Received

I2C_CLIENT_INTFLAG_AMATCH 

Address Match

I2C_CLIENT_INTFLAG_DRDY 

Data Ready

I2C_CLIENT_INTFLAG_ERROR 

Error

I2C_CLIENT_INTFLAG_ALL 

◆ I2C_CLIENT_TRANSFER_EVENT

I2C client transfer event types.

Enumerator
I2C_CLIENT_TRANSFER_EVENT_NONE 

No event.

I2C_CLIENT_TRANSFER_EVENT_ADDR_MATCH 

Address match event.

I2C_CLIENT_TRANSFER_EVENT_RX_READY 

Data sent by I2C Host is available.

I2C_CLIENT_TRANSFER_EVENT_TX_READY 

I2C client can respond to data read request from I2C Host.

I2C_CLIENT_TRANSFER_EVENT_STOP_BIT_RECEIVED 

Stop bit received event.

I2C_CLIENT_TRANSFER_EVENT_ERROR 

Error event.

◆ I2C_HOST_ACK_ACTION

Acknowledge Action selection.

Enumerator
I2C_HOST_SEND_ACK 

Send ACK when a command is written to CTRLB.CMD

I2C_HOST_SEND_NACK 

Send NACK when a command is written to CTRLB.CMD

◆ I2C_HOST_EVENT

I2C interrupt event codes.

Enumerator
I2C_HOST_EVENT_BUS_ERROR 
I2C_HOST_EVENT_ARBITRATION_LOST 
I2C_HOST_EVENT_NACK 
I2C_HOST_EVENT_TRANSFER 

◆ I2C_HOST_HWREG_STATUS

Status codes for USART hardware register operations.

Enumerator
I2C_HOST_HWREG_OK 

Operation successful

I2C_HOST_HWREG_ERROR 

Generic error

I2C_HOST_HWREG_INVALID_PARAM 

Invalid parameter passed

I2C_HOST_HWREG_TIMEOUT 

Operation timed out

I2C_HOST_HWREG_BUSY 

Hardware is busy

I2C_HOST_HWREG_UNSUPPORTED 

Operation not supported

◆ I2C_HOST_INTERRUPT

I2C Interrupts selection.

Enumerator
HOST_ON_BUS_INTERRUPT 

Host on Bus Interrupt Enable

CLIENT_ON_BUS_INTERRUPT 

Client on Bus Interrupt Enable

ERROR_INTERRUPT 

Error Interrupt Enable

HOST_INTERRUPT_ALL 

◆ I2C_HOST_SCL_CLK_STRETCH_MODE

Selection for stretching SCL for software interaction.

Enumerator
SLC_STRETCH_BEFORE_OR_AFTER_ACK 

SCL stretch before or after ACK

SLC_STRETCH_ONLY_AFTER_ACK 

SCL stretch only after ACK bit

◆ I2C_HOST_SDA_HOLD_TIME

SDA Hold time selection.

Enumerator
I2C_HOST_HOLD_TIME_DISABLE 

Disabled

I2C_HOST_HOLD_TIME_75NS 

50-100ns hold time

I2C_HOST_HOLD_TIME_450NS 

300-600ns hold time

I2C_HOST_HOLD_TIME_600NS 

400-800ns hold time

◆ I2C_HOST_TRANSFER_SPEED_MODE

I2C Speed mode selection.

Enumerator
I2C_HOST_STANDARD_MODE 

Standard-mode (Sm) up to 100 kHz and Fast-mode (Fm) up to 400 kHz

I2C_HOST_FAST_MODE 

Standard-mode (Sm) up to 100 kHz and Fast-mode (Fm) up to 400 kHz

I2C_HOST_FAST_MODE_PLUS 

Fast-mode Plus (Fm+) up to 1 MHz

I2C_HOST_HIGH_SPEED_MODE 

High-speed mode (Hs-mode) up to 3.4 MHz

◆ I2C_OPMODE

enum I2C_OPMODE

I2C operating mode selection.

Enumerator
CLIENT_MODE 

I2C Slave mode

HOST_MODE 

I2C Host mode

◆ SERCOM_SPI_CHSIZE

SPI character size options.

Enumerator
SPI_CHSIZE_8BIT 
SPI_CHSIZE_9BIT 

◆ SPI_ADDRESS_MODE

SPI address mode options.

Enumerator
SPI_AMODE_MASK 
SPI_AMODE_2ADDRS 
SPI_AMODE_RANGE 

◆ SPI_DATAIN_PIN

Enumeration of SERCOM SPI data input (DI) pin configurations.

This enum specifies the mapping of the SPI data input (DI) signal to SERCOM PADs. The DI signal corresponds to:

  • Host mode: MISO (Master In Slave Out)
  • Client mode: MOSI (Master Out Slave In)

The value programmed into the SERCOM_SPI_CTRLA_DIPO register determines which PAD is used for DI.

Enumerator
SPI_DI_PAD0 
SPI_DI_PAD1 
SPI_DI_PAD2 
SPI_DI_PAD3 

◆ SPI_DATAOUT_PIN

Enumeration of possible SERCOM SPI data output pin configurations.

This enum defines the mapping of SPI data output (MOSI/MISO), clock (SCK), and slave select (SS) pins to SERCOM PADs for both Host and Client modes. The mapping depends on the value programmed into the SERCOM_SPI_CTRLA_DOPO register.

  • Host mode: MOSI, SCK, and SS pins are assigned to specific PADs.
  • Client mode: MISO, SCK, and SS pins are assigned to specific PADs.
  • If MSSEN is enabled (MSSEN=1), the SS pin is used.
Note
The actual PAD assignments may vary depending on the microcontroller and SERCOM instance.
Enumerator
SPI_DO_PAD0_SCK_PAD1_SS_PAD2 
SPI_DO_PAD2_SCK_PAD3_SS_PAD1 
SPI_DO_PAD3_SCK_PAD1_SS_PAD2 
SPI_DO_PAD0_SCK_PAD3_SS_PAD1 

◆ SPI_HWREG_STATUS

Status codes for SPI hardware register operations.

Enumerator
SPI_HWREG_OK 

Operation successful

SPI_HWREG_ERROR 

Generic error

SPI_HWREG_INVALID_PARAM 

Invalid parameter passed

SPI_HWREG_TIMEOUT 

Operation timed out

SPI_HWREG_BUSY 

Hardware is busy

SPI_HWREG_UNSUPPORTED 

Operation not supported

◆ SPI_INTERRUPT_FLAG

SPI interrupt flags.

Enumerator
SPI_FLAG_ERROR 
SPI_FLAG_SSL 
SPI_FLAG_TXC 
SPI_FLAG_DRE 
SPI_FLAG_RXC 
SPI_FLAG_ALL 

◆ SPI_INTERRUPT_SOURCE

SPI interrupt sources.

Enumerator
SPI_INTERRUPT_NONE 
SPI_INTERRUPT_DRE 
SPI_INTERRUPT_TXC 
SPI_INTERRUPT_RXC 
SPI_INTERRUPT_SSL 
SPI_INTERRUPT_ERROR 
SPI_INTERRUPT_ALL 

◆ SPI_OPERATING_MODE

SPI operating modes.

Enumerator
SPI_CLIENT_MODE 
SPI_HOST_MODE 

◆ USART_CHARSIZE

USART character size selection.

Enumerator
USART_DATA_8_BIT 

8-bit data

USART_DATA_9_BIT 

9-bit data

USART_DATA_5_BIT 

5-bit data

USART_DATA_6_BIT 

6-bit data

USART_DATA_7_BIT 

7-bit data

◆ USART_COMM_MODE

USART communication mode selection.

Enumerator
USART_ASYNC_MODE 

Asynchronous mode

USART_SYNC_MODE 

Synchronous mode

◆ USART_DATA_ORDER

USART data order selection.

Enumerator
USART_MSB_FIRST 

MSB first

USART_LSB_FIRST 

LSB first

◆ USART_EVENT

USART interrupt event list.

Enumerator
USART_EVENT_REGISTER_EMPTY 
USART_EVENT_TRANSMIT_COMPLETE 
USART_EVENT_RECEIVE_COMPLETE 
USART_EVENT_ERROR 

◆ USART_FRAME_FORMAT

USART frame format selection.

Enumerator
USART_FRAME 

Standard frame

USART_FRAME_WITH_PARITY 

Frame with parity

◆ USART_HWREG_STATUS

Status codes for USART hardware register operations.

Enumerator
USART_HWREG_OK 

Operation successful

USART_HWREG_ERROR 

Generic error

USART_HWREG_INVALID_PARAM 

Invalid parameter passed

USART_HWREG_TIMEOUT 

Operation timed out

USART_HWREG_BUSY 

Hardware is busy

USART_HWREG_UNSUPPORTED 

Operation not supported

◆ USART_OPMODE

USART operating mode selection.

Enumerator
USART_EXT 

External clock mode

USART_INT 

Internal clock mode

◆ USART_PARITY_MODE

USART parity mode selection.

Enumerator
USART_EVEN_PARITY 

Even parity

USART_ODD_PARITY 

Odd parity

◆ USART_RXDATA_PINOUT

USART RX data pinout selection.

Enumerator
USART_RX_PAD0 

RX on PAD0

USART_RX_PAD1 

RX on PAD1

USART_RX_PAD2 

RX on PAD2

USART_RX_PAD3 

RX on PAD3

◆ USART_STOPBITS

USART stop bits selection.

Enumerator
USART_STOP_1_BIT 

1 stop bit

USART_STOP_2_BIT 

2 stop bits

◆ USART_TXDATA_PINOUT

USART TX data pinout selection.

Enumerator
USART_TX_PAD0 

TX on PAD0

USART_TX_PAD2 

TX on PAD2

USART_TX_PAD0_WITH_RTS_CTS 

TX on PAD0 with RTS/CTS

USART_TX_PAD0_WITH_TE 

TX on PAD0 with TE

Function Documentation

◆ SERCOM0_I2CM_BusIsIdle()

bool SERCOM0_I2CM_BusIsIdle ( void )

Checks if the SERCOM0 I2C bus is idle.

Parameters
None.
Returns
true if bus is idle, false otherwise.

◆ SERCOM0_I2CM_ClearInterruptFlag()

void SERCOM0_I2CM_ClearInterruptFlag ( I2C_HOST_INTERRUPT interrupt_flag)

Clears specific SERCOM0 I2C interrupt flags.

Parameters
interrupt_flag- Bitmask specifying which interrupt flags to clear.
Returns
None.

◆ SERCOM0_I2CM_Disable()

void SERCOM0_I2CM_Disable ( void )

Disables the SERCOM0 I2C peripheral.

Parameters
None.
Returns
None.

◆ SERCOM0_I2CM_DisableInterrupts()

void SERCOM0_I2CM_DisableInterrupts ( I2C_HOST_INTERRUPT interrupts)

Disables specific SERCOM0 I2C interrupts.

Parameters
interrupts- Bitmask specifying which interrupts to disable.
Returns
None.

◆ SERCOM0_I2CM_Enable()

void SERCOM0_I2CM_Enable ( void )

Enables the SERCOM0 I2C peripheral.

Parameters
None.
Returns
None.

◆ SERCOM0_I2CM_EnableInterrupts()

void SERCOM0_I2CM_EnableInterrupts ( I2C_HOST_INTERRUPT interrupts)

Enables specific SERCOM0 I2C interrupts.

Parameters
interrupts- Bitmask specifying which interrupts to enable.
Returns
None.

◆ SERCOM0_I2CM_EnableSmartMode()

void SERCOM0_I2CM_EnableSmartMode ( bool smart_mode)

Enables or disables Smart Mode for SERCOM0 I2C.

Parameters
smart_mode- true to enable, false to disable.
Returns
None.

◆ SERCOM0_I2CM_GetBusStatus()

uint32_t SERCOM0_I2CM_GetBusStatus ( void )

Gets SERCOM0 I2C bus status, reads the status register.

Parameters
None.
Returns
I2C_EVENT - I2C Events.

◆ SERCOM0_I2CM_GetSyncBusyStatus()

uint8_t SERCOM0_I2CM_GetSyncBusyStatus ( void )

Gets the synchronization busy status for SERCOM0 I2C.

Parameters
None.
Returns
Synchronization busy status.

◆ SERCOM0_I2CM_ReceiveData()

uint8_t SERCOM0_I2CM_ReceiveData ( void )

Receives a data byte from the SERCOM0 I2C bus.

Parameters
None.
Returns
Received data byte.

◆ SERCOM0_I2CM_ResetSoftware()

void SERCOM0_I2CM_ResetSoftware ( void )

Performs a software reset of the SERCOM0 I2C peripheral.

Parameters
None.
Returns
None.

◆ SERCOM0_I2CM_SendAddress()

void SERCOM0_I2CM_SendAddress ( uint32_t address,
bool direction )

Sends an I2C address on the SERCOM0 bus.

Parameters
address- I2C address to send.
direction- true for read, false for write.
Returns
None.

◆ SERCOM0_I2CM_SendData()

void SERCOM0_I2CM_SendData ( uint8_t data)

Sends a data byte on the SERCOM0 I2C bus.

Parameters
data- Data byte to send.
Returns
None.

◆ SERCOM0_I2CM_SendStop()

void SERCOM0_I2CM_SendStop ( void )

Sends a STOP condition on the SERCOM0 I2C bus.

Parameters
None.
Returns
None.

◆ SERCOM0_I2CM_SetAckAction()

void SERCOM0_I2CM_SetAckAction ( I2C_HOST_ACK_ACTION ack_action)

Sets the ACK action for SERCOM0 I2C.

Parameters
ack_action- ACK action configuration.
Returns
None.

◆ SERCOM0_I2CM_SetBaudRate()

I2C_HOST_HWREG_STATUS SERCOM0_I2CM_SetBaudRate ( uint32_t srcClkFreq,
uint32_t i2cClkSpeed )

Sets the SERCOM0 I2C baud rate.

Precondition
This register written in this API is enable-protected; the SERCOM0 I2C module must be disabled before writing to calling this API.
Parameters
srcClkFreq- System clock frequency in Hz.
i2cClkSpeed- Desired I2C clock speed in Hz.
Returns
I2C_HWREG_STATUS - Status of the baud rate configuration.

◆ SERCOM0_I2CM_SetCallbackHandler()

void SERCOM0_I2CM_SetCallbackHandler ( SERCOM_I2C_CALLBACK_HANDLER callback)

Sets the callback handler for SERCOM0 I2C events.

Parameters
callback- Function pointer to the callback handler.
Returns
None.

◆ SERCOM0_I2CM_SetIdle()

void SERCOM0_I2CM_SetIdle ( void )

Sets the SERCOM0 I2C peripheral to idle state.

Parameters
None.
Returns
None.

◆ SERCOM0_I2CM_SetInterruptHandler()

void SERCOM0_I2CM_SetInterruptHandler ( void )

Assigns the interrupt handler for SERCOM0 I2C.

Note
Call this API when the SERCOM0 I2C interrupt is enabled.
Parameters
None.
Returns
None.

◆ SERCOM0_I2CM_SetOperatingMode()

void SERCOM0_I2CM_SetOperatingMode ( void )

Sets the operating mode for SERCOM0 I2C.

Parameters
mode- Operating mode (master or slave).
Returns
None.

◆ SERCOM0_I2CM_SetSCLCLockStretchMode()

void SERCOM0_I2CM_SetSCLCLockStretchMode ( I2C_HOST_SCL_CLK_STRETCH_MODE clock_stretch_mode)

Sets the SCL clock stretch mode for SERCOM0 I2C.

Parameters
clock_stretch_mode- SCL clock stretch mode configuration.
Returns
None.

◆ SERCOM0_I2CM_SetSDAHoldTime()

void SERCOM0_I2CM_SetSDAHoldTime ( I2C_HOST_SDA_HOLD_TIME hold_time)

Sets the SDA hold time for SERCOM0 I2C.

Parameters
hold_time- SDA hold time configuration.
Returns
None.

◆ SERCOM0_I2CM_SetTransferSpeed()

void SERCOM0_I2CM_SetTransferSpeed ( I2C_HOST_TRANSFER_SPEED_MODE transfer_speed)

Sets the I2C transfer speed mode for SERCOM0.

Parameters
transfer_speed- Transfer speed mode (e.g., standard, fast, fastplus).
Returns
None.

◆ SERCOM0_I2CS_ClearInterruptFlags()

void SERCOM0_I2CS_ClearInterruptFlags ( I2C_CLIENT_INTFLAG interrupt_flags)

Clears specific I2C client interrupt flags.

Parameters
interrupt_flagsInterrupt flag mask.

◆ SERCOM0_I2CS_Disable()

void SERCOM0_I2CS_Disable ( void )

Disables the SERCOM0 I2C client peripheral.

◆ SERCOM0_I2CS_DisableInterrupts()

void SERCOM0_I2CS_DisableInterrupts ( I2C_CLIENT_INTERRUPT interrupts)

Disables specific I2C client interrupts.

Parameters
interruptsInterrupt mask.

◆ SERCOM0_I2CS_Enable()

void SERCOM0_I2CS_Enable ( void )

Enables the SERCOM0 I2C client peripheral.

◆ SERCOM0_I2CS_EnableInterrupts()

void SERCOM0_I2CS_EnableInterrupts ( I2C_CLIENT_INTERRUPT interrupts)

Enables specific I2C client interrupts.

Parameters
interruptsInterrupt mask.

◆ SERCOM0_I2CS_GetBusStatus()

I2C_CLIENT_TRANSFER_EVENT SERCOM0_I2CS_GetBusStatus ( void )

Get current I2C bus status for SERCOM0.

Returns
Current bus event.

◆ SERCOM0_I2CS_GetError()

uint32_t SERCOM0_I2CS_GetError ( void )

Gets and clears error status for the I2C client.

Returns
Error status bits.

◆ SERCOM0_I2CS_GetLastByteAckStatus()

I2C_CLIENT_ACK_STATUS SERCOM0_I2CS_GetLastByteAckStatus ( void )

Gets the ACK/NACK status for the last data packet sent.

Returns
ACK/NACK status enum value.

◆ SERCOM0_I2CS_GetTransferDirection()

I2C_CLIENT_DIR SERCOM0_I2CS_GetTransferDirection ( void )

Gets the current transfer direction (read/write).

Returns
Transfer direction enum value.

◆ SERCOM0_I2CS_ReceiveData()

uint8_t SERCOM0_I2CS_ReceiveData ( void )

Reads a byte of data from the I2C client.

Returns
Received data byte.

◆ SERCOM0_I2CS_ResetSoftware()

void SERCOM0_I2CS_ResetSoftware ( void )

Resets the SERCOM0 I2C client peripheral.

◆ SERCOM0_I2CS_SendData()

void SERCOM0_I2CS_SendData ( uint8_t data)

Writes a byte of data to the I2C client.

Parameters
dataData byte to send.

◆ SERCOM0_I2CS_Set7bitAddress()

void SERCOM0_I2CS_Set7bitAddress ( uint8_t addr)

Sets the I2C client address.

Parameters
addr7-bit I2C address.
Precondition
SERCOM0 module must be disabled before calling this API.

◆ SERCOM0_I2CS_Set7bitAddressMask()

void SERCOM0_I2CS_Set7bitAddressMask ( uint8_t addr_mask)

Sets the I2C client address mask.

Parameters
addr_mask7-bit address mask.
Precondition
SERCOM0 module must be disabled before calling this API.

◆ SERCOM0_I2CS_SetCommand()

void SERCOM0_I2CS_SetCommand ( I2C_CLIENT_COMMAND command)

Sets a command for the I2C client.

Parameters
commandCommand enum value.

◆ SERCOM0_I2CS_SetGeneralCall()

void SERCOM0_I2CS_SetGeneralCall ( bool value)

Enables or disables general call address recognition.

Parameters
valuetrue to enable, false to disable.

◆ SERCOM0_I2CS_SetOperatingMode()

void SERCOM0_I2CS_SetOperatingMode ( void )

Sets up the SERCOM0 I2C client mode.

Precondition
SERCOM0 module must be disabled before calling this API.

◆ SERCOM0_SPI_BufferIsOverflow()

bool SERCOM0_SPI_BufferIsOverflow ( void )

Checks for SPI buffer overflow.

Returns
true if a buffer overflow has occurred, false otherwise.

This function indicates whether a buffer overflow condition has occurred.

◆ SERCOM0_SPI_ClearBufferOverflow()

void SERCOM0_SPI_ClearBufferOverflow ( void )

Clears the SPI buffer overflow flag.

This function clears the buffer overflow condition in the SPI module.

◆ SERCOM0_SPI_ClearInterruptFlag()

void SERCOM0_SPI_ClearInterruptFlag ( SPI_INTERRUPT_FLAG flag)

Clears the specified SPI interrupt flag.

Parameters
flagInterrupt flag to clear.

◆ SERCOM0_SPI_Disable()

void SERCOM0_SPI_Disable ( void )

Disables the SERCOM0 SPI peripheral.

This function clears the enable bit in the SPI control register and waits for synchronization to complete.

◆ SERCOM0_SPI_DisableInterrupt()

void SERCOM0_SPI_DisableInterrupt ( SPI_INTERRUPT_SOURCE src)

Disables a specific SPI interrupt source.

Parameters
srcThe interrupt source to disable.

This function disables the specified SPI interrupt.

◆ SERCOM0_SPI_DisableReceiver()

void SERCOM0_SPI_DisableReceiver ( void )

Disables the SPI receiver.

This function clears the receiver enable bit and waits for synchronization to complete.

◆ SERCOM0_SPI_Enable()

void SERCOM0_SPI_Enable ( void )

Enables the SERCOM0 SPI peripheral.

This function sets the enable bit in the SPI control register and waits for synchronization to complete.

◆ SERCOM0_SPI_EnableHardwareSS()

void SERCOM0_SPI_EnableHardwareSS ( bool enable)

Enables or disables hardware slave select (SS) management.

Parameters
enableIf true, enables hardware SS; otherwise, disables.

◆ SERCOM0_SPI_EnableInterrupt()

void SERCOM0_SPI_EnableInterrupt ( SPI_INTERRUPT_SOURCE src)

Enables a specific SPI interrupt source.

Parameters
srcThe interrupt source to enable.

This function enables the specified SPI interrupt.

◆ SERCOM0_SPI_EnablePreload()

void SERCOM0_SPI_EnablePreload ( bool enable)

Enables or disables SPI preload feature.

Parameters
enableIf true, enables preload; otherwise, disables.

◆ SERCOM0_SPI_EnableReceiver()

void SERCOM0_SPI_EnableReceiver ( void )

Enables the SPI receiver.

This function sets the receiver enable bit and waits for synchronization to complete.

◆ SERCOM0_SPI_EnableSSLowDetect()

void SERCOM0_SPI_EnableSSLowDetect ( bool enable)

Enables or disables slave select low detect.

Parameters
enableIf true, enables SS low detect; otherwise, disables.

◆ SERCOM0_SPI_GetBusSpeed()

uint32_t SERCOM0_SPI_GetBusSpeed ( uint32_t clk_frequency)

Returns the SPI bus speed.

Parameters
clk_frequencyThe input clock frequency in Hertz (Hz) supplied to the SPI peripheral.
Returns
The calculated SPI bus speed in Hertz (Hz).

This function computes and returns the actual SPI bus speed (in Hz) for the SPI peripheral.

◆ SERCOM0_SPI_InterruptFlagIsSet()

bool SERCOM0_SPI_InterruptFlagIsSet ( SPI_INTERRUPT_FLAG flag)

Checks if the specified SPI interrupt flag is set.

Parameters
flagInterrupt flag to check.
Returns
True if the flag is set, false otherwise.

◆ SERCOM0_SPI_Receive()

uint16_t SERCOM0_SPI_Receive ( void )

Reads data from the SPI bus.

Returns
The 16-bit data received from the SPI bus.

This function reads and returns data received from the SPI bus.

◆ SERCOM0_SPI_ResetSoftware()

void SERCOM0_SPI_ResetSoftware ( void )

Performs a software reset of the SERCOM0 SPI peripheral.

This function sets the software reset bit and waits for synchronization to complete.

◆ SERCOM0_SPI_RxIsReady()

bool SERCOM0_SPI_RxIsReady ( void )

Checks if the SPI receive buffer is ready.

Returns
true if data is available to read, false otherwise.

This function indicates whether the SPI receive buffer has unread data.

◆ SERCOM0_SPI_Send()

void SERCOM0_SPI_Send ( uint16_t data)

Writes data to the SPI bus.

Parameters
dataThe 16-bit data to be transmitted.

This function transmits the specified data over the SPI bus.

◆ SERCOM0_SPI_SetAddressMode()

void SERCOM0_SPI_SetAddressMode ( SPI_ADDRESS_MODE mode)

Sets the SPI address mode.

Parameters
modeAddress mode to be set.

◆ SERCOM0_SPI_SetBusSpeed()

SPI_HWREG_STATUS SERCOM0_SPI_SetBusSpeed ( uint32_t bus_speed,
uint32_t clk_frequency )

Sets the SPI bus speed.

Parameters
bus_speedDesired SPI bus speed in Hz.
clk_frequencyClock frequency in Hz.
Returns
SPI_HWREG_STATUS Status of the operation.

This function calculates and sets the baud rate for the SPI peripheral. Returns SPI_HWREG_INVALID_PARAM if bus_speed is zero, clk_frequency is zero, or if bus_speed exceeds clk_frequency.

◆ SERCOM0_SPI_SetCallbackHandler()

void SERCOM0_SPI_SetCallbackHandler ( SERCOM_SPI_CALLBACK cb)

Registers a callback function for SPI interrupts.

Parameters
cbCallback function to be registered.

◆ SERCOM0_SPI_SetCharacterSize()

void SERCOM0_SPI_SetCharacterSize ( SERCOM_SPI_CHSIZE chsize)

Sets the character size for the SERCOM0 SPI module.

Parameters
chsizeThe desired character size. This should be a value from the SERCOM_SPI_CHSIZE enumeration (e.g., SPI_CHSIZE_8BIT or SPI_CHSIZE_9BIT).
Returns
None.

◆ SERCOM0_SPI_SetClockPhase()

void SERCOM0_SPI_SetClockPhase ( bool cpha_trailing)

Sets the SPI clock phase.

Parameters
cpha_trailingIf true, sets clock phase to trailing edge; otherwise, leading edge.

◆ SERCOM0_SPI_SetClockPolarity()

void SERCOM0_SPI_SetClockPolarity ( bool cpol_high)

Sets the SPI clock polarity.

Parameters
cpol_highIf true, sets clock polarity to high when idle; otherwise, low.

◆ SERCOM0_SPI_SetDataOrder()

void SERCOM0_SPI_SetDataOrder ( bool lsb_first)

Sets the SPI data order.

Parameters
lsb_firstIf true, sets data order to LSB first; otherwise, MSB first.

◆ SERCOM0_SPI_SetImmediateBufferOverflow()

void SERCOM0_SPI_SetImmediateBufferOverflow ( bool immediate)

Sets immediate buffer overflow behavior.

Parameters
immediateIf true, enables immediate buffer overflow; otherwise, disables.

◆ SERCOM0_SPI_SetInterruptHandler()

void SERCOM0_SPI_SetInterruptHandler ( void )

Assigns the interrupt handler for SERCOM0 SPI.

Note
Call this API when the SERCOM0 SPI interrupt is enabled.

◆ SERCOM0_SPI_SetOperatingMode()

void SERCOM0_SPI_SetOperatingMode ( SPI_OPERATING_MODE mode)

Sets the SPI operating mode.

Parameters
modeSPI operating mode (master, slave, etc.).

◆ SERCOM0_SPI_SetPinOut()

void SERCOM0_SPI_SetPinOut ( SPI_DATAIN_PIN dipo,
SPI_DATAOUT_PIN dopo )

Set SERCOM0 SPI data in (DIPO) and data out (DOPO) pinout.

Parameters
dipoData in pin selection (SPI_DATAIN_PIN).
dopoData out pin selection (SPI_DATAOUT_PIN).
Returns
None.
Note
SERCOM0 SPI must be disabled before calling.

◆ SERCOM0_SPI_SetRunInStandby()

void SERCOM0_SPI_SetRunInStandby ( bool run_stdby)

Sets the SPI to run in standby mode.

Parameters
run_stdbyIf true, enables run in standby; otherwise, disables.

◆ SERCOM0_SPI_TxIsReady()

bool SERCOM0_SPI_TxIsReady ( void )

Checks if the SPI transmit buffer is ready.

Returns
true if ready to transmit, false otherwise.

This function indicates whether the SPI transmit buffer is ready for new data.

◆ SERCOM0_USART_Disable()

void SERCOM0_USART_Disable ( void )

Disables the SERCOM USART peripheral.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_DisableDataRegEmptyInterrupt()

void SERCOM0_USART_DisableDataRegEmptyInterrupt ( void )

Disables the data register empty interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_DisableErrorInterrupt()

void SERCOM0_USART_DisableErrorInterrupt ( void )

Disables the error interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_DisableReceiver()

void SERCOM0_USART_DisableReceiver ( void )

Disables the USART receiver.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_DisableRxCompleteInterrupt()

void SERCOM0_USART_DisableRxCompleteInterrupt ( void )

Disables the receive complete interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_DisableTransmitter()

void SERCOM0_USART_DisableTransmitter ( void )

Disables the USART transmitter.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_DisableTxCompleteInterrupt()

void SERCOM0_USART_DisableTxCompleteInterrupt ( void )

Disables the transmit complete interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_Enable()

void SERCOM0_USART_Enable ( void )

Enables the SERCOM USART peripheral.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_EnableCollisionDetection()

void SERCOM0_USART_EnableCollisionDetection ( bool collision_detection)

Enables or disables collision detection.

Parameters
collision_detection- true to enable, false to disable.
Returns
None.

◆ SERCOM0_USART_EnableDataRegEmptyInterrupt()

void SERCOM0_USART_EnableDataRegEmptyInterrupt ( void )

Enables the data register empty interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_EnableErrorInterrupt()

void SERCOM0_USART_EnableErrorInterrupt ( void )

Enables the error interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_EnableReceiver()

void SERCOM0_USART_EnableReceiver ( void )

Enables the USART receiver.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_EnableRxCompleteInterrupt()

void SERCOM0_USART_EnableRxCompleteInterrupt ( void )

Enables the receive complete interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_EnableTransmitter()

void SERCOM0_USART_EnableTransmitter ( void )

Enables the USART transmitter.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_EnableTxCompleteInterrupt()

void SERCOM0_USART_EnableTxCompleteInterrupt ( void )

Enables the transmit complete interrupt.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_ErrorGet()

USART_ERROR SERCOM0_USART_ErrorGet ( void )

Gets the current USART error status and clears it.

Parameters
None.
Returns
The current error status (see USART_ERROR).

◆ SERCOM0_USART_Receive()

uint8_t SERCOM0_USART_Receive ( void )

Receives a byte of data from USART.

Parameters
None.
Returns
Received byte.

◆ SERCOM0_USART_Receive9Bit()

uint16_t SERCOM0_USART_Receive9Bit ( void )

Receives 9-bit data from USART.

Parameters
None.
Returns
Received 9-bit data.

◆ SERCOM0_USART_ResetSoftware()

void SERCOM0_USART_ResetSoftware ( void )

Performs a software reset of the USART peripheral.

Parameters
None.
Returns
None.

◆ SERCOM0_USART_RxIsReady()

bool SERCOM0_USART_RxIsReady ( void )

Checks if the USART receiver is ready.

Parameters
None.
Returns
true if receiver is ready, false otherwise.

◆ SERCOM0_USART_Send()

void SERCOM0_USART_Send ( uint8_t data)

Sends a byte of data via USART.

Parameters
data- Byte to send.
Returns
None.

◆ SERCOM0_USART_Send9Bit()

void SERCOM0_USART_Send9Bit ( uint16_t data)

Sends 9-bit data via USART.

Parameters
data- 9-bit data to send.
Returns
None.

◆ SERCOM0_USART_SetBaudrate()

USART_HWREG_STATUS SERCOM0_USART_SetBaudrate ( uint32_t baud,
uint32_t clk_frequency )

Sets the USART baud rate.

Parameters
baud- Desired baud rate.
clk_frequency- Clock frequency in Hz.
Returns
Status - of the operation (see USART_HWREG_STATUS).

◆ SERCOM0_USART_SetCallbackHandler()

void SERCOM0_USART_SetCallbackHandler ( SERCOM_USART_CALLBACK_HANDLER callback)

Registers callback for the USART interrupt events.

Parameters
callback- Pointer to the callback function.
Returns
None.

◆ SERCOM0_USART_SetCommunicationMode()

void SERCOM0_USART_SetCommunicationMode ( USART_COMM_MODE comm_mode)

Sets the USART communication mode.

Parameters
comm_mode- The desired communication mode (see USART_COMM_MODE).
Returns
None.

◆ SERCOM0_USART_SetDataOrder()

void SERCOM0_USART_SetDataOrder ( USART_DATA_ORDER data_order)

Sets the USART data order.

Parameters
data_order- The desired data order (see USART_DATA_ORDER).
Returns
None.

◆ SERCOM0_USART_SetDataSize()

void SERCOM0_USART_SetDataSize ( USART_CHARSIZE char_size)

Sets the USART data size.

Parameters
char_size- The desired character size (see USART_CHARSIZE).
Returns
None.

◆ SERCOM0_USART_SetFrameFormat()

void SERCOM0_USART_SetFrameFormat ( USART_FRAME_FORMAT frame_format)

Sets the USART frame format.

Parameters
frame_format- The desired frame format (see USART_FRAME_FORMAT).
Returns
None.

◆ SERCOM0_USART_SetInterruptHandler()

void SERCOM0_USART_SetInterruptHandler ( void )

Assigns the interrupt handler for SERCOM0 USART.

Note
Call this API when the SERCOM0 USART interrupt is enabled.

◆ SERCOM0_USART_SetOperatingMode()

void SERCOM0_USART_SetOperatingMode ( USART_OPMODE mode)

Sets the USART operating mode.

Parameters
mode- The desired operating mode (see USART_OPMODE).
Returns
None.

◆ SERCOM0_USART_SetParityMode()

void SERCOM0_USART_SetParityMode ( USART_PARITY_MODE parity)

Sets the USART parity mode.

Parameters
parity- The desired parity mode (see USART_PARITY_MODE).
Returns
None.

◆ SERCOM0_USART_SetRxDataPinout()

void SERCOM0_USART_SetRxDataPinout ( USART_RXDATA_PINOUT rx_pinout)

Sets the USART RX data pinout.

Parameters
rx_pinout- The desired RX pinout (see USART_RXDATA_PINOUT).
Returns
None.

◆ SERCOM0_USART_SetStopBits()

void SERCOM0_USART_SetStopBits ( USART_STOPBITS stop_bits)

Sets the USART stop bits.

Parameters
stop_bits- The desired number of stop bits (see USART_STOPBITS).
Returns
None.

◆ SERCOM0_USART_SetTxDataPinout()

void SERCOM0_USART_SetTxDataPinout ( USART_TXDATA_PINOUT tx_pinout)

Sets the USART TX data pinout.

Parameters
tx_pinout- The desired TX pinout (see USART_TXDATA_PINOUT).
Returns
None.

◆ SERCOM0_USART_TxIsDone()

bool SERCOM0_USART_TxIsDone ( void )

Checks if the USART transmission is complete.

Parameters
None.
Returns
true if transmission is complete, false otherwise.

◆ SERCOM0_USART_TxIsReady()

bool SERCOM0_USART_TxIsReady ( void )

Checks if the USART transmitter is ready.

Parameters
None.
Returns
true if transmitter is ready, false otherwise.

Variable Documentation

◆ SERCOM0_InterruptHandler

volatile SERCOM_INTERRUPT_HANDLER SERCOM0_InterruptHandler
extern

Interrupt handler for SERCOM0 peripheral.

This variable holds the function pointer to the current interrupt handler for the SERCOM0 module. It should be assigned to a function that matches the SERCOM_INTERRUPT_HANDLER signature. The variable is declared as volatile because it may be modified by interrupt service routines.