利用CPLD器件和微处理器实现I2C总线控制器的应用方案

时间:2025-06-12  作者:Diven  阅读:0

1 引言

利用CPLD器件和微处理器实现I2C总线控制器的应用方案

I2C总线是PHILIPS公司推出的新一代串行总线,由于其结构简单、灵活,各结点具有独立的电气特性,可实现电路的模块化、标准化而被应用。目前许多MCU都带有I2C总线接口,对没有I2C总线的MCU,可采用软件模拟,有通用软件包可以使用,但功能比较简单。在MCU(以Motorola 68000系列为例)和CPLD电子系统设计中,利用CPLD器件资源,按照I2C总线协议标准模式,设计了功能完善的I2C总线控制器,给出了设计思路和实现方法。

2 I2C总线控制器的设计与实现

2.1 I2C总线控制器的原理图

I2C总线控制器的设计采用VHDL语言描述,经编译、综合、适配,下载到具体的CPLD目标器件中,即可实现I2C总线控制器功能。其原理图如图一所示,该设计包括MCU接口和I2C总线接口两大部分。

2.2微处理器(MCU)接口逻辑的设计

MCU接口逻辑包括:地址译码/总线接口、状态寄存器MBSR)、控制寄存器(MBCR)、地址寄存器(MADR)和数据寄存器(MBDR)等组成。I2C总线控制器的微处理器接口支持异步字节数据传输协议,该协议的执行是通过MCU对I2C总线控制器中有关寄存器读写完成的,MCU读写协议如图二所示。

2.2.1地址译码/总线接口的设计

在I2C总线控制器中对MCU数据读/写协议的执行由MCU总线接口状态机完成,整个状态机包含空闲状态、地址译码状态、数据传输状态和应答状态。当MCU设置读/写操作、输出要访问的I2C控制器中寄存器地址信号,并使地址选通信号有效时,状态机从空闲状态进入地址译码状态。若I2C控制器中寄存器被寻址且数据选通信号有效,状态机从地址译码状态进入数据传输状态:如果是读周期,I2C控制器将被访问的寄存器中数据放置在MCU接口总线上;如果是写周期,I2C控制器将从MCU接口总线取数据锁存到I2C控制器的内部被访问的寄存器中,状态机自动进入应答状态,此时,DTACK信号有效表明,如果是读周期,MCU即可从MCU接口总线读取数据;如果是写周期,数据已锁存到I2C的内部寄存器中。

2.2.2 MCU接口特殊功能寄存器的功能

MCU接口地址线共24根,其中高16位为基址(MBASE),用于确定I2C控制器的地址,低8位为MCU接口中特殊功能寄存器的地址。

1)地址寄存器(MADR):寄存器地址为MBASE+$8Dh,存放I2C控制器工作在从机模式时的从机地址。从机地址占高7位,最低位未用。

2) 控制寄存器(MBCR):寄存器地址为MBASE+$91h,产生控制信号,各位功能如下:

MEN:I2C控制器使能。该位为1时,控制寄存器的其各位才有效;MIEN:中断使能;

MSTA:主/从模式转换。当MCU使该位从0变为1,I2C进入主机模式,并产生起始条件;若清0,产生停止条件,并转换为从机模式;

MTX:主机发送/接收模式选择。置1,主机发送,清0,主机接收;

TXAK:传输应答使能。置1,无应答;清0,有应答;

RSTA:重复起始条件。I2C控制器在主机模式,写入1,产生重复起始条件;若总线被其主机占用,写入1时,读回0。

3)状态寄存器(MBSR):寄存器地址为MBASE+$93h,各位设置与功能如下:

MCF:数据传送标志位,当一字节数据正在传输时,为0,一字节数据传输结束,置1;

MASS:从机地址寻址标志位。当I2C控制器中地址寄存器的值与I2C总线传输的地址匹配时,置1,否则为0;

MBB:I2C数据总线忙标志位;

MAL:仲裁丢失标志位。当I2C控制器仲裁丢失时,由硬件置1,MCU的软件清0;

SRW:从机读/写标志位。I2C工作于从机模式,主机从I2C控制器读,置1;写,清0;

MIF:中断请求标志位。当MIEN置1,且有中断请求时,该位置1,在MCU的中断服务程序中,由软件清0;

RXAK:接收应答信号标志位。有应答信号接收,置1;无应答信号接收,清0。

4) 数据寄存器(MBDR):寄存器地址为MBASE+$95h,在物理上,数据寄存器映射成两个独立的寄存器,一个用于发送数据,一个用于接收数据,当MCU访问时,两个寄存器共用一个地址。

2.3 I2C接口逻辑的设计

I2C接口主要包括:主状态机、起始条件/停止条件/SCL时钟信号的生成、仲裁/起始条件/停止条件的检测、I2C状态寄存器、I2C数据寄存器、地址比较、和I2C标题寄存器模块等组成。

2.3.1仲裁、起始条件/停止条件的检测

