WM8976G声卡驱动的研究

继续跟着韦老师的步伐,研究声卡WM8976G芯片

硬件连接

WM8976G声卡驱动的研究_第1张图片

我们从芯片原理图上面看出,s3c2440连接我们的音频芯片是用 IIS总线进行传输,而通过下面的L3这三根线进行控制
WM8976G声卡驱动的研究_第2张图片

读一下芯片手册

在这里插入图片描述
打开声卡的datasheet ,怎么快速开发呢,设备描述的,控制介绍
WM8976G声卡驱动的研究_第3张图片
WM8976G声卡驱动的研究_第4张图片

WM8976G声卡驱动的研究_第5张图片
分为两线和三线模式,开始的7bit是地址,后面的9bit控制的是对应的寄存器,两线模式对应的就是IIC沟通
WM8976G声卡驱动的研究_第6张图片
从原理图上看我们应该用的是三线模式,下面接入的为高电平
WM8976G声卡驱动的研究_第7张图片
小小的整理一下,对应的gpio口,那么我们自己控制 clk的时序,并且传输准确的信号
WM8976G声卡驱动的研究_第8张图片

写出控制芯片函数
//所以我们就可以写出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 1111
	wm8976write(0x03,0xf);
	//4.R1,等待VMID
	
	//5.R1,BIASEN=1
	wm8976write(0x01,0x8);
	//6.R2, L/ROUT1EN = 1 in register R2.
	wm8976write(0x02,0x180);
	//7.MIXER
	
	//8.OUTPUT
	//9.remaining
}

你可能感兴趣的:(jz2440_驱动开发,嵌入式,物联网)