历史上的今天
今天是:2025年06月16日(星期一)
2021年06月16日 | 用单片机实现基于I2C串行总线的音频处理系统
2021-06-16 来源:eefocus
目前,消费类电子产品(如彩电、音响等)的功能多样化使得控制电路变得更为复杂。而Philips公司推出的集成电路芯片间总线I2CBUS(Inter ICBUS)是目前众多总线中最简洁有效、使用也为广泛的一种总线格式。I2C总线通常是以硬件来实现的,这就要求所选器件必须具有I2C总线接口,但目前广泛使用的MCS-51系列单片机并不具备I2C总线的专用硬件部分。本文结合笔者采用单片机8031实现对具有I2C总线接口的立体声音频处理芯片TDA7313的控制,介绍了I2C总线以及基于I2C串行总线的单片机应用系统的设计方法和程序。
1 I2C总线简介
1.1 I2C总线的组成
I2C串行总线是用双向数据线(SDA)和串行时钟线(SCL)两根信号线,在连接到该总线的器件之间传送信息。它属于多主控器总线,图1所示是其组成框图。总线上的每个器件均可设置一个唯一地址,然后根据所设的功能进行信息的发送或接收。除了作为发送器和接收器以外,在执行数据传输时,总线的器件还可以设定为主控器和被控器。通常由主控器启动总线上的数据传输,并产生数据传输所需的时钟信号。而被其寻址的其它器件均为被控器,这意味着总线上可连接多个有控制总线的器件。

I2C总线上的数据传输率为100 kbit/s,快速方式下可达400 kbit/s。连接到总线上的器件数仅受400 pF的总线电容的限制。同时,为了避免总线信号的混乱,要求连接到总线上的各器件输出端必须是集电极开路或漏极开路,以便产生“线与”功能。I2C总线上的SDA和SCL线都是双向传输线,它们可通过一个电阻连接到正电源端,当总线处于空闲状态时,两条线均为高电平。
1.2 I2C总线数据传输格式
在I2C总线传输过程中,仅当总线空闲(SCL线和SDA线均为高电平)时,数据传送才能开始,此时总线上的任何器件均可以控制总线。图2所示是两种特定的开始和停止条件,其中当SCL线为高电平且SDA线由高变低时为开始条件(S);而当SCL线为高电平且SDA线由低变高时为结束条件(P)。在数据传送过程中,当SCL线为高电平时,SDA线必须是稳定的高或低电平才能使数据有效。只有当SCL线上的时钟信号为低时,SDA线的状态才能改变,且每位数据需一个时钟脉冲。所有数据都是按字节发送的,每次发送的字节数不限。每发送完一个字节,主控器释放SDA线(呈高电平)并由受控器下拉SDA线,从而使SDA线为稳定的低电平来作为有效应答位以表示传输成功,此时主控器必须产生一个与此位相应的额外时钟脉冲。

图3为I2C总线数据传输格式。其中第一部分为数据传输起始信号,即由此开始进行数据传送;第二部分为受控器地址,用来选择向哪个受控器传送数据;第三部分为读/写控制位,用于指示受控器的工作方式,0表示写,1表示读;第四部分是被主控器选中的受控器向主控器回传的确认信号;第五部分是所传送的数据,每传送一个字节数据,都要求有一个应答位;第六部分是数据传输的结束信号。

每个具有I2C总线接口的受控器件都有唯一固定的地址,当主控器发送数据时,I2C总线上挂接的受控器件都会将主控器发出的、位于起始信号后的8位地址信息与自己的地址进行比较,如果两者相同,则认为该受控器件被选中,然后按照读/写位规定的工作方式接收或发送数据。
2 I2C总线在单片机中的实现
本音频处理系统中所使用的IC控制芯片为TDA7313,它是具有音量、高低音调的左右平衡及前后混频调整的立体声音频数字处理器件,它的输入通道可以选择,并具有相应的外部响度调整函数以及I2C串行总线接口,因此可广泛应用于汽车音响和高保真系统中。TDA7313与单片机8031的连线和基本的管脚定义如图4所示。

由于单片机8031不具有I2C总线硬件接口,因此只能通过编写软件产生串行时钟信号。当系统传输数据时,先由单片机给出一个启始信号;接着送出器件TDA7313的7位地址及读/写控制位并等待应答信号;当收到应答信号后,系统根据访问要求进行相应操作。在实际操作过程中,一般都是通过CPU向TDA7313输入一连串的特定数字命令来实现对整个系统的音频处理,所以对TDA7313的操作主要是写操作。
上一篇:MCS-51单片机结构特点
下一篇:C51单片机编程规范总则
史海拾趣
|
用PADS2007 选择管脚对pin pair 为什么有的不能选上呢 ? 用PADS2007 选择管脚对pin pair 为什么有的不能选上呢?哪位大侠遇到过这种问题, 请帮忙指点一下。… 查看全部问答> |
|
由Jung Dae Hoon设计的一款前卫的手镯式概念手机Dial Phone,外形时尚,设计师将手机设计成环形,可以像手镯一样戴在手腕上,相当有创意。该手机的数字键通过手镯边缘透射出来,然后根据手镯上对应的按键拨号,接听来电应该是要靠外接耳机来协助完 ...… 查看全部问答> |
|
一、 模拟电梯控制器 设计基于单片机的电梯模拟器,模拟4层电梯运行,具体要求如下: 1. 采用51系列单片机 2. 采用直流电机驱动 3. 采用光电方法实现楼层精确对位 4. 采用键盘模拟电梯楼层选择(1/2/3/4, ...… 查看全部问答> |
|
跪求2007年B题无线识别装置,有没有由西安电子科技大学,作者是闵彪 谢胜祥 周涛,赛前辅导老师:谢楷 的相关资料,跪求了!!!!!!!!!!,感激不尽啊… 查看全部问答> |
|
启动VxSim时,出现 Connecting to target agent... Error: rpccore backend client Timed out failed. 请问,这个问题我应该如何解决??… 查看全部问答> |
|
简介:本书详细地介绍了TI公司的MSP430系列单片机。全书共分5章。首先讲述MSP430全系列所涉及的片内外围模块的功能、原理、应有及各个系列的模块构成情况;其次讲述MSP430的开发环境及如何使用汇编语言、C语言进行程序设计;最后例举大量的以MSP430为 ...… 查看全部问答> |
|
之前调 系统层 程序的时候,用的是别人的 核心板+底板。现在需要一些其他功能,于是自己按照原来的底板的,又自己制作了一张底板。但是发现在新底板上,程序运行是有问题的。比如说sapi.c中SAPI_Init函数中osal_set_event(task_id, ZB_ENTRY_EVENT) ...… 查看全部问答> |
|
分享MSP430单片机ADC12模块 序列单次采集的 应用范例 转 //****************************************************************************** //MSP430F149 ADC12模块+串行通讯的实验程序 //使用ADC12采集实验,将采集到数据送向PC.(序列单次采集) //P3.4为发送,P3.5为接收 晶体使32768HZ/8MHZ. 串 ...… 查看全部问答> |




