logo资料库

S5PV210平台wm8960音频解码芯片驱动移植记录.pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
OLE_LINK1
OLE_LINK2
OLE_LINK3
OLE_LINK4
OLE_LINK5
OLE_LINK6
OLE_LINK7
OLE_LINK8
OLE_LINK9
OLE_LINK10
OLE_LINK11
Wm8960 ,三星平台 s5pv210 移植记录 (本记录参考记录来源于网络) S5pv210 支持 iis5.1 版本协议 Cpu 端 Iis0 接口配置 // GPIO #define GPICON (*(volatile unsigned int *)0xE0200220) //IIS Signals // 配置引脚用 i2 功能 GPICON = 0x22222222; 参照三星数据手册 page168 页 设置 cpu 端相关的时钟向解码芯片端输出时钟 //设 i2s 相关时钟 // step 1: EPLL output 67.7Mhz (see p361 of s5pv210.pdf) // EPLL_CON0/ Address = 0xE010_0110 //EPLL_CON1, R/W, Address =0xE010_0114) // FOUT = (MDIV+K/65536) X FIN / (PDIV X 2SDIV) // Fout = (0x43+0.7)*24M / (3*2^3) = 80*24M/24 = 67.7Mhz EPLL_CON0 s5pv210 手册 372 页 ,373 页
#define EPLL_CON0 #define EPLL_CON1 EPLL_CON0 = 0xa8430303; 32 位的十六进制 0xa8430303 二进制 1 0 1 0 1 00 (*(volatile unsigned int *)0xe0100110) (*(volatile unsigned int *)0xe0100114) //MPLL_FOUT=67.7Mhz 001000011 00 000011 00000 011 [31] 1 [30] 0 [29] 1 [28] 0 [27] 1 [26:25] [24:16] [15:14] [13:8] [7:3] [2:0] VSEL 00 001000011 MDIV 00 000011 00000 011 PDIV SDIV EPLL_CON1 = 0xbcee; [31:16] [15:0] 0xbc 0xee // from linux kernel setting PLL K 值
三星数据手册 Page 372 页 输入时钟 24MHZ 时候,分别输出 133M 和 54M 时钟 输入频率 FIN=24MHZ FOUT = (MDIV+K/65536) X FIN / (PDIV X 2SDIV) = (67 + 238/65536)*FIN/(3*2^3) =(67+0.003631591796875)*FIN/(3*8) =(67. 003631591796875)*24/24=67. 003631591796875MHZ Fref=(FIN/PDIV)=64/3=21.33333333333MHZ FVCO=(MDIV*FIN/PDIV) VSEL=1 初始化时钟源: // step 2: MUX_EPLL = 1 -> SCLK_EPLL = 67.7Mhz (看 s5pv210.pdf 第 p361 页时钟配置过 程) MUX_EPLL [8] =1 // CLK_SRC0, R/W, Address = 0xE010_0200 // 0xe0100200: 10001111 // EPLL_SEL [8] Control MUXEPLL (0:FINPLL, 1:FOUTEPLL) 选择 1 FOUTEPLL #define CLK_SRC0 CLK_SRC0 = 0x10001111; (*(volatile unsigned int *)0xE0100200)
HCLK_DSYS SCLKMPLL FOUTVPLL 1 VPLL_SEL= ONENAND_SEL 0 MUX_PSYS= 000 0 MUX_D_SYS_SEL= SCLKMPLL 000 0 MUX_MSYS_SEL= SCLKAPLL 000 CLK_SRC0 = 0x10001111; 2 进制=10000000000000001000100010001 [28] 1 [27:25] 000 [24] [23:21] [20] [19:17] [16] [15:13] [12] [11:9] 000 [8] 1 [7:5] 000 [4] 1 MPLL_SEL= [3:1] 000 APLL_SEL = [0] 1 初始化音频子系统时钟 // step 3: Mux_I2S AUDIO subsystem clock selection 210 手册 1868 页 ,第 1875 页(see P1868 P1875 of s5pv210.pdf) #define CLK_CON CLK_CON = 0x1; EPLL_SEL= FOUTEPLL 1 =67MHZ FOUTMPLL FOUTAPLL (*(volatile unsigned int *)0xEEE10000) // 1 = FOUT_EPLL MUXI2S_A 00 = Main CLK
音频子系统时钟路径图
// 设置 i2s 控制器 #define IISPSR 器 (*(volatile unsigned int *)0xEEE3000C) //IIS Prescaler IIS 预分频寄存 IISPSR=0xEEE3000C // step 4: Divider of IIS (67.7 -> 11.289Mhz) N=5 // N + 1 = (67.7Mhz) / (256 * 44.1Khz) = 5.99 // IISCDCLK 11.289Mhz = 256fs=256*44.1K RCLK=11.289Mhz // IISSCLK // IISLRCLK N = 5; IISPSR = 1<<15 | N<<8; 也就是根据上图得到 CDCLK=11.239Mhz =RCLK BCLK=IISSCLK 默 认 是 256fs 分 频 上 图 中 的 1/M 中 的 M=256 , 所 以 BCLK Master= 1.4112Mhz = 32fs =32*44.1K 44.1Khz =fs=IISLRCLK //5+1=6 相当于是 6 分频 RCLK=67.7Mhz/6 =11.283333Mhz 11.289Mhz/256fs=44.1Khz 上边的话说的是 IISLRCLK =RCLK(IISCLK)/256fs=11.289M/256fs=44.1Khz
根据上图显示 fs=44.1k=IISLRCK 下图是寄存器功能描述
#define IISCON (*(volatile unsigned int *)0xEEE30000) //IIS Control 具体的值在 210 手册 1893 页 // IIS interface active (start operation). IISCON |= 1<<0 | (unsigned)1<<31; 1 = Active //bit[0]=1 激活 bit[31] =1 ;Un-reset IIS module #define IISMOD (*(volatile unsigned int *)0xEEE30004) //IIS Mode // [9:8] 10 = Transmit and receive simultaneous mode // 1 = Using I2SCLK IISMOD = 1<<9 | 0<<8 | 1<<10; (use EPLL) 下来分析初始化 wm8960 芯片记录
分享到:
收藏