ATmega128 与CH438 调试成功,谢谢各位支持 !

在初始化中增加了读中断识别寄存器 ,运行后不在一直中断, 不知道原因,欢迎交流 :QQ54549122例子如下 : void InitCH438UART0( void ) { UINT16 div; UINT8 DLL, DLM;

/************************************************************************** 设置CH438串口0的寄存器 **************************************************************************/ UART0_Reset(); div = ( Fpclk >> 4 ) / CH438UART0_BPS; DLM = div >> 8; DLL = div & 0xff; WriteCH438Data( REG_LCR_ADDR, BIT_LCR_DLAB ); /* 设置DLAB为1 */ WriteCH438Data( REG_DLL_ADDR, DLL ); /* 设置波特率 */ WriteCH438Data( REG_DLM_ADDR, DLM ); WriteCH438Data( REG_FCR_ADDR, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_FIFOEN ); /* 设置FIFO模式,触发点为112字节 */ WriteCH438Data( REG_LCR_ADDR, BIT_LCR_WORDSZ1 | BIT_LCR_WORDSZ0 ); /* 字长8位,1位停止位、无校验 */ WriteCH438Data( REG_IER_ADDR, BIT_IER_IELINES | BIT_IER_IETHRE | BIT_IER_IERECV ); /* 使能中断 */ Status = ReadCH438Data( REG_IIR_ADDR ); // 中断识别寄存器 -------正确值:0x01 WriteCH438Data( REG_MCR_ADDR, BIT_MCR_OUT2|BIT_MCR_RTS| BIT_MCR_DTR); /* 允许中断输出,DTR,RTS为1 | BIT_MCR_RTS | BIT_MCR_DTR */ WriteCH438Data(REG_FCR_ADDR,ReadCH438Data(REG_FCR_ADDR)| BIT_FCR_TFIFORST|BIT_FCR_RFIFORST); /* 清空FIFO中的数据 */ }

“运行后不在一直中断”是什么意思?有一点,FIFO开启后,理论上IIR读出的值应该是0xC1或者0xC2,这个值如果读出来不对的话,那你应该去调试一下你的MCU是否能和CH438正常通信。


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