我用两片SC16IS760做红外通讯。红外收发管GP2W1001YP,电路参考PHILIPS的DEMO板。 做UART测试时,不焊红外收发管,直接连接两片760的RXD,TXD,收发正常。 做IRDA测试时,焊上红外收发管,接收中总有错误。
读SC16IS760的LSR,经常得到0xe1和0xe9,760的datasheet如此说: 7 LSR[7] FIFO 数据错误。 逻辑0=无错误(正常默认条件)。 逻辑1=接收FIFO 数据中至少有一个奇偶错误、帧错误或间隔指示。当FIFO 中不再出现错误时该位被清零。 6 LSR[6] THR 和TSR 为空。该位是发送空指示器。 逻辑0=发送器保存和移位寄存器都不为空 逻辑1=发送器保存和移位寄存器都为空 5 LSR[5] THR 为空。该位是发送保存寄存器空指示器。 逻辑0=发送保存寄存器不为空 逻辑1=发送保存寄存器为空。如果TX FIFO 使能,那么主机可将多达64 字 符的数据装入THR。 4 LSR[4] 间隔中断。 逻辑0=无间隔条件(正常默认条件)。 逻辑1=出现间隔条件且相关的字符为00h(RX 在一个字符时间帧内持续为低 电平)。 3 LSR[3] 帧错误。 逻辑0=正在从RX FIFO 中读取的数据无帧错误(正常默认条件)。 逻辑1=正在从RX FIFO 中读取的数据出现帧错误(接收的数据中没有有效的 停止位)。 2 LSR[2] 奇偶错误。 逻辑0=无奇偶错误(正常默认条件)。 逻辑1=正在从RX FIFO 中读取的数据出现奇偶错误。 1 LSR[1] 超时错误。 逻辑0=无超时错误(正常默认条件)。 逻辑1=出现超时错误。 0 LSR[0] 接收器中的数据。 逻辑0=接收FIFO 中无数据(正常默认条件)。 逻辑1=RX FIFO 中至少有一个字符。
也就是说有帧错误,这个错误怎么来的,不明白。
另外,如果我发送端760停止发送,接收端760也可以收到一个字节0xFE,实测接受760的RX,发现电平一直为高,为什么这种情况下也能收到一个字节?
举个例子: 发送ASC:1 接收:0xfe 0x7f 1
发送ASC:1 2 接收:0xfe 0x7f 1 2
似乎接收总比发送多个 0xfe 0x7f, 同时伴随着760的帧错误。
要做过760控制红外收发管的朋友吱一声吧
|