i2c i2s cs42l51 驱动分析.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
i2c i2s cs42l51 驱动分析

i2ci2s cs42l51 驱动分析 转载 2009-08-13 11:34:04 分类: LINUX 1. 工作原理 I2S有5根线,每根线的作用和使用请驱动开发人员参考 《设备驱动程序开发详解》,《嵌入式系统接口设计与LINUX驱动程序开发》,CQ8401 datesheet,相关章节。而且要完成该驱动需要具备DMA,i2s,i2c等相关知识。 1.1 原理理解 CQ8401 i2s 于 codec cs42l51 连接如图: 上图说明如下: 图左边是CQ8401内部集成了I2S控制器,右边是CODEC芯片 SYNC---采样频率 SYS_CLK----给CODEC的时钟频率 BIT_CLK----位时钟频率 上图说明如下: Pllout:cpu 主频 CFCR2:分频寄存器,得到SYS_CLK i2sDIV.DV: I2S分频寄存器,得到BIT_CLK Divider in AIC: 1/64,得到SYNC 1.2 操作过程 音频数据通过DMA方式从RAM到I2S控制器的FIFO中,I2S控制器通过I2S总线将数据传送到CODEC中,然后哦CODEC就能播放出声音了。而对CODEC寄存器的配置通过i2c总线,所以该驱动需要实现I2C设备驱动。 关键字:DMA,I2C,I2S 2. 驱动阅读 该驱动需要具备一下知识:i2c,i2s,dma 2.1 模块的初始化和退出 static int __init init_clx_i2s(void) //模开初始化 { int errno,ret=0; //调用kmalloc给结构体 i2s_controller 分配空间 if ((errno = probe_clx_i2s(i2s_controller)) 0) return errno; //注册dsp , mixer ,初始化i2s,见2.2 attach_clx_i2s(i2s_controller); //注册一个I2C驱动管理结构体,在 soc_cs42l51_i2c_drv 结构体会初始化CODEC (cs42l51),见2.3分析 ret = i2c_add_driver(soc_cs42l51_i2c_drv); if(ret) { printk(%s-%d: register i2c driver failed\n,__FUNCTION__,__LINE__); return ret; } printk(Cirrus Logic i2s SoC codec cs42l51 driver verison 1.0 date 090407\n); return ret; } static void __exit cleanup_clx_i2s(void) { unload_clx_i2s(i2s_controller); i2c_del_driver(soc_cs42l51_i2c_drv); } module_init(init_clx_i2s); module_exit(cleanup_clx_i2s); 2.2 attach_clx_i2s(i2s_controller) //注册dsp , mixer ,初始化i2s attach_clx_i2s(i2s_controller); static void __init attach_clx_i2s(struct clx_i2s_controller_info *controller) { char *name; int i, adev; name = controller-name; clx_i2s_initHw(); //i2s初始化,见2.2.1 /* register /dev/audio ? */ adev = register_sound_dsp(clx_i2s_audio_fops, -1); if (adev 0) goto audio_failed; /* initialize I2S code

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档