目前,消费类电子产品(如彩电、音响等)的功能多样化使得控制电路变得更为复杂。而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的操作主要是写操作。
关键字:单片机 I2C串行总线 音频处理 TDA7313
引用地址:
用单片机实现基于I2C串行总线的音频处理系统
推荐阅读最新更新时间:2024-03-16 12:30
STC系列单片机不断电下载程序应用技术
随着单片机技术的发展,单片机片内存储器的容量越来越大,可以容纳越来越大的程序。由于程序越来越复杂,在程序调试过程中需要不断进行硬件复位来下载程序,虽然在线下载程序的方法已经普遍应用,但在现实调试实现中还是比较繁琐,因此人们在寻求一种用软件代替硬件的复位方法来调试下载程序,近而在工程实际中更加快捷方便地进行程序实现。因此,文中提出了一种软件复位单片机的方法,即利用STC单片机独有的ISP引导区,用特殊的指令使调试好的程序从ISP引导区执行,避免频繁地硬件复位,而且简单实用。 1 软件复位单片机的工作原理 1.1 STC单片机复位方法简介 STC单片机的复位方法分为热启动和冷启动两种:冷启动是系统断电后再上电的硬件复位;热启动
[单片机]
基于单片机的位标器陀螺仪综合检测系统
位标器是红外制导进行目标跟踪的关键部件,位标器陀螺仪上线圈组件(包括基准线圈、调制线圈、Φ角线圈)的绕制精度和作为陀螺转子的磁钢的充磁性能将直接影响导弹的命中精度与火箭飞行的平稳度。因此,对线圈绕制精度和磁钢充磁性能的检测十分必要。 1测量原理 测量Φ角线圈输出,目的在于保证位标器的电锁精度。当测量转子在待测线圈部件内旋转时,若Φ角线圈与测量转子的旋转磁场同轴则线圈不产生感应电势,因此测量出Φ角线圈的感应电动势就能判断其绕制精度。调制线圈和基准线圈在线圈部件中和测量转子垂直,转子旋转时输出调制信号和基准信号,比较两者相位即得到相位差。测量磁钢磁性能,目的在于保证位标器基准线圈、调制线圈的输出电压和波形,当测量转子旋转时,测量磁
[单片机]
51单片机+带字库液晶12864+DS1302数字时钟C源程序
经过两天的搜索与调试,在别人程序的基础上,不断修改,终于调试成功了这个程序。 目前还不能修改时间与日期,只是以预定时间以始。 适用于开发板:51单片机(AT89S52)+带字库液晶12864(ST7920)+DS1302(实时时钟) 实现功能:简单,数字时钟+日期(以后会不断完美)。 C语言源程序如下: #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int /*DS1302 端口设置 */ sbit SCK=P3^6; //DS1302时钟 sbit SDA=P3^4; //DS1
[单片机]
基于msp430的单片机的DES加密程序
以前被要求做的一个关于单片机的东西,因为对单片机编程知识学习的比较少,所以,在自学了一些知识后,编写的程序, 其中,对于时钟也是根据for循环的延时来编写的,大家如果有更好的代码可以告诉我。 它的主要功能是,首先,用在430单片机提供的按键在屏幕上输入要加密的数字,然后点击发送按钮,对输入的数字 进行加密,并把加密后的数传入电脑端,电脑端通过串口助手接收这些数据,然后将加密后的这些数据输入到自己编写的电脑端解密程序中进行解密运算(这部分在下次介绍)。 1、通过按键在屏幕上输入数据,为了防止按键之间的错乱,这里有一个20ms的延时,当第一个数据输入完成后,点击方向 键可进行下一个数的编辑。显示的格式如下示:
[单片机]
STC单片机双串口使用设置与例程
在用STC_60s2单片机进行双串口同时收发时,要注意一些容易配置错误的地方。AUXR寄存器有很多功能。在对其中的位置位和复位时,很可能在不同的地方多次进行,应该使用AUXR |= bitx 和AUXR &=~bitx 语句进行对某一位的置位和复位。这样就不会影响其他功能位了。 附上程序: #include STC12C5A60S2.h //sfr AUXR = 0x8E; #define uchar unsigned char// #define uint unsigned int // #define BUADRATE 38400 #define FOSC 24000000 #
[单片机]
单片机+8255键盘扫描c51程序
下面是电路图: 51单片机+8255芯片的键盘扫描函数,只做了简单的输入输出,利用P1口控制发光二极管亮,键值为7的话键码是0x07; 源程序: #include reg51.h #include absacc.h #define uchar unsigned char #define uint unsigned int #define LScan XBYTE //列扫描地址 #define HScan XBYTE //行扫描地址 //延时函数 void delay(uint i) {uint j; for(j=i;j 0;j--) { ; } } //检测有无按键按下的函数 uchar CheckKey()
[单片机]
单片机恒温箱的温控系统制作
本设计的主要原理是,单片机实时地将温度传感器所采集的温度值与所设定的恒温值进行比较和处理。从而监控并保持样品容器箱的温度值。本文给出了该系统的方案设计、硬件电路、软件设计、故障排除以及系统调试等内容。 系统的主要性能指标有:(1)恒定温度值设定范围:20-50℃,最小区分度:1℃;f 2)数码管显示实际温度值,显示范围:0-99℃;最小区分度:0.1℃;(3)温度控制误差:≤4-1℃;(4)显示精度:温度控制的绝对误差≤±3℃.鉴于风扇冷却,环境温度高于20℃.恒温下限相应上移。 一、系统方案设计 本系统是基于经典C51系列单片机的应用开发,集环境温度的信号采集、数据的处理及温度的保持控制等等为一体的数字控制系
[单片机]
单片机与PC通信的简化接口
摘要: 给出了一种单片同与PC进行通信的低成本接口的设计方法,并给出了其中的关键参数,通过在实践中检验证明:该接口在对成本和体积有严格要求的系统中有着广泛的应用。
关键词: 单片机 PC 接口 通信
在单片机系统的设计中,经常遇到需要与PC进行通信的问题。一般单片机都提供有UART接口,而普通PC机也都有1~2个RS-232口,所以,实际使用时经常用RS-232进行单片机与计算机间的通信。在近距离通信中,以零调制三线经济型使用最为广泛。
RS-232标准是广泛使用的串行通信标准,但使用的电平与TTL和MOS电平完全不同,逻辑“0”至少为+3V,逻辑“1”至少为-3V,而单片机系统则使用TT
[工业控制]