I am using LPUART0 in multiplexed UART mode, with an external 10K resistor pulling up to 3.3V. After configuring it as a single-wire UART, I am unable to send data. Please help me troubleshoot this issue.
void LPUART0_init(void)
{
PCC->PCCn[PCC_LPUART0_INDEX] &= ~PCC_PCCn_CGC_MASK;
PCC->PCCn[PCC_LPUART0_INDEX] |= PCC_PCCn_PCS(0b010) | PCC_PCCn_CGC_MASK;
LPUART0->BAUD = LPUART_BAUD_OSR(15) | LPUART_BAUD_SBR(52);
uint32_t ctrl_value = 0;
ctrl_value |= LPUART_CTRL_LOOPS_MASK; // LOOPS = 1
ctrl_value |= LPUART_CTRL_RSRC_MASK; // Rsrc=1
ctrl_value |= LPUART_CTRL_TE_MASK; // TE = 1
ctrl_value |= LPUART_CTRL_RE_MASK; // RE = 1
ctrl_value |= LPUART_CTRL_RIE_MASK; // RIE = 1(如需要)
LPUART0->CTRL = ctrl_value; // 一次性赋值
}
PB1配置为:
PORTB->PCR[1] = PORT_PCR_MUX(2);
发送时,先将TXDIR置位,发送完成再复位:
LPUART0->CTRL |= LPUART_CTRL_TXDIR_MASK;
发送数据
LPUART0->CTRL &= ~LPUART_CTRL_TXDIR_MASK;