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.

TL16C554数据接收错误导致死机

Other Parts Discussed in Thread: TL16C554
在使用TL16C554时出现了如下问题
1、波特率设置与资料不符
   在使用晶振为1.8432MHz时,波特率配置为9600bps,资料上显示除数应配置为12(0x0d),但配置为12时发出的是乱码。经过我们使用示波器测试发现分频不对,将除数配置为33(0x21)时,波形与标准波形相近。
2、有几个字符接收不了
  在使用晶振1.8432MHz,波特率9600bps,除数配置为33(0x21)时,发现有几个字符接收不了(0xfd、0xfe、0xff),当上位机发送这些字符时,现象为:芯片中断清不掉,始终处于中断状态,重新初始化也无效。
测量发现中断脚的电压也不正常,在2.1~2.5V之间。并且是四个扩展串口都处于故障状态,我只向其中的一个口发了数据(1个字符),没有超过其fifo。
注:其他字符都能正常接收,只有给他发送0xff、0xfe和0xfd中的任一字符时就死掉了。
以下为程序的初始化代码
void intial_ser_a(void)                                    
{
//串口A
   SERA_LCR = 0x83; //8数据位、1停止位、无奇偶校验
                       //除数锁存访问位 LCR.7=1时可对DLL、DLM进行操作
   SERA_DLM = 0x00;
   SERA_DLL = 0x21;//加载波特率除数
   SERA_FCR = 0x01; //FCR.1 使能FIFO的发送和接收
                                  //FCR.7 FCR.6        接收器FIFO触发层级
                                  //   0     0               1字节
                                  //   0     1               4字节
                                  //   1     0               8字节
                                  //   1     1               14字节
   SERA_MCR = 0x08; //MCR.3=1  外部串行通道中断被使能             
   SERA_LCR &= 0x7f; //除数锁存访问位 LCR.7=0时可对 IER 进行操作                                                 
   SERA_IER = 0x07; //使能中断
}

x 出现错误。请重试或与管理员联系。