以Linux/Android主板而言,I2S是ASoC中的CPU Platform驱动。一般情况下需要同时搭上Codec和Machine驱动才能够启用。启用后会在/proc/asound/cards中查看到多出一个声卡。(如果硬件上I2S确实没有连接Codec,那么一般CPU厂家内核中会有 Plublic Machine 的Machine驱动来保证单独的I2S也可以被使用起来)
以Allwinner H3的I2S0为例,由于板子I2S0没有连接Codec,需要按照以下配置启用该I2S:
其中 SoC daudio0 tdm interface for SUNXI chips 为ASoC中的CPU Platform驱动, Daudio0 Public Machine for SUNXI chips 为ASoC中的 Machine + 虚拟Codec驱动。
对于Allwinner的平台而言还要确定sys_config.fex中的相应配置有没有选中,相应的GPIO有无占用。
这样编译烧写系统后, cat /proc/asound/cards 可以查看到多了一个声卡。
使用I2S就是按照普通声卡的方式进行使用,比如Android下的tinyalsa都可以做简单的播放录制等等。
更多使用方法见: Android音频底层调试-基于tinyalsa 。
I2S中的一般常用的bit有16 24 32,这些I2S输出的CLK都是32个。播放16bit时,放到了前32bit的前16bit;播放32bit一般是刚好是32bit;而播放24bit时,需要把数据按照32bit传递给设备节点,也是前24bit。如果使用tinyalsa播放一个真24bit数据时,没有转换成32bit下传时播放会出现噪声。
I2S硬件输出的波形如下:
当然还有一点,一些宣称支持到32bit的,实际输出的是时候可能会按照24bit输出(当低8bit丢弃了),比如Allwinner H3。或许只是kernel驱动的问题。
<完>
Linux的驱动都是集成在内核里的 一般情况下 只需要 另外 安装显卡驱动就好了 如果 你的Linux能够正常使用 就证明 你的硬件是被支持的 建议楼主 去你用发行版本的Linux官方网站上 查看 硬件是否支持 另外 在自己 安装 显卡驱动就好了S3C2410X集成了一个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)、SDRAM控制器、3个通道的UART、4个通道的DMA、4个具有PWM功能的计时器和一个内部时钟、8通道的10位ADC。S3C2410还有很多丰富的外部接口,例如触摸屏接口、I2C总线接口、I2S总线接口、两个USB主机接口、一个USB设备接口、两个SPI接口、SD接口和MMC卡接口。在时钟方面S3C2410X也有突出的特点,该芯片集成了一个具有日历功能的RTC和具有PLL(MPLL和UPLL)的芯片时钟发生器。MPLL产生主时钟,能够使处理器工作频率最高达到203MHz。这个工作频率能够使处理器轻松运行WIN CE、LINUX等 *** 作系统以及进行较为复杂的信息处理。S3C2410X芯片相关数据:
? 203MHz ARM920T 内核,0.18um工艺,超低功耗,272 pin BGA封装
? 带MMU,16KB指令缓存,16KB数据缓存
? 1.8V内核电源,3.3V I/O电压,兼容1.8,2.5,3.3V内存电压
? 内含SDRAM控制器
? 117个GPIO,24个外部中断
? 内置LCD控制器,可接真彩色,大屏幕TFT液晶
? 丰富的外部接口:4通道DMA,3个串口,一个SPI口,一个IIC接口,一个USB device口,一个USB host口
? 8通道10-bit AD,4通道PWM输出
? 内置RTC,PLL
? 内置SD,MMC,Smart Media等存储卡接口
? 支持从SmartMedia (Nand Flash)中启动系统
请采纳答案,支持我一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)