Thread 中讨论的其他器件:UCD3138、 UCD3138064
工具/软件:
尊敬的 UCD 专家:
大家好、我最近刚接触到 UCD3138 芯片、我想测试串行端口功能、相关代码如图所示。 使用“存储器调试“、您可以看到数据已发送到串行端口寄存器、但使用串行端口工具进行调试时不会发送数据、并且在使用示波器测量 UART 的 TX 引脚时没有波形。 我想知道这是因为我的 GPIO 设置有问题、还是我的硬件连接有问题。 我希望您能帮助回答、谢谢。
此致。
void init_uart0 (void)
{
易失性 Uint32 rx_byte0;//易失性、用于发出有关设置但不读取的警告
Uart0Regs.UARTCTRL3.bit.SW_RESET = 0;//初始化 UART 时进行软件复位
Uart0Regs.UARTCTRL0.bit.DATA_SIZE = 7;//8 位
Uart0Regs.UARTCTRL0.BIT.STOP = 1;//2 个停止位
Uart0Regs.UARTCTRL0.bit.SYNC_MODE = 1;//异步模式
Uart0Regs.UARTHBAUD.ALL = 0;
Uart0Regs.UARTMBAUD.ALL = 0;
Uart0Regs.UARTLBAUD.ALL = 49;//对于 38400、//47 对于控制板、44 对于开环
Uart0Regs.UARTRXST.bit.RX_ENA = 1;//enable RX
Uart0Regs.UARTTXST.bit.TX_ENA = 1;//启用 TX
Uart0Regs.UARTINTST.all = 0xff;//这两条语句应清除状态位
Uart0Regs.UARTINTST.ALL = 0;
RX_byte0 = Uart0Regs.UARTRXBUF.bit.RXDAT;//清除 RXRDY 标志
Uart0Regs.UARTIOCTRLTX.bit.IO_FUNC = 1;//启用发送引脚
Uart0Regs.UARTIOCTRLRX.bit.IO_FUNC = 1;//使能接收引脚
Uart0Regs.UARTCTRL3.bit.clock = 1;//内部时钟选择;
Uart0Regs.UARTCTRL3.bit.SW_RESET = 1;//软件复位是否已释放 UART 初始化完成?
Uart0Regs.UARTIOCTRLSCLK.bit.IO_FUNC = 0;//禁用 UART 的外部时钟。
Uart0Regs.UARTTXBUF ALL ='\n';//输出一个字节来开始事务。
}
void char_OUT(字符数据)
{
while (Uart0Regs.UARTTXST.bit.TX_RDY = 0)
{
//等待数据传输时不执行任何操作。
}
Uart0Regs.UARTTXBUF = DATA;//输出一个字节
}
void main()
{
//启用 JTAG
MiscAnalogRegs.IOMUX.ALL = 0;
//--------------------------------------------------------------------------------------------------------------------------------
//重要说明:请阅读以下内容、否则代码可能无法正确执行
//--------------------------------------------------------------------------------------------------------------------------------
//将引脚 FAULT3 接地以确保正常运行
//将引脚 FAULT3 连接至 3.3V 以清除校验和
if (GioRegs.FAULTIN.bit.FLT2_IN = 1)
{
clear_integrity_word();
}
#if (UCD3138 |UCD3138064)
MiscAnalogRegs.CLKTRIM.bit.HFO_LN_FILTER_EN = 0;
MiscAnalogRegs.CSTRIM.bit.resistor_trim = 23;//28;
#endif
INIT_PMBus (0x58);//初始化 PMBus 处理程序
init_uart0();
for(;;)
{
PMBUS_HANDLER ();
char_out(“1")“);
}
} 












