当前位置:首页 > 电源 > 数字电源
[导读]介绍了虚拟I2C总线技术的特点,描述了用单片机(C51)的普通I/O口以及对DSP(TMS320VC5402)的McBSP口和HPI-8口模拟I2C总线接口的设计方案,最后给出了对SAA7111进行初始化的方法。

    摘要:介绍了虚拟I2C总线技术的特点,描述了用单片机(C51)的普通I/O口以及对DSP(TMS320VC5402)的McBSP口和HPI-8口模拟I2C总线接口的设计方案,最后给出了对SAA7111进行初始化的方法。

    关键词:虚拟I2C总线技术SAA7111;DSP;I2C总线

SAA7111是Philips半导体公司生产的一种视频输入处理器(VIP),在视频采集系统中,通常需要诸如SAA7111之类的视频解码器作为模拟视频前端,而视频解码器的初始化主要通过I2C总线接口来完成。然而,目前的单片机和DSP器件大多都不带有I2C总线接口,为此,本文提出了用虚拟总线技术来模拟实现I2C总线功能,利用DSP的多功能I/O口和单片机的普通I/O口模拟I2C总线接口设计,从而实现DSP和单片机对SAA7111的初始化与控制的新方法。

1 虚拟I2C总线技术

1.1 多主方式下的I2C总线虚拟

I2C总线是Philips公司推出的一种连接IC器件的二线制总线,它既可以用于构成多主系统,又可工作在单主方式下。因为多主方式下会出现多主竞争的复杂状态,此时如果系统中没有带I2C总线接口的主控制器,那么要构成多主系统的虚拟I2C总线,就必须在虚拟I2C总线中解决多主竞争状态,而这几乎是不可能的,鉴于此,多主I2C总线系统必须使用带I2C总线接口的控制器。

    1.2 单主方式下的I2C总线虚拟

当I2C总线中只有一个主器件时,I2C总线系统的工作方式称为单主方式。在单主方式下,由于I2C总线上只有一个主器件成为主节点,因此,该主器件会永远占据总线,而不会出现总线竞争,此时的主节点也不必有自己的节点地址。在这种情况下,主器件若没有I2C总线接口,就可以用主控制器的I/O口来模拟I2C总线接口。

目前,许多视频、音像电器中都采用了虚拟I2C总线技术。SAA7111的初始化控制操作就工作在单主方式下,因此可以用虚拟I2C总线技术来实现SAA7111的初始化控制。下面分别以单片机和DSP为例来说明虚拟I2C总线技术的实现方法。

2 用单片机普通I/O模拟I2C总线接口

用单片机普通I/O口模拟I2C总线接口时,其硬件配置非常简单,因为单片机的I/O口很多,并且大多I/O口都是双向的,因此可以直接用两个I/O口线作为I2C总线的串行时钟线SCL和串行数据线SDA。图1所示为C51 单片机与SAA7111的硬件连接图。 当硬件配置完成后,根据I2C总线的时序特性可用软件编程来模拟I2C总线接口。图2为I2C总线的起始信号(S),它表示在SCL为高电平期间,数据线SDA由高电平向低电平变化将启动I2C总线。下面是相应的汇编程序。其它子程序可以参考I2C总线时序来实现,这里就不一一给出了。

启动I2C总线:

SETB P1.0 ; SDA=1

SETB P1.1 ; SCL=1

CALL DELAY ;保持数据时间,DELAY

为延迟子程序

CLR P1.0 ; SDA=0

CALL DELAY

CLR P1.1 ;钳定总线,开始发送数据

RET

3 用DSP外围接口模拟I2C总线接口

由于TMS320VC5402只有两个通用的I/O引脚,且都是单向的,而在I2C总线中,SDA必须是双向的,因此必须借助于其它总线接口。

3.1 用McBSP口模拟I2C总线接口

首先,通过配置串口控制寄存器SPCR1和SPCR2以及引脚控制寄存器PCR的禁用McBSP功能,以将McBSP引脚(包括CLKX、CLKR、DX、DR、FSX、FSR、和CLKS)作为通用I/O口。现以发送器为例,当SPCR2的XRST=0、PCR的XIOEN=1时,串口发送器无效,FSX、CLKX用作通用I/O引脚。FSX和CLKX作为通用I/O端口的引脚设置情况如表1所列。以McBSP0为例,也可以从FSX0和CLKX0引出两条线分别表示SDA线和SCL线。

表1 将FXS和CLKX作为通用I/O的设置方法

引脚 FSX数据方向 CLKX数据方向 FSX输出值 CLKX输出值
FSXM CLKXM FSXP CLKXP
0 1 0 1 0 1 0 1
FSX 输入 输出 - - - 1 - -
CLKX - - 输入 输出 - - 0 1

注:“-”表示无影响

图3为I2C总线的结束信号时序,下面是相应的程序:

#define SPSA0 0x0038 //SPSA0指向McBSP0子地址寄存器

#define SPSD0 0x0039 //SPSD0指向McBSP0

子区数据存储器

#define PCR0 ‘0x000E //PCR0代表子地址

0x000E

结束I2C总线:

void stop ? ? ?

*?short *?SPSA0=PCR0; //SPSA0指向子

