This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

UCD3138: Code Composer Studio 论坛

Part Number: UCD3138

用UDC3138做的一个恒流数字电源,SCI做的485通信,通过485设置输出电流,当设置的电流设置在5以下时,电源工作正常,通讯也正常,但是当电流设置在5A时,485就不通讯了,而且后面也不会通讯;

我使用了一个定时10s不通讯就复位SCI功能,也不能恢复通讯,除非在电源停止工作时,复位功能才起作用,可以恢复通讯,但是根据电源工作要求,这个方式行不通,只能用来验证,可能是由于电流过大,出现干扰造成的通讯中断;

代码为参考的例程,如下

void init_Sci(void)

{

MiscAnalogRegs.IOMUX.bit.JTAG_DATA_MUX_SEL = 1;//配置TDO_Pin功能为SCI_TX-0; TDI_Pin功能为SCI_RX-0
Uart0Regs.UARTCTRL3.bit.SW_RESET = 0x0;

//-UART控制寄存器0配置UARTCTRL0 ---波特率57600,数据位8位,检验位无,停止位1位
Uart0Regs.UARTCTRL0.bit.ADDR_MODE = 0;
Uart0Regs.UARTCTRL0.bit.DATA_SIZE = 0x07;
Uart0Regs.UARTCTRL0.bit.SYNC_MODE = 0x01;
Uart0Regs.UARTCTRL0.bit.PARITY_ENA = 0x0;
Uart0Regs.UARTCTRL0.bit.PARITY = 0x00;
Uart0Regs.UARTCTRL0.bit.STOP = 0x0;

Uart0Regs.UARTHBAUD.bit.BAUD_DIV_H = 0x0;
Uart0Regs.UARTMBAUD.bit.BAUD_DIV_M = 0x0;
Uart0Regs.UARTLBAUD.bit.BAUD_DIV_L = 0x21;

Uart0Regs.UARTRXST.bit.RX_ENA = 0x01;
Uart0Regs.UARTTXST.bit.TX_ENA = 0x01;

//-UART中断状态寄存器UARTINTST(只读)
Uart0Regs.UARTINTST.all = 0xff;
Uart0Regs.UARTINTST.all = 0;

rx_byte0 = Uart0Regs.UARTRXBUF.all; //清除RXRDY标识
Uart0Regs.UARTIOCTRLTX.bit.IO_FUNC = 0x01;
Uart0Regs.UARTIOCTRLRX.bit.IO_FUNC = 0x01;

Uart0Regs.UARTCTRL3.bit.CLOCK = 0x01;
Uart0Regs.UARTCTRL3.bit.SW_RESET = 0x01;
Uart0Regs.UARTIOCTRLSCLK.bit.IO_FUNC = 0x0;
Uart0Regs.UARTTXBUF.all = '\n'; //put out a byte to get things started.

}

void vGetSciData(void)
{
     if(Uart0Regs.UARTRXST.bit.RX_RDY == 1)
    {
        ucCom_Rxbuffer[g_u16Rx_point++] = Uart0Regs.UARTRXBUF.bit.RXDAT;

    }
}

后面将通信飞线,避开干扰,但还是不够理想

电源功率小时就没问题,功率大一点就又不行了

请教有什么方法可解决此问题,或者在SCI软件配置上有什么方法可以改善?