CH438 的中断OUT2 一直恒为低电平

CH438 的中断OUT2 一直恒为低电平 是什么原因,外部有串口不断的传输。但是为啥OUT2恒为低电平。这样没法判断啊

MCR是可写寄存器,手动置1后再试下呢,正常在初始化部分OUT 位就会置1?


再初始化部分 对OUT2置1了。

WriteCH438Data( REG_MCR3_ADDR, BIT_MCR_OUT2 /*| BIT_MCR_RTS | BIT_MCR_DTR */ );   这句语句一运行完,OUT2就恒定为低电平了。

void InitCH438UART3( void )       

{

    Uint16 div;

    Uint8 DLL, DLM;

/**************************************************************************

          设置CH438串口3的寄存器

**************************************************************************/

//    UART3_Reset();

    div = ( Fpclk >> 4 ) / CH438UART3_BPS;

    DLM = div >> 8;

    DLL = div & 0xff;


    WriteCH438Data( REG_LCR3_ADDR, BIT_LCR_DLAB );    /* 设置DLAB为1 */

    WriteCH438Data( REG_DLL3_ADDR, DLL );             /* 设置波特率 */

    WriteCH438Data( REG_DLM3_ADDR, DLM );


    //WriteCH438Data( REG_FCR3_ADDR, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_FIFOEN );    /* 设置FIFO模式,触发点为112字节 */


    WriteCH438Data( REG_LCR3_ADDR, BIT_LCR_WORDSZ1 | BIT_LCR_WORDSZ0 | BIT_LCR_PAREN | BIT_LCR_PARMODE0);                     /* 字长8位,1位停止位、偶校验 */


    WriteCH438Data( REG_IER3_ADDR, /*BIT_IER_IEMODEM |*/ BIT_IER1_CK2X | /*BIT_IER_IELINES | BIT_IER_IETHRE |*/ BIT_IER_IERECV );    /* 使能中断 */


    WriteCH438Data( REG_MCR3_ADDR, BIT_MCR_OUT2 /*| BIT_MCR_RTS | BIT_MCR_DTR */ );              /* 允许中断输出,DTR,RTS为1 */


    //WriteCH438Data(REG_FCR3_ADDR,ReadCH438Data(REG_FCR3_ADDR)| BIT_FCR_TFIFORST|BIT_FCR_RFIFORST);

    /* === 20240827 === */

    WriteCH438Data(REG_FCR3_ADDR, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_TFIFORST | BIT_FCR_RFIFORST | BIT_FCR_FIFOEN);


}



最终发现好像是 fifo溢出以后,清FIFO的需要一定的时间。


只有登录才能回复,可以选择微信账号登录