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