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

GPMC外界tl16c554扩展串口,发送正常,但是在接收时,驱动参考的是8250.c在startup中使能中断

    up->ier = IER_RLSI | IER_RDI;   //这里并没有使能调制解调器中断
    serial_out(up, IER, up->ier);

中断使能寄存器(IER)

位 0:在 IER0 被置位时,它会在 FIFO模式中使能接收数据有效中断和超时中断。
位 1:在 IER1 被置位时,发送器保持寄存器为空中断被使能。
位 2:在 IER2 被置位时,接收器线路状态中断被使能。

位 3:在 IER3 被置位时,调制解调器状态中断被使能。

但是在向tl16c554发送数据时,会一直中断,然后读IIR(中断标识寄存器)时,读到的尽然是0(调制解调器状态中断)

中断辨识寄存器(IIR)
0x60——接收器线路状态(最高优先级)
0xc0或0x40——接收器数据就绪或接收器字符超时
0x02——发送器保持寄存器为空
0x00——调制解调器状态

而且我在中断中又一次确认过,IER确实设置的是0x05,为什么我没有使能这个中断,他尽然会产生这个中断,我是不是应该怀疑芯片是假的啊。还是有其他原因。

  • 请问你的16C554以前在其他平台上验证过吗?

  • 能不能详细说说你是怎么做的,对这个感兴趣

  • 没有,从一个经销商那里采购的,之前都没有上过平台,刚开始调试发送,在串口助手看到的是无规律的掉数据而且数据不能发的太多,数据一多,发送FIFO空中断都没有了,最后发现电压未对,改为5V后发送正常,然后开始调试接收,各种神奇的问题都出现了。只要是IER0 置位,串口调试助手这边只要一发数据,调试解调器就一直中断,然后置位IER3 使能调试解调器中断,结果就什么中断都不产生了;或者是产生了数据有效的中断(LSR0置位),但是读RBR寄存器全是0,这个芯片怎么这么闹心啊。按理说发送一切正常,那我的GPMC与16C554的通信是没有问题的,波特率设置也没有问题,接收只需要在startup里面打开接收中断就OK,产生中断后读取中断标识寄存器IIR,如果是接收中断,然后判断线路LSR0是否置位,如果置位就可以读取RBR。手册已经过了好多遍了,感觉驱动没有地方需要修改了。

  • leo chen,这个芯片已经很常见了吧,只需要对应接到GPMC的管脚就好了。