位置:51电子网 » 技术资料 » 模拟技术

I2C总线通信接口的CPLD实现

发布时间:2008/5/27 0:00:00 访问次数:533

作者:空军工程大学 张冬冬 来源:《单片机与嵌入式系统应用》

摘要:介绍采用altera公司的可编程器件,实现i2c总线的通信接口的基本原理;给出部分vhdl语言描述。该通信接口号专用的接口芯片相比,具有使用灵活,系统配置方便的特点。 关键词:i2c总线 cpld vhdl i2c总线是philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。该总线是具备多主机系统所需要的包括裁决和高低速设备同步等功能的高性能串行总线,应用极为广泛。 目前,虽然市场上有专用i2c总线接口芯片,但是地址可选范围小,性能指标固定,功能单一,而且使用不方便。针对i2c总线的电气特性及其通信协议,采用altera公司的flex10k系列isp器件epf10k10lc84-3,可以方便地实现i2c总线的通信接口,且具有高速、易调试、可以灵活地实现在线配置等优点,同时大大减少了系统的开发周期。

1 i2c总线的数据传输规范 i2c总线主从机之间的一次数据传送称为一帧,由启动信号、地址码、若干数据字节、应答位以停止信号组成。通信启动时,主机发送一个启动信号(当scl线上是高电平时,sda线产生一个下降沿)、从机的地址码和读写信号及8位读写数据;通信停止时,主机发送一个停止信号(当scl线上为高电平时,sda线上产生一个上升沿)。在数据传送过程中,当scl线上为高电平时,必须保证sda线上的数据稳定;传送一个字节的数据,必须由接收机发一个应答信号。总线的传输码速率为100kb/s(标准)~400kb/s(高速)。采用+5v电源时,输入电平规定为vilmax=1.5v,vihmin=3v;采用宽电源电压时,电闰规定为vilmax=1.5vdd,vihmin=3vdd。 i2c总线的通信过程如图1所示。 2 isp的逻辑实现 基于上述传输规范,为完成i2c总线的数据发送与接收,isp芯片应完成的逻辑功能如图2所示。可控时钟通过频选,控制获得100khz、200khz、300khz、400khz的时钟频率;同时在器件退出总线竞争后,将时钟线置高电平。 (1)通信的启动与停止 在主机方式下接收数据时,器件必须通过启动信号生成器送出一个启动信号,然后,发送从机的地址信号和读写信号,才能开始在总线上发送数据。该过程由控制寄存器启动。vhdl描述为: pprocee(wr,cs) ——wr is cpu write signal ——cs is this chip's select signal addrs:='0' if(ctrreg(0)='1'and ctrreg(3)='1'and scl1='1' then ——ctrreg为控制寄存器 clk1count:='0'; ada1:='1'; if(clk1'event and clk='0'then if (clk1count='3'then sda1:='0'; addrs:='1'; ctrreg(3):='0'; csta='1'; else clk1count:=clk1count+1; end if; end if; end if; if(addrs='1'and scl1'event and scl1='1') then · · ·——将数据寄存器中的数据及wr信号移位发出(略) · · · end if; end process; 当一次通信结束时,主机要发送停止信号。读过程同样由控制寄存器控制。当控制字的第二位为“1”时,芯片产生停止信号。vhdl描述与启动类似。 (2)发送数据 主机方式下完成启动和地址信号发送后即开始发送数据。发送数据时并串转换器在scl的下降沿移位,保证了scl高电平时sda上的数据稳定。发送的进程由wr

作者:空军工程大学 张冬冬 来源:《单片机与嵌入式系统应用》

摘要:介绍采用altera公司的可编程器件,实现i2c总线的通信接口的基本原理;给出部分vhdl语言描述。该通信接口号专用的接口芯片相比,具有使用灵活,系统配置方便的特点。 关键词:i2c总线 cpld vhdl i2c总线是philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。该总线是具备多主机系统所需要的包括裁决和高低速设备同步等功能的高性能串行总线,应用极为广泛。 目前,虽然市场上有专用i2c总线接口芯片,但是地址可选范围小,性能指标固定,功能单一,而且使用不方便。针对i2c总线的电气特性及其通信协议,采用altera公司的flex10k系列isp器件epf10k10lc84-3,可以方便地实现i2c总线的通信接口,且具有高速、易调试、可以灵活地实现在线配置等优点,同时大大减少了系统的开发周期。

1 i2c总线的数据传输规范 i2c总线主从机之间的一次数据传送称为一帧,由启动信号、地址码、若干数据字节、应答位以停止信号组成。通信启动时,主机发送一个启动信号(当scl线上是高电平时,sda线产生一个下降沿)、从机的地址码和读写信号及8位读写数据;通信停止时,主机发送一个停止信号(当scl线上为高电平时,sda线上产生一个上升沿)。在数据传送过程中,当scl线上为高电平时,必须保证sda线上的数据稳定;传送一个字节的数据,必须由接收机发一个应答信号。总线的传输码速率为100kb/s(标准)~400kb/s(高速)。采用+5v电源时,输入电平规定为vilmax=1.5v,vihmin=3v;采用宽电源电压时,电闰规定为vilmax=1.5vdd,vihmin=3vdd。 i2c总线的通信过程如图1所示。 2 isp的逻辑实现 基于上述传输规范,为完成i2c总线的数据发送与接收,isp芯片应完成的逻辑功能如图2所示。可控时钟通过频选,控制获得100khz、200khz、300khz、400khz的时钟频率;同时在器件退出总线竞争后,将时钟线置高电平。 (1)通信的启动与停止 在主机方式下接收数据时,器件必须通过启动信号生成器送出一个启动信号,然后,发送从机的地址信号和读写信号,才能开始在总线上发送数据。该过程由控制寄存器启动。vhdl描述为: pprocee(wr,cs) ——wr is cpu write signal ——cs is this chip's select signal addrs:='0' if(ctrreg(0)='1'and ctrreg(3)='1'and scl1='1' then ——ctrreg为控制寄存器 clk1count:='0'; ada1:='1'; if(clk1'event and clk='0'then if (clk1count='3'then sda1:='0'; addrs:='1'; ctrreg(3):='0'; csta='1'; else clk1count:=clk1count+1; end if; end if; end if; if(addrs='1'and scl1'event and scl1='1') then · · ·——将数据寄存器中的数据及wr信号移位发出(略) · · · end if; end process; 当一次通信结束时,主机要发送停止信号。读过程同样由控制寄存器控制。当控制字的第二位为“1”时,芯片产生停止信号。vhdl描述与启动类似。 (2)发送数据 主机方式下完成启动和地址信号发送后即开始发送数据。发送数据时并串转换器在scl的下降沿移位,保证了scl高电平时sda上的数据稳定。发送的进程由wr

相关IC型号

热门点击

 

推荐技术资料

泰克新发布的DSA830
   泰克新发布的DSA8300在一台仪器中同时实现时域和频域分析,DS... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!