芯片资讯
- 发布日期:2024-11-21 08:27 点击次数:167
1 I2C总线概述
I2C(Intel-Integrated Circuit)总线是荷兰的Philips公司于八十年代初推出的一种芯片间串行总线扩展技术。它用两根线(数据线SDA、时钟线SCL)可完成总线上主机与器件的全双工同步数据传送,可极便当地构成多主机系统和外围器件扩展系统。I2C总线支持一切NMOS、CMOS、TTL等工艺制造的器件,其上一切的节点都连到同名的SDA、SCL上。I2C总办法,数据传送都有相同的操作形式,接口电器特性相同且独立,可在系统供电状况下从系统中移去或增加IC芯片,有I2C接口的外围器件都有应对才能,读写片内单元时有地址自动加1功用,易完成多个字节的自动操作。近年来,国际上有关公司制造了多达几百种的I2C总线器件,如8051系列单片机8XC752、LCD驱动器、RAM、I/O接口等芯片都运用了I2C总线接口。随着数字技术的开展,I2C总线控制系统曾经应用于越来越多的电子产品。
2 I2C总线的数据传输
2.1 接口特性
I2C总线接口的数据线SDA和时钟线SCL必需经过上拉电阻接到正电源VDD上,各个I2C接口电路输出端必需是漏极开路或集电极开路,以便完成“线与”的功用。I2C的SDA和SCL都是双向传输线,当总线闲暇时,此两线都是“1”(高电平)。由于不同的器件都会接到I2C总线,逻辑的“0”(低)及“1”(高)的信号电平取决于VDD的电压。总线上能衔接的最大器件数取决于其电容容限400PF。
2.2 I2C总线上的传输时序
I2C总线上每传输一位数据都有一个时钟脉冲相对应,在规范形式下可达100 kbit/s,高速形式下可达400kbit/s,总线上根据器件功用不同可树立简单的主/从关系(master/slave),只要带CPU的器件才可成主控器。图1为I2C总线一次完好的数据传输。SCL为高期间,SDA状态必需稳定,SCL为低时才允许SDA状态变化。SCL坚持高电平期间,SDA呈现由高至低的转换将启动I2C总线,呈现由低至高的转换将中止数据传输。起始和终止信号通常由主控器产生。I2C总线的信号时序有严厉规则,本应用采用规范形式,SCL低电平周期≥4.7μs,SCL高电平周期≥4.0μs,START和STOP之间的总线闲暇时间≥4.7μs。
I2C 总线上传送的每个字节必需为8位,启动和中止之间可传输的数据字节数不受限制。采用串行传送,首先传送最高位,每传送一个字节后必需跟一个应对位。主控器产生应对所需的时钟脉冲期间,发送器必需释放数据线(SDA为高),以便接纳器输出应对位。低电平为应对信号,高电平为非应对信号。非应对信号是当主控器作为接纳器时,收到最后一个字节数据后,必需发送一个非应对信号给被控发送器,使被控发送器释放数据线,以便主控器发中止信号,终止数据传送。当从器件不能再接纳字节时也会呈现非应对信号这种状况。
I2C总线上的器件普通有两个地址:受控地址和通用播送访问地址,每个器件有独一的受控地址用于定点通讯,而相同的通用播送访问地址则用于主控方同时对一切器件停止访问。如图1所示,起始信号后主控器发送的第一个字节就是被读器件的受控地址,称作寻址字节。寻址字节由高7位地址和最低1位方向位组成,方向位为“0”标明主控器对被控器的写操作(W),方向位为 “1”标明对被控器的读操作(R)。总线上每个器件在起始信号后都把本人的地址与寻址字节的前7位相比拟,如相同则器件被选中,产生应对,并依据读写位决议在数据传送中是接纳还是发送。无论是主发、主收还是从发、从收,都是由主器件控制,数据传送完后,主控器都必需发中止信号。
3 I2C总线的C51言语完成
C51言语是针对Intel的8位单片机MCS-51系列而开发的、具有普通C言语特性的高级编程言语。从1985年至今,有许多公司推出 51系列的C言语编译器,其中以Franklin C51编译器在代码生成方面较为抢先,它可生成最少的代码,支持浮点和长整数、重入和递归。头文件reg51.h中包含了51单片机的特殊功用存放器(SFR)的字节定义与位定义。为了与具有I2C总线接口的51单片机兼容,可在程序开端处定义单片机的P1.6和P1.7作为I2C总线的SCL和SDA信号,实践中也可用其它的I/O引脚作为SCL和SDA信号。C51言语中只需用赋值语句”=”就可完成I/O口某位的数据输出和读入。现将I2C总线底层读写函数接口及功用罗列如下,它可用于没有内部I2C接口的51系列单片机与I2C总线器件通讯。
#include<reg51.h>
/*全局符号定义*/
#define HIGH1
#define LOW 0
#define FALSE0
#define TRUE1
#define time 1
#define uchar unsigned char
#define uint unsigned int
sbit SCL=P1^6;
sbie SDA=P1^7;
1)函数原型:void delay(uchar nu m)
功 能:用for()循环提供延时。在实践应用中可依详细状况改动传入参数,但必需满足I2C总线时序中对SCL高、低电平周期的请求,本应用中取1,调用方式为delay(TIme)。
2)函数原型:void start(void)
功 能:提供I2C总线工作时序中的起始位,在SCL=HIGH期间,SDA呈现由高到底的转变,返回前将SCL拉低,允许数据变化,准备传输。其中调用函数1。
3)函数原型:void stop(void)
功 能:函数提供I2C总线工作时序中的起始位,在SCL=HIGH期间,SDA呈现由低到高的转变。其中调用函数1。
4)函数原型:void sendbyte(uchar b,uchar*error)
功 能:在时钟作用下,将入口参数b中8位数据由高至低经过SDA线发送,并读回应对信号,存于指针变量*error中。其中调用函数1、2、3。
5)函数原型:void readbyte(uchar*b,bit Ack)
功 能:函数在时钟作用下接纳8位数据,存于*b中,先接纳的为高位,并发送应对信号(Ack=0), 芯片采购平台当接纳到最后一字节时发送非应对(Ack=1)。其中调用函数1、2、3。
6)函数原型:void send-n-byte(uchar*info,uint n,uchar address,uchar*fault) 功 能:向I2C器件连续发送n个数据字节,数据存于数组info[]中,address为器件受控地址,末位为0(写),n个数据的地址可作为数据字节发送,或设置地址自动加减功用。*fault存收到的应对位。其中调用函数1-4。
7)函数原型:void receive_n_byte(uchar*info,uint n,uchar address,uchar*fault)
功 能:从I2 C器件连续接纳n个字节的数据,存于数组info[]中,address为器件地址,本函数保证器件地址末位是1(读),n个数据的器件内地址可作为数据字节发送,或设置地址自动加减功用。收最后一字节时发非应对信号1。*fault存收到的应对位。其中调用函数1-5。
以下仅以sendbyte()函数原型为例阐明C51如何详细完成I2C总线的发送:
void sendbyte(uchar b,uchar*error)
{int count;
bit data_bit;
*error=0;
for(count=7;count>=0;count--)
{data_bit=(bit)(b&0x80);
b=b<<1;
/*送数据位,产生时钟脉冲*/
SDA=data_bit;
SCL=LOW;delay(TIme);
SCL=HIGH;delay(TIme);
SCL=LOW;delay(TIme);
}
/*释放数据线,产生时钟脉冲,读回应对*/
SDA=HIGH;
SCL=LOW;delay(time);
SCL=HIGH;delay(time);
*error=(uchar)SDA;
/*释放数据线,时钟置低*/
SDA=HIGH;
SCL=LOW;delay(time);}
4 I2C总线用于HDTV数字空中接纳机
数字高明晰度电视HDTV(High Definition Televi-sion)是继黑白电视和彩色电视之后的第三代电视系统,与目前市场上的电视相比,其程度和垂直两个方向的图像质量(分辨率)进步一倍以上,在运用大屏幕显现器或近间隔观看时其图像细腻逼真,无闪烁感和粗糙感,质量与35mm电影相当,再配以数字环绕声响,使收视效果大幅度进步。HDTV 节目全部采用数字方式制造、发送和接纳,使图像质量接近演播室。同时,数字电视系统还可以提供多种业务,完成交互、数据播送和计算机联网等功用。美国于 1998年11月率先正式开播数字HDTV信号。我国从1996年启动国度严重产业工程项目HDTV功用样机系统研讨开发工程,已胜利在50周年国庆时停止了数字电视试播。
本HDTV数字空中接纳系统以欧洲的DVB-T (Digital Video Broadcasting Terrestrial)为规范,完成信道解调解码,输出规范的MPEG-2码流,由于采用了COFDM(Coded Orthogonal Frequency Division Multi-plexing)编码正交频分复用技术,能有效对立多经传播和同频干扰。本接纳机的主要特性是采用带有I2C总线接口的L64系列芯片,AT89C52经过I2C总线完成对L64芯片内存放器的读写操作和监控,与PC配合完成基于参数配置、形式转换、状态读取的调试功用。构造简单,调试便当。信道解调解码的硬件根本组成如图2(未画出上拉电阻)。
美国LSILogic公司的L64系列是专用的以DVB为规范的解调解码芯片,该系列内部模块化,接口规范化,且带有I2C 总线接口,衔接简单。L64系列功用完善,L64780、L64724、L64768单独运用即可分别完成DVB规范的空中、卫星、有线电视信号解调的全部过程。目前,L64系列可配合运用。如图2,信道出来的信号先经过调谐器变为中频信号,送入L64780完成主要的OFDM解调,其输出经 L64724Viterbi译码,L64768RS译码,完成前向纠错,输出规范的MPEG-2码流。下面仅以L64768为例引见读写某一存放器的 C51函数原型及主要功用:
定义768的受控地址:#define LSI0xfe函数原型:uchar general_call(void)
功 能:general_call()函数调用send_n_byte()函数,发特殊寻址字节0x00和0x06,若应对为零返回0,否则反复上一操作,若发5次后仍无应对返回1。在主程序初始化化时调此函数,主程序依据返回。
函数原型:uchar 768_fec_rd(uint group,uint addr,uint*data)
功 能:768_fec_rd()函数调用send_n_byte()和receive_n_byte(),从FEC存放器读出一字节数据存于指针变量*data中,group为组号,输入的组号要翻译成相应的组地址group_addr,addr为FEC存放器地址,LSI作为每次起始信号后的寻址字节。根据768的传输时序,先发addr的低字节,再发送addr的高字节,然后发group_addr,即可读出相应存放器中的数据。组号出错返回1;收到非应对信号返回0;读正确返回2。主程序依据返回值,做相应操作。
5 完毕语
随着播送电视技术疾速走向数字时期,HDTV在今后五年逐渐在世界范围走向市场成为可能。I2C总线技术应用于HDTV数字空中接纳机中,用8位单片机对接纳机的状态停止控制,不只减少了总线数量,进步了牢靠性,而且还较大降低了本钱。在实践运用时,可加上键盘、显现电路及相应程序,或用PC经过RS232口与单片机通讯,停止调试。本应用已用于我国HDTV功用样机系统研讨开发工程。
- RTK厘米级定位技术助力汽车智能驾驶向L3级别迈进2024-10-31
- X9221A64个丝锥,2线串行总线双数字电位器(XDCP™)2024-10-22
- 汽车技术加速成长 电子模块迎来机遇2024-09-28
- 意法半导体和Leti合作开发硅基氮化镓功率转换技术2024-09-01
- 功率放大器基于压电主动传感技术健康监测方法中的的应用2024-08-06
- 生物识别技术不断升级 EarEcho技术助力身份认证2024-08-02