基于DSP与CPLD的I2C总线接口的设计与实现
发布时间:2008/6/3 0:00:00 访问次数:663
摘要:介绍了一种使用cpld完成dsp芯片i2c总线接口的设计和实现方案,重点叙述了i2c核的设计思想。
关键词:pwm sg3524 控制器
带有i2c总线接口的器件可以十分方便地将一个或多个单片机及外围器件组成单片机系统。尽管这种总线结构没有并行总线那样大的吞吐能力,但由于连接线和连接引脚少,因此其构成的系统价格低、器件间总线连接简单、结构紧凑,而且在总线上增加器件不影响系统的正常工作,系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,也能很方便地确定总线的时钟。
如今,为了提高系统的数据处理精度和处理速度,在家用电器、通讯设备及各类电子产品中已广泛应用dsp芯片。但大多数的尚未提供i2c总线接口,本文将介绍一种基于cpld的已实现的高速dsp的i2c总线接口方案。
图1 i2c总线接口电路结构
1 i2c通信协议
i2c总线是一种用于ic器件之间的二线制总线。它通过sda(串行数据线)及scl(串行同步时钟线)两根线在连到总线上的器件之间传送信息,通过软件寻址实现片选,减少了器件片选线的连接。cpu不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的扩展与控制。i2c总线接口电路结构如图1所示,i2c总线时序图如图2所示。
i2c总线根据器件的功能通过软件程序使其可工作于发送(主)或接收(从)方式。总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于数据传送的方向。sda和scl均为双向i/o线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路的,以具有线“与”功能。i2c总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。
在数据传送过程中,必须确认数据传送的开始和结束信号(也称启动和停止信号)。当时钟线scl为高电平时,数据线sda由高电平跳变为低电平则定义为“开始”信号;当scl为高电平时,sda由低电平跳变为高电平则定义为“结束”信号。开始和结束信号都由主器件产生。在开始信号以后, 总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲状态。
在i2c总线开始信号后,依次送出器件地址和数据,i2c总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ack)。从器件的响应信号结束后,sda线返回高电平,进入下一个传送周期。
2 设计方案
本文以dsp芯片adsp21992与时钟芯片pcf8583的控制接口为例,说明基于cpld的i2c总线接口设计方案。
adsp21992是2003年最新推出的160mips、带can通信接口的适合于高精度工业控制和信号处理的高性能dsp芯片。它带有48k片内ram、sport通信接口、spi通信接口、8通道14位a/d转换器以及pwm等。
pcf8583是一款带有256字节静态cmos ram的时钟/日历芯片。地址和数据严格按照双向双线制i2c总线协议传输。内置地址寄存器在每次读/写后自动递增。
2.1 系统结构设计
系统的基本功能是通过cpld的i2c总线接口完成adsp21992(主控芯片)与pcf8583的数据交换。系统框图如图3所示。
系统主要由两个部分组成:一是dsp与cpld的接口;另一是i2c核。为了能在dsp指定的时刻读/写pcf8583的数据,使用dsp的读写信号、同步时钟和最高位地址控制数据的传输。最高位地址作为控制信号是因为dsp的i/o口比较少,必须优先供应给其它外设,因此用它来产生dsp提供给i2c核的片选信号。而dsp的地址总线位数较多,最高位一般使用不到,这样正好可以充分利用资源。
2.2 i2c
摘要:介绍了一种使用cpld完成dsp芯片i2c总线接口的设计和实现方案,重点叙述了i2c核的设计思想。
关键词:pwm sg3524 控制器
带有i2c总线接口的器件可以十分方便地将一个或多个单片机及外围器件组成单片机系统。尽管这种总线结构没有并行总线那样大的吞吐能力,但由于连接线和连接引脚少,因此其构成的系统价格低、器件间总线连接简单、结构紧凑,而且在总线上增加器件不影响系统的正常工作,系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,也能很方便地确定总线的时钟。
如今,为了提高系统的数据处理精度和处理速度,在家用电器、通讯设备及各类电子产品中已广泛应用dsp芯片。但大多数的尚未提供i2c总线接口,本文将介绍一种基于cpld的已实现的高速dsp的i2c总线接口方案。
图1 i2c总线接口电路结构
1 i2c通信协议
i2c总线是一种用于ic器件之间的二线制总线。它通过sda(串行数据线)及scl(串行同步时钟线)两根线在连到总线上的器件之间传送信息,通过软件寻址实现片选,减少了器件片选线的连接。cpu不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的扩展与控制。i2c总线接口电路结构如图1所示,i2c总线时序图如图2所示。
i2c总线根据器件的功能通过软件程序使其可工作于发送(主)或接收(从)方式。总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于数据传送的方向。sda和scl均为双向i/o线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路的,以具有线“与”功能。i2c总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。
在数据传送过程中,必须确认数据传送的开始和结束信号(也称启动和停止信号)。当时钟线scl为高电平时,数据线sda由高电平跳变为低电平则定义为“开始”信号;当scl为高电平时,sda由低电平跳变为高电平则定义为“结束”信号。开始和结束信号都由主器件产生。在开始信号以后, 总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲状态。
在i2c总线开始信号后,依次送出器件地址和数据,i2c总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ack)。从器件的响应信号结束后,sda线返回高电平,进入下一个传送周期。
2 设计方案
本文以dsp芯片adsp21992与时钟芯片pcf8583的控制接口为例,说明基于cpld的i2c总线接口设计方案。
adsp21992是2003年最新推出的160mips、带can通信接口的适合于高精度工业控制和信号处理的高性能dsp芯片。它带有48k片内ram、sport通信接口、spi通信接口、8通道14位a/d转换器以及pwm等。
pcf8583是一款带有256字节静态cmos ram的时钟/日历芯片。地址和数据严格按照双向双线制i2c总线协议传输。内置地址寄存器在每次读/写后自动递增。
2.1 系统结构设计
系统的基本功能是通过cpld的i2c总线接口完成adsp21992(主控芯片)与pcf8583的数据交换。系统框图如图3所示。
系统主要由两个部分组成:一是dsp与cpld的接口;另一是i2c核。为了能在dsp指定的时刻读/写pcf8583的数据,使用dsp的读写信号、同步时钟和最高位地址控制数据的传输。最高位地址作为控制信号是因为dsp的i/o口比较少,必须优先供应给其它外设,因此用它来产生dsp提供给i2c核的片选信号。而dsp的地址总线位数较多,最高位一般使用不到,这样正好可以充分利用资源。
2.2 i2c