When looking at the datasheet for SAM E70, it shows the support for LIN. It says to set USART_MR.USART_MODE = 0xA or 0xB, depending on weather it is a Master or Slave.
USART_MR.USART_MODE from the datasheet.
0x0 NORMAL
0x1 RS485
0x2 HW_HANDSHAKING
0x3 MODEM
0x4 IS07816_T_0
0x6 IS07816_T_1
0x8 IRDA IrDA
0x9 LON
0xA LIN_MASTER
0xB LIN_SLAVE
0xE SPI_MASTER
0xF SPI_SLAVE
When looking at the USART Mode register in the usart.h file, these are the definitions for that register.
/* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */
#define US_MR_USART_MODE_Pos 0
#define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) USART Mode of Operation */
#define US_MR_USART_MODE(value) ((US_MR_USART_MODE_Msk & ((value) << US_MR_USART_MODE_Pos)))
#define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */
#define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */
#define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */
#define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */
#define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */
#define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */
#define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */
#define US_MR_USART_MODE_LON (0x9u << 0) /**< \brief (US_MR) LON */
#define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI master */
#define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */
It is missing LIN_SLAVE and LIN_MASTER. Why is there support for LIN in the datasheet but the software is missing the LIN support for that register?
Thanks