地址PCR0

*?short *?SPSD0=0x2A02? //初始化PCR0,

令FSX0=0,CLKX=1。即SDA=0,SCL=1

delay? ?; //延时。Delay()为延时子程序

*?short *?SPSD0=0x2A0A; //令FSX0=1,

CLKX=1。即SDA=1,SCL=1

}

3.2 用HPI-8口模拟I2C总线接口

同样,首先必须禁用HPI-8的功能,这可通过设置HPI-8控制寄存器(HPIC)的HPIENA为0来完成。当HPI-8工作在通用I/O端口(GPIO)方式时,通过通用I/O控制寄存器(GPIOCR)和通用I/O状态寄存器(GPIOSR)可以控制GPIO方式下的HPI-8数据引脚。GPIOCR的DIRx(x=0~7)位为低电平表明HDx引脚为输入,高电平表明HDx为输出。 GPIOSR的D/Ox位则反映了引脚HDx的逻辑值,D/Ox为低电平表明HDx输入/输出为0,D/Ox为高电平表明HDx输入/输出为1。因为在GPIO方式下,HDx为双向I/O端口,因此可以任意选择一个HDx(如HD0)作为SDA,再用另外一个HDx(HD1)作为SCL以实现I2C总线接口的模拟。

4 SAA7111的初始化

SAA7111内部有32个寄存器(Subaddress00~1FH),其中22个是可编程的。00H、1A~1CH、1FH是只读寄存器,其中00H描述的是芯片版本信息;1A~1CH是文本信息检测和解码寄存器,一般很少用到;1FH用来描述芯片的状态。02H~12H是可读写寄存器,其中02H~05H是模拟输入控制寄存器,02H用于设置模拟视频信号输入方式(共8种),03H~05H用于设置增益控制方式, 06H~12H主要用于设置解码方式,通过配置这些寄存器可以设置行同步信号的开始和结束位置,并可确定亮度、色度、饱和度的大小以及输出图像数据信号的格式。 01H、13H~19H、1DH~1EH寄存器保留使用。需要注意的是,在读00H寄存器前,必须将它初始化为0。在对多个连续的寄存器进行操作时,寄存器地址有自动加1功能。内部寄存器控制位的功能含义详见参考文献。

可以采用上面任何一种方法来模拟I2C总线接口,只是具体的编程方法应视不同的控制器而异。但软件编程具有相同之处,首先必须根据I2C总线的原理写出启动、结束、发送应答信号及读、写一个字节的程序,然后根据SAA7111的寄存器操作格式写出读、写寄存器的程序,最后根据以上子程序写出初始化SAA7111的程序段。SAA7111的初始化流程如图4所示。

以单片机为例,硬件连接见前文图1所示,其中IICSA是SAA7111的读写控制位,IICSA=0表示SAA7111的写地址为48H。这里把SAA7111初始化设定为:一路模拟视频信号输入(AI12)、自动增益控制、625行50Hz PAL制式、YUV 422 16位数字视频信号输出、设置默认的图象对比度、亮度及饱和度。相应的寄存器初始化值如表2所列。下面是向SAA7111的19个连续的子地址寄存器(00H~12H)写入一组数据的的程序。

表2 寄存器初始化值

SubAddress Data SubAddress Data
00H 00H 01H 00H
02H C1H 03H 33H
04H 00H 05H 00H
06H EBH 07H E0H
08H 88H 09H 01H
0AH 80H 0BH 47H
0CH 40H 0DH 00H
0EH 01H 0FH 00H
10H 40H 11H 1CH
12H 03H    

入口参数:SAA7111写地址48H、子地址00H、发送数据缓冲区DBUF、发送字节数19。

WNBYTE:MOV R3,19 ;发送字节数19送入R3

LCALL START ;调用启动子程序

MOV A,#48H ;SAA7111写地址送入A

LCALL WBYTE ;调用写一个字节子程序

LCALL CHECK ;调用检查应答位子程序

JB F0,NEXT0 ;有应答,转到NEXT0,其

中F0为应答标志位,F0=1

表示有应答

AJMP WNBYTE ;无应答,重新发送

NEXT0:MOV A, 00H ;SAA7111子地址送入A

LCALL WBYTE

LCALL CHECK

JB F0,NEXT1

AJMP START

    MOV R2,#DBUF ;发送数据缓冲区首地址

送入R2

NEXT1:MOV A, @R2 ;发送数据缓冲区数据送

入A

LCALL WBYTE

LCALL CHECK

JNB F0,WNBYTE ;未应答,重新发送

INC R2

DJNZ R3,NEXT1 ;发送完否?未完,继续发送

EXIT: LCALL STOP ;发送完毕?调用结束子程序

RET

5 结束语

对一个典型的以DSP为核心处理器的视频采集系统而言,用单片机普通I/O口模拟I2C总线接口的编程比较简单,操作也很方便,但是相应的会增加设计成本,因为系统要额外的增加一片单片机。而用DSP的McBSP口或者HPI-8口模拟I2C总线接口,虽然不必考虑成本问题,但是必须要禁用McBSP或者HPI-8的功能,这对系统中DSP功能的扩展来说是不利的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