HD Audio驱动开发求助

herojob 2015-09-08 08:49:22
平台:南桥(BD82QM67_SLJ4M)HD Audio接一块CODEC芯片( Realtek_ALC662GR)
操作系统:vxWorks6.8
问题描述:进行音频驱动开发,HDA自身寄存器读写功能正确。CORB、RIRB功能正常,即HDA能读写CODEC寄存器。但HDA向CODEC发送音频流OSD0(Output Stream Descriptor 0) 不成功,不成功表现为启动DMA后OSD0SDLPIB寄存器的值循环变化,但OSD0STS寄存器bit2(Buffer Completion Interrupt Status)不置位(BDLE中的IOC已设置),使用示波器观察SDO发现每个frame输出32bits高电平,与数据缓冲区的数据不一致(无论数据缓冲区的值为何值,SDO上输出的一直是高电平)。

参数设置情况:
音频PCM数据格式为: 44.1k、16bit、2通道
BDL设置2个BDLE,每个entry的参数分别为:

BDLE0:
ADDRESS_LOWER:0x07FB8000
ADDRESS_UPPER: 0x00000000
LENGTH:0x1000
IOC:1

BDLE1
ADDRESS_LOWER:0x07FB9000
ADDRESS_UPPER:0x00000000
LENGTH:0x1000
IOC:1

Stream Num设置为1
注:BDL及BDLE内存都是申请的连续内存空间。

HDA的设置为:
OSD0CTL: 0x14001C
OSD0CBL: 0x2000
OSD0LVI: 1
OSD0FIFOW: 0x0004
OSD0FIFOS: 0x00C0
OSD0FMT: 0x4011
OSD0BDPL: 0x07E49000
OSD0BDPU: 0x00000000

CODEC使用FRONT DAC设置以下参数:
设置Converter Format为0x4011
设置Converter Stream,Channel为0x10
打开输出缓冲区,设置音量等。

PS:我在Linux系统下进行同样原理的配置,输出音频流功能是正常的,并成功发声。

这个问题卡了我好久了,希望得到各位的指导,万分感谢!
...全文
1200 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
herojob 2015-11-27
  • 打赏
  • 举报
回复
已经解决了,谢谢!
lysadmin 2015-11-05
  • 打赏
  • 举报
回复
兄弟, 你问题解决了没有? 可以一起交流.

2,180

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