9.1.3. cx88 驱动程序

作者:Gerd Hoffmann

9.1.3.1. cx88 数据手册中缺失的文档

MO_OUTPUT_FORMAT (0x310164)

Previous default from DScaler: 0x1c1f0008
Digit 8: 31-28
28: PREVREMOD = 1

Digit 7: 27-24 (0xc = 12 = b1100 )
27: COMBALT = 1
26: PAL_INV_PHASE
  (DScaler apparently set this to 1, resulted in sucky picture)

Digits 6,5: 23-16
25-16: COMB_RANGE = 0x1f [default] (9 bits -> max 512)

Digit 4: 15-12
15: DISIFX = 0
14: INVCBF = 0
13: DISADAPT = 0
12: NARROWADAPT = 0

Digit 3: 11-8
11: FORCE2H
10: FORCEREMD
9: NCHROMAEN
8: NREMODEN

Digit 2: 7-4
7-6: YCORE
5-4: CCORE

Digit 1: 3-0
3: RANGE = 1
2: HACTEXT
1: HSFMT

0x47 是 MPEG-2 传输流数据包的同步字节。数据手册错误地说明使用十进制的 47。188 是长度。所有符合 DVB 标准的前端都会输出带有此起始码的数据包。

9.1.3.2. Hauppauge WinTV cx88 IR 信息

多路复用器的控制是 GPIO [0,1] 用于源,GPIO 2 用于静音。

GPIO0

GPIO1

0

0

电视音频

1

0

FM 收音机

0

1

线路输入

1

1

单声道调谐器旁路或 CD 直通(特定于调谐器)

GPIO 16(我认为)与 IR 端口(如果存在)绑定。

来自数据手册

  • 寄存器 24'h20004 PCI 中断状态

  • 位 [18] IR_SMP_INT 当通过 gpio[16] 引脚到 GP_SAMPLE 寄存器收集了 32 个输入样本时设置。

  • gpio[16] 引脚到 GP_SAMPLE 寄存器。

数据手册中缺少的内容

  • 设置 4KHz 采样率(大约 2 倍过采样;对于我们的 RC5 兼容遥控器来说足够好)

  • 将寄存器 0x35C050 设置为 0xa80a80

  • 启用采样

  • 将寄存器 0x35C054 设置为 0x5

  • 在中断掩码寄存器中启用 IRQ 位 18(并提供一个处理程序)

GP_SAMPLE 寄存器位于 0x35C058

然后以指定的速率将位右移到 GP_SAMPLE 寄存器中;当收到完整的 DWORD 时,您会收到中断。您需要从(过采样的)红外传感器位中恢复实际的 RC5 位。(提示:查找 RC5 双相数据的 0/1 和 1/0 过渡)一个实际的原始 RC5 代码将跨越 2-3 个 DWORDS,具体取决于实际的对齐方式。

我很确定当没有红外信号存在时,接收器始终处于标记状态 (1);但杂散光等也会导致间歇性噪声值。请记住,这是红外接收器状态随时间的自由运行样本,因此不要假设任何样本都从任何特定位置开始。

9.1.3.2.1. 附加信息

此数据手册(google 搜索)似乎对 RC5 的基本原理进行了很好的描述:http://www.atmel.com/dyn/resources/prod_documents/doc2817.pdf

此文档包含更多数据:http://www.nenya.be/beor/electronics/rc5.htm

此文档介绍了如何解码双相数据流:http://www.ee.washington.edu/circuit_archive/text/ir_decode.txt

此文档包含更多信息:http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htm