继续跟着韦老师的步伐,研究声卡WM8976G芯片
硬件连接
我们从芯片原理图上面看出,s3c2440连接我们的音频芯片是用 IIS总线进行传输,而通过下面的L3这三根线进行控制
读一下芯片手册
打开声卡的datasheet ,怎么快速开发呢,设备描述的,控制介绍
分为两线和三线模式,开始的7bit是地址,后面的9bit控制的是对应的寄存器,两线模式对应的就是IIC沟通
从原理图上看我们应该用的是三线模式,下面接入的为高电平
小小的整理一下,对应的gpio口,那么我们自己控制 clk的时序,并且传输准确的信号
写出控制芯片函数
//所以我们就可以写出wm8976的写函数static void wm8976write(int reg,int data){s3c2410_gpio_setpin(MY_SCLK,1);s3c2410_gpio_setpin(MY_CSB,1);s3c2410_gpio_setpin(MY_SDIN,1);short write_data = (reg<<9)|(data & 0x3ff);for(int i =0; i<16;i++){s3c2410_gpio_setpin(MY_CSB,1);if((1<<(16-i) & write_data) ){s3c2410_gpio_setpin(MY_SCLK,0);s3c2410_gpio_setpin(MY_SDIN,1);udelay(1);s3c2410_gpio_setpin(MY_SCLK,1);}else{s3c2410_gpio_setpin(MY_SCLK,0);s3c2410_gpio_setpin(MY_SDIN,0);udelay(1);s3c2410_gpio_setpin(MY_SCLK,1);}s3c2410_gpio_setpin(MY_CSB,0);udelay(1);s3c2410_gpio_setpin(MY_CSB,1);}
}
驱动编写
进行初始化分析
那肯定是开始先要看 poweron也在之前的device description里面
昂 看了这么久 也没看懂混音器怎么用啊
static void init_wm8976(void)
{//不使用boost//3.设置R3,addr0x03,data:0 0000 1111wm8976write(0x03,0xf);//4.R1,等待VMID//5.R1,BIASEN=1wm8976write(0x01,0x8);//6.R2, L/ROUT1EN = 1 in register R2.wm8976write(0x02,0x180);//7.MIXER//8.OUTPUT//9.remaining
}