2513|4

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

高手解读驱动程序 [复制链接]

//那位高手帮忙解读一下该段代码
NTSTATUS CDeviceBoardIWI::SetToMode(ULONG Mode)
{
        if(GetCurrentMode() == Mode) return STATUS_SUCCESS;

        NTSTATUS Status = STATUS_SUCCESS;

        switch(Mode) {

                case MODE_DTv:
                case MODE_Standby:       


                        m_Device->EP_SetGPIORegister(3, 1);               
                        m_Device->EP_SetGPIORegister(2, 1);       
                       
                       
                        if(m_AudioADCType == AUDIO_WM8775) {
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x19, 0x02);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x2a, 0x01);       
                        }
                        else if(m_AudioADCType == AUDIO_WM8950) {
                               
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x00, 0x00);       

                               
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x02, 0x1B);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x04, 0x15);       

                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x09, 0x10);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x0C, 0x09);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x36, 0x80);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x41, 0x38);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x46, 0x0F);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x58, 0x03);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x5A, 0x10);       
                                Status |= m_Device->EP_I2CWrite(0x01, 0x34, 0x5F, 0x00);
                        }

                       
                        if(m_VideoDecoder) m_VideoDecoder->ModeSavePower();

                       


                        break;

                case MODE_Video:

                       
                        m_Device->EP_SetGPIORegister(3, 1);               
                               


                        m_Device->EP_Sleep(500000);

                       
                        if(m_VideoDecoder) Status |= m_VideoDecoder->ModePowerUp();
                        else Status = STATUS_INSUFFICIENT_RESOURCES;

                        if(!NT_SUCCESS (Status)) {
                                SetDeviceStatus(STATUS_Error);
                                return Status;
                        }
                        break;
        }

        CDeviceBoard::SetToMode(Mode);
        m_Device->EP_ProgramWriteKey(g_RegProgram_AudioMonoToStereo, 1);
        return Status;
}

最新回复

LZ哪里看不懂,呵呵   详情 回复 发表于 2007-12-20 17:09
点赞 关注

回复
举报

94

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
通过i2c总线,发送指令,写audio或video芯片的寄存器,设置工作模式。你的是什么板呀? 多媒体播放器?
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你不明白的地方可能就是那些数字的参数吧,比如3,1,0xXX等,这个需要你去查看你手头拥有的相关的文档,一般都有说明的.最好去查看调用的函数及其详细的说明,就可以了,如EP_SetGPIORegister,EP_I2CWrite等函数.
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

4
 
I2C,没用过,顶一下。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
LZ哪里看不懂,呵呵
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表