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