I2C控制器在下列情况将发生仲裁丢失:1) I2C控制器在主机模式,在地址或数据发送周期,当主机发送“1”,但在数据线上的采样值“0”;2) I2C控制器在主机接收模式,在数据接收周期的应答位,当主机发送“1”,但在数据线的上采样值“0”;3)当总线忙时,MCU企图产生起始条件;4) I2C控制器在从机模式,MCU企图产生重复起始条件;5) I2C控制器在主机模式,没有产生停止请求,但检测到停止条件。当I2C控制器检测到起始条件时,数据总线忙标志位置1,检测到停止条件时,数据总线忙标志位清0。

2.3.2 SCL、SDA、起始、停止条件的产生

该模块完成如下功能: 1)允许任何主机控制总线,一旦I2C总线控制器控制总线,将产生起始条件;2)产生SCL串行时钟信号,且对SCL进行逐位仲裁,满足时钟同步协议;3)I2C总线控制器在发送模式时从数据寄存器(MBDR)发送数据到SDA数据线上;4)若I2C总线控制器检测到仲裁丢失,将继续产生SCL信号直到丢失仲裁的该字节末尾;5)当有重复起始条件和停止条件请求时,产生重复起始条件和停止条件。

2.3.3 I2C接口主状态机

I2C接口主状态机如图三所示,无论I2C控制器工作于主机还是从机模式,这个状态机都适用。当仲裁丢失或作为从机被寻址时,I2C控制器立即从主机模式转换为从机模式。

在HEADER状态,I2C工作在主机模式时,一方面从数据寄存器(MBDR)发送标题到I2C总线上,另一方面将I2C数据线上的数据逐位接收到标题移位寄存器内,当8位数据全部移入时,进入ACK_HEADER状态。在ACK_HEADER状态,I2C控制器于主机模式,采样SDA的值, 从而决定是否有从机应答,如果从机不应答,进入STOP状态,等待生成停止条件;如果从机有应答,标题移位寄存器中最低位决定I2C控制器是接收还是发送数据,状态转换到RCV_DATA或XMIT_DATA状态。不断地将地址寄存器(MADR)的值与标题移位寄存器的值进行比较,若地址匹配,I2C控制器作为从机被寻址并立即转换为从机模式。状态寄存器(MBSR)中的从机寻址标志位MAAS置位,将TXAK位发送到SDA线上应答当前的主机,同样标题移位寄存器中最低位决定数据传送方向和下一状态。

3 结语

本文根据I2C总线规范的标准模式,在MCU和CPLD综合应用系统中设计了I2C总线控制器。在实际应用系统中嵌入该IP核,可以节约成本,提高系统的适用范围和可靠性,具有很高的参考设计价值和工程实用价值。

猜您喜欢

随着工艺几何尺寸越来越小,电子器件趋向于采用多种电压供电,因此越来越易受到电压和温度波动的影响,而且在所有电子系统设计中进行系统管理的重要性也不断增强。表面上好...
2020-07-24 15:04:00

现代市场中,配件的选择和使用往往是产品性能和用户体验的重要决定因素。今天,我们将重点介绍一种特定规格的配件——“Accessories_17.4X11.5MM_...
2025-03-07 01:40:32

现代电子产品设计中,封装技术是一个很重要的环节。XDFN(极薄双列扁平封装)作为新型封装形式,因其优越的性能和紧凑的尺寸而受到广泛关注。本文将重点探讨XDFN4...
2025-02-21 14:14:18

现代电子技术中,二极管作为重要的电子元件,被应用于各种电路中。尤其是雪崩二极管(Avalanche Diode)和瞬态电压抑制二极管(Transient Vol...
2025-04-06 13:00:35

温度保险丝作为重要的安全保护元件,得到了应用。CNOBLE作为行业内知名的温度保险丝品牌,其产品因高品质和可靠性受到了市场的高度认可。那么,CNOBLE温度保险...
2021-10-27 11:46:30

电流检测电阻作为关键元件,在电路设计中是重要配件。奥斯特(OST)作为电流检测电阻领域的知名品牌,优异的性能和稳定的品质受到关注。本文将围绕奥斯特(OST)电流...
2015-08-25 22:13:30

肖特基二极管是应用于电子电路中的半导体器件,因其低正向压降和快速开关特性而备受青睐。在实际应用中,了解如何测量肖特基二极管的性能非常重要。本文将为您详细介绍肖特...
2025-04-05 02:01:39

0912贴片电阻(公制代码,英制代码为0201)因其微小的尺寸,在焊接和使用过程中可能会遇到一些挑战。本文将介绍一些常见问题及相应的解决方法。首先,焊接0912...
2024-11-26 11:29:46

割炬枪和割炬嘴是焊接与切割行业中不可少的重要工具,主要优势体现在以下几个方面。割炬枪的设计 ergonomics 人性化,操作方便,能够有效减少工人的疲劳感,提...
2009-11-01 00:00:00

你或许听说过变压器可以改变电压,但你知道有一种巧妙的技术,可以仅用电容和开关就产生负电压吗?就是电荷泵。想象一下,一群勤劳的搬运工(电容)在电路中来回穿梭,将正...
2024-06-11 00:00:00