67#ifndef US_WPMR_WPKEY_PASSWD
68#define US_WPMR_WPKEY_PASSWD US_WPMR_WPKEY(0x555341U)
71#ifndef US_WPMR_WPKEY_PASSWD
72# define US_WPMR_WPKEY_PASSWD US_WPMR_WPKEY(US_WPKEY_VALUE)
76#define MIN_CD_VALUE 0x01
77#define MIN_CD_VALUE_SPI 0x04
78#define MAX_CD_VALUE US_BRGR_CD_Msk
81#define HIGH_FRQ_SAMPLE_DIV 16
82#define LOW_FRQ_SAMPLE_DIV 8
85#define MAX_TRAN_GUARD_TIME US_TTGR_TG_Msk
88#define USART_PARITY_ERROR 5
112 uint32_t baudrate, uint32_t ul_mck)
127 cd_fp = (8 * ul_mck + (over * baudrate) / 2) / (over * baudrate);
160 uint32_t baudrate, uint32_t ul_mck)
165 cd = (ul_mck + baudrate / 2) / baudrate;
207 uint32_t baudrate, uint32_t ul_mck)
212 cd = (ul_mck + baudrate / 2) / baudrate;
257#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E)
277 static uint32_t ul_reg_val;
296 p_usart->
US_MR |= ul_reg_val;
328#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E)
349#if (SAM3S || SAM4S || SAM4E)
355#elif (SAM3U || SAM4L)
389 static uint32_t ul_reg_val;
407 p_usart->
US_MR |= ul_reg_val;
426 static uint32_t ul_reg_val;
445 p_usart->
US_MR |= ul_reg_val;
477#if (!SAMG55 && !SAMV71 && !SAMV70 && !SAME70 && !SAMS70)
509#if (!SAMV71 && !SAMV70 && !SAME70 && !SAMS70)
525 uint32_t clock, uint32_t ul_mck)
530 cd = (ul_mck + clock / 2) / clock;
560 static uint32_t ul_reg_val;
613 p_usart->
US_MR |= ul_reg_val;
721 static uint32_t ul_reg_val;
766 p_usart->
US_MR |= ul_reg_val;
785 static uint32_t ul_reg_val;
829 p_usart->
US_MR |= ul_reg_val;
834#if (SAM3XA || SAM4L || SAMG55 || SAMV71 || SAMV70 || SAME70 || SAMS70)
848uint32_t usart_init_lin_master(
Usart *p_usart,uint32_t ul_baudrate,
861 US_MR_USART_MODE_LIN_MASTER;
881uint32_t usart_init_lin_slave(
Usart *p_usart, uint32_t ul_baudrate,
892 US_MR_USART_MODE_LIN_SLAVE;
907void usart_lin_abort_tx(
Usart *p_usart)
909 p_usart->
US_CR = US_CR_LINABT;
917void usart_lin_send_wakeup_signal(
Usart *p_usart)
919 p_usart->
US_CR = US_CR_LINWKUP;
929void usart_lin_set_node_action(
Usart *p_usart, uint8_t uc_action)
931 p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_NACT_Msk) |
932 (uc_action << US_LINMR_NACT_Pos);
940void usart_lin_disable_parity(
Usart *p_usart)
942 p_usart->US_LINMR |= US_LINMR_PARDIS;
950void usart_lin_enable_parity(
Usart *p_usart)
952 p_usart->US_LINMR &= ~US_LINMR_PARDIS;
960void usart_lin_disable_checksum(
Usart *p_usart)
962 p_usart->US_LINMR |= US_LINMR_CHKDIS;
970void usart_lin_enable_checksum(
Usart *p_usart)
972 p_usart->US_LINMR &= ~US_LINMR_CHKDIS;
982void usart_lin_set_checksum_type(
Usart *p_usart, uint8_t uc_type)
984 p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_CHKTYP) |
996void usart_lin_set_data_len_mode(
Usart *p_usart, uint8_t uc_mode)
998 p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_DLM) |
1007void usart_lin_disable_frame_slot(
Usart *p_usart)
1009 p_usart->US_LINMR |= US_LINMR_FSDIS;
1017void usart_lin_enable_frame_slot(
Usart *p_usart)
1019 p_usart->US_LINMR &= ~US_LINMR_FSDIS;
1029void usart_lin_set_wakeup_signal_type(
Usart *p_usart, uint8_t uc_type)
1031 p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_WKUPTYP) |
1042void usart_lin_set_response_data_len(
Usart *p_usart, uint8_t uc_len)
1044 p_usart->US_LINMR = (p_usart->US_LINMR & ~US_LINMR_DLC_Msk) |
1045 ((uc_len - 1) << US_LINMR_DLC_Pos);
1053void usart_lin_disable_pdc_mode(
Usart *p_usart)
1055 p_usart->US_LINMR &= ~US_LINMR_PDCM;
1063void usart_lin_enable_pdc_mode(
Usart *p_usart)
1065 p_usart->US_LINMR |= US_LINMR_PDCM;
1074void usart_lin_set_tx_identifier(
Usart *p_usart, uint8_t uc_id)
1076 p_usart->US_LINIR = (p_usart->US_LINIR & ~US_LINIR_IDCHR_Msk) |
1077 US_LINIR_IDCHR(uc_id);
1088uint8_t usart_lin_read_identifier(
Usart *p_usart)
1090 return (p_usart->US_LINIR & US_LINIR_IDCHR_Msk);
1100uint8_t usart_lin_get_data_length(
Usart *usart)
1102 if (usart->US_LINMR & US_LINMR_DLM) {
1103 uint8_t data_length = 1 << ((usart->US_LINIR >>
1104 (US_LINIR_IDCHR_Pos + 4)) & 0x03);
1107 return ((usart->US_LINMR & US_LINMR_DLC_Msk) >> US_LINMR_DLC_Pos) + 1;
1113#if (SAMV71 || SAMV70 || SAME70 || SAMS70)
1123uint8_t usart_lin_identifier_send_complete(
Usart *usart)
1125 return (usart->
US_CSR & US_CSR_LINID) > 0;
1137uint8_t usart_lin_identifier_reception_complete(
Usart *usart)
1139 return (usart->
US_CSR & US_CSR_LINID) > 0;
1151uint8_t usart_lin_tx_complete(
Usart *usart)
1153 return (usart->
US_CSR & US_CSR_LINTC) > 0;
1168uint32_t usart_init_lon(
Usart *p_usart,uint32_t ul_baudrate,
1181 US_MR_USART_MODE_LON;
1196void usart_lon_set_comm_type(
Usart *p_usart, uint8_t uc_type)
1198 p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_COMMT) |
1207void usart_lon_disable_coll_detection(
Usart *p_usart)
1209 p_usart->US_LONMR |= US_LONMR_COLDET;
1217void usart_lon_enable_coll_detection(
Usart *p_usart)
1219 p_usart->US_LONMR &= ~US_LONMR_COLDET;
1229void usart_lon_set_tcol(
Usart *p_usart, uint8_t uc_type)
1231 p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_TCOL) |
1242void usart_lon_set_cdtail(
Usart *p_usart, uint8_t uc_type)
1244 p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_CDTAIL) |
1255void usart_lon_set_dmam(
Usart *p_usart, uint8_t uc_type)
1257 p_usart->US_LONMR = (p_usart->US_LONMR & ~US_LONMR_DMAM) |
1267void usart_lon_set_beta1_tx_len(
Usart *p_usart, uint32_t ul_len)
1269 p_usart->US_LONB1TX = US_LONB1TX_BETA1TX(ul_len);
1278void usart_lon_set_beta1_rx_len(
Usart *p_usart, uint32_t ul_len)
1280 p_usart->US_LONB1RX = US_LONB1RX_BETA1RX(ul_len);
1290void usart_lon_set_priority(
Usart *p_usart, uint8_t uc_psnb, uint8_t uc_nps)
1292 p_usart->US_LONPRIO = US_LONPRIO_PSNB(uc_psnb) | US_LONPRIO_NPS(uc_nps);
1301void usart_lon_set_tx_idt(
Usart *p_usart, uint32_t ul_time)
1303 p_usart->US_IDTTX = US_IDTTX_IDTTX(ul_time);
1312void usart_lon_set_rx_idt(
Usart *p_usart, uint32_t ul_time)
1314 p_usart->US_IDTRX = US_IDTRX_IDTRX(ul_time);
1323void usart_lon_set_pre_len(
Usart *p_usart, uint32_t ul_len)
1325 p_usart->US_LONPR = US_LONPR_LONPL(ul_len);
1334void usart_lon_set_data_len(
Usart *p_usart, uint8_t uc_len)
1336 p_usart->US_LONDL = US_LONDL_LONDL(uc_len);
1347void usart_lon_set_l2hdr(
Usart *p_usart, uint8_t uc_bli, uint8_t uc_altp, uint8_t uc_pb)
1349 p_usart->US_LONL2HDR = US_LONL2HDR_BLI(uc_bli) | (uc_altp << 6) | (uc_pb << 7);
1360uint32_t usart_lon_is_tx_end(
Usart *p_usart)
1362 return (p_usart->
US_CSR & US_CSR_LTXD) > 0;
1373uint32_t usart_lon_is_rx_end(
Usart *p_usart)
1375 return (p_usart->
US_CSR & US_CSR_LRXD) > 0;
1471 p_usart->
US_IER = ul_sources;
1482 p_usart->
US_IDR = ul_sources;
1585#if (SAM3S || SAM4S || SAM3U || SAM4L || SAM4E)
1743 while (*
string !=
'\0') {
1793#if (SAM3XA || SAM3U)
1801uint32_t *usart_get_tx_access(
Usart *p_usart)
1803 return (uint32_t *)&(p_usart->
US_THR);
1813uint32_t *usart_get_rx_access(
Usart *p_usart)
1815 return (uint32_t *)&(p_usart->
US_RHR);
1819#if (!SAM4L && !SAMV71 && !SAMV70 && !SAME70 && !SAMS70)
1831 p_pdc_base = (Pdc *)NULL;
1834 if (p_usart == USART) {
1835 p_pdc_base = PDC_USART;
1846 else if (p_usart ==
USART1) {
1852 else if (p_usart == USART2) {
1853 p_pdc_base = PDC_USART2;
1858 else if (p_usart == USART3) {
1859 p_pdc_base = PDC_USART3;
1864 else if (p_usart == USART4) {
1865 p_pdc_base = PDC_USART4;
1870 else if (p_usart == USART5) {
1871 p_pdc_base = PDC_USART5;
1876 else if (p_usart == USART6) {
1877 p_pdc_base = PDC_USART6;
1882 else if (p_usart == USART7) {
1883 p_pdc_base = PDC_USART7;
1932#if (SAM3S || SAM4S || SAM3U || SAM3XA || SAM4L || SAM4E || SAM4C || SAM4CP || SAM4CM)
1974 (uc_polarity << 12);
2017 (uc_polarity << 28);
2046uint32_t usart_get_version(
Usart *p_usart)
2063void usart_set_sleepwalking(
Usart *p_uart, uint8_t ul_low_value,
2064 bool cmpmode,
bool cmppar, uint8_t ul_high_value)
2066 Assert(ul_low_value <= ul_high_value);
2071 temp |= US_CMPR_CMPMODE_START_CONDITION;
2075 temp |= US_CMPR_CMPPAR;
2078 temp |= US_CMPR_VAL1(ul_low_value);
2080 temp |= US_CMPR_VAL2(ul_high_value);
2082 p_uart->US_CMPR= temp;
#define US_MR_USART_MODE_RS485
(US_MR) RS485
#define US_THR_TXCHR(value)
#define US_MAN_RX_PL_Msk
(US_MAN) Receiver Preamble Length
#define US_MR_CLKO
(US_MR) Clock Output Select
#define US_CR_RTSEN
(US_CR) Request to Send Enable
#define US_MAN_TX_PL(value)
#define US_MR_MAX_ITERATION_Pos
#define US_MR_DSNACK
(US_MR) Disable Successive NACK
#define US_MAN_TX_PL_Msk
(US_MAN) Transmitter Preamble Length
#define US_CR_RSTRX
(US_CR) Reset Receiver
#define US_CR_RTSDIS
(US_CR) Request to Send Disable
#define US_CR_RETTO
(US_CR) Rearm Time-out
#define US_MR_USART_MODE_IRDA
(US_MR) IrDA
#define US_CR_STTBRK
(US_CR) Start Break
#define US_MR_USART_MODE_Msk
(US_MR) USART Mode of Operation
#define US_MAN_RX_PL(value)
#define US_MR_PAR_ODD
(US_MR) Odd parity
#define US_WPSR_WPVSRC_Msk
(US_WPSR) Write Protect Violation Source
#define US_MR_MSBF
(US_MR) Bit Order
#define US_NER_NB_ERRORS_Msk
(US_NER) Number of Errors
#define US_CR_RXDIS
(US_CR) Receiver Disable
#define US_MR_USART_MODE_IS07816_T_1
(US_MR) IS07816 Protocol: T = 1
#define US_CSR_ENDTX
(US_CSR) End of Transmitter Transfer
#define US_MAN_DRIFT
(US_MAN) Drift Compensation
#define US_CR_TXEN
(US_CR) Transmitter Enable
#define US_MR_USART_MODE_SPI_MASTER
(US_MR) SPI Master
#define US_CR_TXDIS
(US_CR) Transmitter Disable
#define US_CR_RSTIT
(US_CR) Reset Iterations
#define US_CSR_RXRDY
(US_CSR) Receiver Ready
#define US_MR_USCLKS_MCK
(US_MR) Master Clock MCK is selected
#define US_CR_SENDA
(US_CR) Send Address
#define US_MR_NBSTOP_1_BIT
(US_MR) 1 stop bit
#define US_CR_RSTSTA
(US_CR) Reset Status Bits
#define US_MAN_TX_PP_Msk
(US_MAN) Transmitter Preamble Pattern
#define US_MR_USART_MODE_IS07816_T_0
(US_MR) IS07816 Protocol: T = 0
#define US_MR_CPOL
(US_MR) SPI Clock Polarity
#define US_CR_STTTO
(US_CR) Start Time-out
#define US_MAN_TX_MPOL
(US_MAN) Transmitter Manchester Polarity
#define US_MR_USART_MODE_MODEM
(US_MR) Modem
#define US_CSR_TXEMPTY
(US_CSR) Transmitter Empty
#define US_CSR_TXRDY
(US_CSR) Transmitter Ready
#define US_MR_NBSTOP_2_BIT
(US_MR) 2 stop bits
#define US_CR_RSTTX
(US_CR) Reset Transmitter
#define US_CR_DTRDIS
(US_CR) Data Terminal Ready Disable
#define US_MR_CPHA
(US_MR) SPI Clock Phase
#define US_CR_DTREN
(US_CR) Data Terminal Ready Enable
#define US_WPMR_WPEN
(US_WPMR) Write Protect Enable
#define US_CR_RSTNACK
(US_CR) Reset Non Acknowledge
#define US_CSR_ENDRX
(US_CSR) End of Receiver Transfer
#define US_CR_STPBRK
(US_CR) Stop Break
#define US_MAN_RX_PP_Msk
(US_MAN) Receiver Preamble Pattern detected
#define US_MR_SYNC
(US_MR) Synchronous Mode Select
#define US_CR_RXEN
(US_CR) Receiver Enable
#define US_WPSR_WPVSRC_Pos
#define US_MR_PAR_MULTIDROP
(US_MR) Multidrop mode
#define US_WPSR_WPVS
(US_WPSR) Write Protect Violation Status
#define US_CR_RCS
(US_CR) Release SPI Chip Select
#define US_CSR_RXBUFF
(US_CSR) Reception Buffer Full
#define US_MR_USCLKS_SCK
(US_MR) Serial Clock SLK is selected
#define US_MR_USART_MODE_HW_HANDSHAKING
(US_MR) Hardware Handshaking
#define US_MR_USART_MODE_NORMAL
(US_MR) Normal mode
#define US_MR_USART_MODE_SPI_SLAVE
(US_MR) SPI Slave
#define US_CR_FCS
(US_CR) Force SPI Chip Select
#define US_MR_INACK
(US_MR) Inhibit Non Acknowledge
#define US_MR_OVER
(US_MR) Oversampling Mode
#define US_MR_USCLKS_Msk
(US_MR) Clock Selection
#define US_MAN_RX_MPOL
(US_MAN) Receiver Manchester Polarity
#define US_CSR_TXBUFE
(US_CSR) Transmission Buffer Empty
#define US_MR_PAR_EVEN
(US_MR) Even parity
#define US_RHR_RXCHR_Msk
(US_RHR) Received Character
#define SPI_MODE_0
SPI mode definition.
void usart_drive_DTR_pin_low(Usart *p_usart)
Drive the pin DTR to 0.
uint32_t usart_getchar(Usart *p_usart, uint32_t *c)
Read from USART Receive Holding Register.
void usart_reset_tx(Usart *p_usart)
Immediately stop and disable USART transmitter.
void usart_man_set_rx_pre_len(Usart *p_usart, uint8_t uc_len)
Configure the detected receiver preamble length when the Manchester encode/decode is enabled.
Pdc * usart_get_pdc_base(Usart *p_usart)
Get USART PDC base address.
void usart_enable_tx(Usart *p_usart)
Enable USART transmitter.
uint32_t usart_is_rx_buf_full(Usart *p_usart)
Check if both receive buffers are full.
void usart_start_rx_timeout(Usart *p_usart)
Start waiting for a character before clocking the timeout count.
void usart_drive_DTR_pin_high(Usart *p_usart)
Drive the pin DTR to 1.
uint32_t usart_init_iso7816(Usart *p_usart, const usart_iso7816_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in ISO7816 mode.
void usart_enable_interrupt(Usart *p_usart, uint32_t ul_sources)
Enable USART interrupts.
void usart_man_set_rx_pre_pattern(Usart *p_usart, uint8_t uc_pattern)
Configure the detected receiver preamble pattern when the Manchester encode/decode is enabled,...
uint32_t usart_is_tx_buf_end(Usart *p_usart)
Check if one transmit buffer is empty.
#define HIGH_FRQ_SAMPLE_DIV
static void usart_set_spi_slave_baudrate(Usart *p_usart)
Select the SCK pin as the source of baudrate for the USART SPI slave mode.
void usart_man_set_tx_pre_len(Usart *p_usart, uint8_t uc_len)
Configure the transmitter preamble length when the Manchester encode/decode is enabled.
void usart_man_set_tx_polarity(Usart *p_usart, uint8_t uc_polarity)
Configure the transmitter Manchester polarity when the Manchester encode/decode is enabled.
void usart_reset_status(Usart *p_usart)
Reset status bits (PARE, OVER, MANERR, UNRE and PXBRK in US_CSR).
uint32_t usart_get_writeprotect_status(Usart *p_usart)
Get write protect status.
uint32_t usart_send_address(Usart *p_usart, uint32_t ul_addr)
In Multidrop mode only, the next character written to the US_THR is sent with the address bit set.
#define US_WPMR_WPKEY_PASSWD
void usart_restart_rx_timeout(Usart *p_usart)
Restart the receive timeout.
uint32_t usart_init_sync_master(Usart *p_usart, const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in SYNC mode and act as a master.
void usart_man_set_tx_pre_pattern(Usart *p_usart, uint8_t uc_pattern)
Configure the transmitter preamble pattern when the Manchester encode/decode is enabled,...
void usart_set_rx_timeout(Usart *p_usart, uint32_t timeout)
Configure the receive timeout register.
void usart_reset(Usart *p_usart)
Reset the USART and disable TX and RX.
static void usart_set_sync_slave_baudrate(Usart *p_usart)
Select the SCK pin as the source of baud rate for the USART synchronous slave modes.
static uint32_t usart_set_iso7816_clock(Usart *p_usart, uint32_t clock, uint32_t ul_mck)
Calculate a clock divider (CD) for the USART ISO7816 mode to generate an ISO7816 clock as close as po...
uint32_t usart_init_rs485(Usart *p_usart, const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in RS485 mode.
void usart_set_tx_timeguard(Usart *p_usart, uint32_t timeguard)
Configure the transmit timeguard register.
void usart_drive_RTS_pin_low(Usart *p_usart)
Drive the pin RTS to 0.
void usart_reset_iterations(Usart *p_usart)
Reset the ITERATION in US_CSR when the ISO7816 mode is enabled.
void usart_enable_rx(Usart *p_usart)
Enable USART receiver.
void usart_reset_rx(Usart *p_usart)
Immediately stop and disable USART receiver.
uint32_t usart_init_hw_handshaking(Usart *p_usart, const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in hardware handshaking mode.
uint32_t usart_is_tx_buf_empty(Usart *p_usart)
Check if both transmit buffers are empty.
void usart_drive_RTS_pin_high(Usart *p_usart)
Drive the pin RTS to 1.
void usart_man_set_rx_polarity(Usart *p_usart, uint8_t uc_polarity)
Configure the receiver Manchester polarity when the Manchester encode/decode is enabled.
uint32_t usart_init_irda(Usart *p_usart, const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in IrDA mode.
void usart_man_disable_drift_compensation(Usart *p_usart)
Disable drift compensation.
uint32_t usart_is_rx_ready(Usart *p_usart)
Check if the received data are ready.
void usart_disable_interrupt(Usart *p_usart, uint32_t ul_sources)
Disable USART interrupts.
void usart_enable_writeprotect(Usart *p_usart)
Enable write protect of USART registers.
uint32_t usart_write(Usart *p_usart, uint32_t c)
Write to USART Transmit Holding Register.
static uint32_t usart_set_spi_master_baudrate(Usart *p_usart, uint32_t baudrate, uint32_t ul_mck)
Calculate a clock divider (CD) for the USART SPI master mode to generate a baud rate as close as poss...
uint32_t usart_set_async_baudrate(Usart *p_usart, uint32_t baudrate, uint32_t ul_mck)
Calculate a clock divider(CD) and a fractional part (FP) for the USART asynchronous modes to generate...
uint32_t usart_is_rx_buf_end(Usart *p_usart)
Check if one receive buffer is filled.
void usart_spi_release_chip_select(Usart *p_usart)
Drive the slave select line NSS (RTS pin) to 1 in SPI master mode.
void usart_disable_writeprotect(Usart *p_usart)
Disable write protect of USART registers.
uint32_t usart_is_tx_ready(Usart *p_usart)
Check if Transmit is Ready.
uint32_t usart_is_tx_empty(Usart *p_usart)
Check if Transmit Holding Register is empty.
static uint32_t usart_set_sync_master_baudrate(Usart *p_usart, uint32_t baudrate, uint32_t ul_mck)
Calculate a clock divider for the USART synchronous master modes to generate a baudrate as close as p...
void usart_start_tx_break(Usart *p_usart)
Start transmission of a break.
uint32_t usart_putchar(Usart *p_usart, uint32_t c)
Write to USART Transmit Holding Register.
void usart_reset_nack(Usart *p_usart)
Reset NACK in US_CSR.
uint32_t usart_init_sync_slave(Usart *p_usart, const sam_usart_opt_t *p_usart_opt)
Configure USART to work in SYNC mode and act as a slave.
void usart_disable_rx(Usart *p_usart)
Disable USART receiver.
uint8_t usart_get_error_number(Usart *p_usart)
Get the total number of errors that occur during an ISO7816 transfer.
uint32_t usart_get_status(Usart *p_usart)
Get current status.
uint32_t usart_read(Usart *p_usart, uint32_t *c)
Read from USART Receive Holding Register.
uint32_t usart_init_modem(Usart *p_usart, const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in modem mode.
void usart_man_enable_drift_compensation(Usart *p_usart)
Enable drift compensation.
uint32_t usart_init_rs232(Usart *p_usart, const sam_usart_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in RS232 mode.
void usart_disable_tx(Usart *p_usart)
Disable USART transmitter.
void usart_spi_force_chip_select(Usart *p_usart)
Drive the slave select line NSS (RTS pin) to 0 in SPI master mode.
uint32_t usart_get_interrupt_mask(Usart *p_usart)
Read USART interrupt mask.
uint32_t usart_init_spi_master(Usart *p_usart, const usart_spi_opt_t *p_usart_opt, uint32_t ul_mck)
Configure USART to work in SPI mode and act as a master.
uint32_t usart_init_spi_slave(Usart *p_usart, const usart_spi_opt_t *p_usart_opt)
Configure USART to work in SPI mode and act as a slave.
void usart_stop_tx_break(Usart *p_usart)
Stop transmission of a break.
void usart_write_line(Usart *p_usart, const char *string)
Write one-line string through USART.
#define LOW_FRQ_SAMPLE_DIV
#define PDC_USART1
(PDC_USART1) Base Address
#define PDC_USART0
(PDC_USART0) Base Address
#define USART1
(USART1 ) Base Address
#define USART0
(USART0 ) Base Address
Usart hardware registers.
__IO uint32_t US_MAN
(Usart Offset: 0x0050) Manchester Encoder Decoder Register
__I uint32_t US_WPSR
(Usart Offset: 0x00E8) Write Protect Status Register
__I uint32_t US_IMR
(Usart Offset: 0x0010) Interrupt Mask Register
__IO uint32_t US_IF
(Usart Offset: 0x004C) IrDA Filter Register
__IO uint32_t US_FIDI
(Usart Offset: 0x0040) FI DI Ratio Register
__IO uint32_t US_RTOR
(Usart Offset: 0x0024) Receiver Time-out Register
__O uint32_t US_THR
(Usart Offset: 0x001C) Transmitter Holding Register
__O uint32_t US_IDR
(Usart Offset: 0x000C) Interrupt Disable Register
__O uint32_t US_IER
(Usart Offset: 0x0008) Interrupt Enable Register
__IO uint32_t US_WPMR
(Usart Offset: 0x00E4) Write Protect Mode Register
__IO uint32_t US_TTGR
(Usart Offset: 0x0028) Transmitter Timeguard Register
__IO uint32_t US_MR
(Usart Offset: 0x0004) Mode Register
__O uint32_t US_CR
(Usart Offset: 0x0000) Control Register
__I uint32_t US_CSR
(Usart Offset: 0x0014) Channel Status Register
__IO uint32_t US_BRGR
(Usart Offset: 0x0020) Baud Rate Generator Register
__I uint32_t US_RHR
(Usart Offset: 0x0018) Receiver Holding Register
__I uint32_t US_VERSION
(Usart Offset: 0x00FC) Version Register
__I uint32_t US_NER
(Usart Offset: 0x0044) Number of Errors Register
micro definition for LIN mode of SAMV71
Universal Synchronous Asynchronous Receiver Transmitter (USART) driver for SAM.