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 信息

mux 的控件是 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 在通过以下方式收集 32 个输入样本时设置

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

数据表中缺少的内容

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

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

  • 启用采样

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

  • 在中断屏蔽寄存器中启用 IRQ 位 18(并提供处理程序)

GP_SAMPLE 寄存器位于 0x35C058

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

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

9.1.3.2.1. 附加信息

这个数据表(谷歌搜索)似乎对 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