CM002X1 Xear音频技术认证实现指南
认证概述
CM002X1是Xear音频技术的核心认证芯片,内置数据加密算法,负责返回认证数据以启用Xear音频技术。该芯片仅通过I2C从机接口访问,需要与USB主控芯片配合,通过HID协议与Windows 10/11主机上的Xear驱动进行通讯。
Xear音频技术认证基于数据加密算法,需要通过超过10次的写操作和读操作访问外部CM002X1,最终获取认证数据返回。
认证准备清单
在开始实现Xear音频技术认证前,需要准备以下内容:
- Xear音频技术: 需要C-Media软件驱动/APO,如需定制需添加USB设备的VID/PID,并完成WHQL认证
- CM002X1数据手册: 包含I2C数据格式、时序定义、典型应用电路参考
- CM002X1工程样品: 可联系C-Media代理商获取
- 本指南: 指导USB设备如何实现主机(Xear)与CM002X1之间的交互
HID命令定义
认证命令分为WRITE和READ两类:
HID命令码
| 命令码 | 方向 | USB设备动作 |
|---|---|---|
| 0x11 | 主机→设备 | I2C写数据到CM002X1 |
| 0x12 | 主机→设备 | I2C从CM002X1读取数据 |
| 0x13 | 设备→主机 | 返回读数据到主机(Xear) |
HID写操作(0x11)
当Xear生成加密数据后,通过HID "0x11"命令发送写指令,USB设备需要解析HID信息并执行I2C写操作到CM002X1。I2C写操作至少需要支持16字节数据长度。
HID数据格式(32字节):
| 偏移 | 字段 | 大小 | 说明 |
|---|---|---|---|
| 0 | Report ID | 1字节 | 固定0xFD |
| 1 | 命令码 | 1字节 | 固定0x11(写) |
| 2 | 从机地址 | 1字节 | CM002X1地址0x7A(7位) |
| 3 | 子地址 | 1字节 | CM002X1数据地址 |
| 4 | 数据长度 | 1字节 | 写入数据字节数,≤16 |
| 5-31 | 数据 | 27字节 | 实际写入数据,n≤16 |
示例:写入数据到CM002X1
0xFD, 0x11, 0x7A, 0x00, 0x10, [16字节数据]
HID读操作(0x12 + 0x13)
当Xear发送读命令"0x12"索取认证数据时,USB设备执行I2C读操作从CM002X1获取数据并存入缓冲区。当主机(Xear)发送"get input report"时,设备通过HID "0x13"返回数据。
读命令格式(0x12)
| 偏移 | 字段 | 大小 | 说明 |
|---|---|---|---|
| 0 | Report ID | 1字节 | 固定0xFD |
| 1 | 命令码 | 1字节 | 固定0x12(读) |
| 2 | 从机地址 | 1字节 | CM002X1地址0x7A |
| 3 | 子地址 | 1字节 | CM002X1数据地址 |
| 4 | 数据长度 | 1字节 | 读取数据字节数,≤16 |
| 5-31 | 保留 | 27字节 | 无需关心 |
返回数据格式(0x13)
| 偏移 | 字段 | 大小 | 说明 |
|---|---|---|---|
| 0 | Report ID | 1字节 | 固定0xFD |
| 1 | 命令码 | 1字节 | 固定0x13(返回数据) |
| 2 | 从机地址 | 1字节 | 同0x12 |
| 3 | 子地址 | 1字节 | 同0x12 |
| 4 | 数据长度 | 1字节 | 同0x12 |
| 5-31 | 数据 | 27字节 | 实际读取数据,n=len-1 |
认证流程
完整认证流程如下:
- 初始化: 主机加载Xear驱动,检测到USB设备
- 认证请求: 主机发送认证请求(HID Write 0x11)
- 数据写入: 设备通过I2C访问CM002X1,写入加密数据
- 读取响应: 主机发送数据读取请求(HID Read 0x12)
- 获取认证数据: 设备通过I2C从CM002X1读取认证响应
- 返回结果: 设备返回认证数据(HID 0x13)
- 验证: 主机验证认证数据
- 结果:
- 认证成功:Xear音频技术自动启用
- 认证失败:Xear技术保持禁用状态
注意: 整个认证过程需要超过10次的写读交互才能完成。
I2C通讯注意事项
从机地址
CM002X1的I2C从机地址固定为0x7A,仅需7位地址。
Repeated Start
I2C读操作必须支持"Repeated Start"(非停止重复开始)格式,这是CM002X1数据手册中定义的时序要求。典型I2C读操作时序:
- 发送Start信号
- 发送设备地址(0x7A) + Write位
- 发送子地址
- 发送Repeated Start信号
- 发送设备地址(0x7A) + Read位
- 读取数据
- 发送Stop信号
数据长度
每次I2C读写操作的数据长度不超过16字节。
HID Report Descriptor
CM002X1使用Report ID 0xFD进行通讯,固件中需要添加对应的HID Report Descriptor:
db 05H, 0CH ; Usage Page(Consumer)
db 09H, 01H ; Usage(Consumer Control)
db 0A1H, 01H ; Collection(Application)
db 06H, 02H, 0FFH ; Usage Page, Vendor Defined(0xFF02)
db 09H, 01H ; Usage(0x01)
db 085H, 0FDH ; Report ID(FD)
db 75H, 08H ; Report Size(8)
db 095H, 1FH ; Report Count(31)
db 09H, 10H ; Usage(vendor, 0x10)
db 081H, 02H ; Input(0x02)
db 75H, 08H ; Report Size(8)
db 095H, 1FH ; Report Count(31)
db 09H, 10H ; Usage(vendor, 0x10)
db 091H, 02H ; Output(Data, Variable, Absolute)
db 0C0H ; End Collection
常见问题FAQ
Q: I2C读操作需要注意什么?
A: 必须支持"Repeated Start"(重复开始)时序,这是I2C规范中允许的连续通讯方式。
Q: 数据长度有限制吗?
A: 单次读写数据长度不超过16字节。
Q: 认证失败怎么办?
A: 检查I2C通讯是否正常,确认CM002X1供电电压是否在3.0V~3.6V范围内,验证HID命令格式是否正确。
Q: 需要多少次认证交互?
A: Xear音频技术认证需要超过10次的写操作和读操作才能完成。
Q: CM002X1需要特殊驱动吗?
A: CM002X1本身不需要单独驱动,它通过USB主控芯片与Xear驱动配合工作。