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

时间:2025-04-28  作者: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核,可以节约成本,提高系统的适用范围和可靠性,具有很高的参考设计价值和工程实用价值。

猜您喜欢

你是否曾对着电路板上的贴片电阻,好奇上面那些神秘的数字和字母代表什么?其实,这些丝印并非无序排列,而是记录着电阻的关键参数。掌握解读方法,就能快速识别电阻阻值,...
2024-11-29 10:25:45

在工业和建筑领域,管件是连接和改变管道方向的重要组成部分。了解其管件的参数对于确保系统的安全和高效运行非常重要。管件的材质是一个关键参数,常见的有不锈钢、碳钢、...
2013-04-01 00:00:00

2512贴片电阻,指的是尺寸为2.5mm x 1.2mm的表面贴装电阻器。别看它身材小巧,却拥有着令人惊叹的功率承受能力。相比于更小尺寸的贴片电阻,2512电阻...
2025-04-14 15:03:46

线性模拟乘法器和除法器在现代电子系统中是重要配件,其主要优势体现在以下几个方面。线性模拟乘法器和除法器具有高精度和快速响应的特性,能够在各种应用中实现精确的信号...
2011-12-25 00:00:00

国巨贴片电阻以其小巧的体积和优异的性能,广泛应用于电子电路中。然而,由于其尺寸限制,阻值标识通常采用简化的丝印代码,对于初学者来说,解读这些代码可能会有些困难。...
2024-11-26 11:30:05

数字化时代,电脑已经成为我们生活中重要的一部分。无论是工作、学习还是娱乐,长时间面对电脑屏幕已经成为常态。然而,长时间在昏暗的环境下使用电脑,不仅容易造成眼疲劳...
2024-10-08 00:00:00

电容是电子设备中的重要元件。内部结构决定了其性能。本文将为您介绍电容的内部结构及其材质组成。 电容的基本构造电容通常由两个导体和绝缘材料组成。导体一般是金属,绝...
2025-04-02 15:31:40

无人机作为新兴科技产品,已逐渐融入我们的生活,航拍、植保等应用场景日益丰富。然而,无人机电池的安全问题也不容忽视,不当的充电操作可能引发火灾等安全事故,同时也会...
2024-03-13 00:00:00

0805贴片电阻所能承受的电流并不是一个固定值,而是取决于它的功率。常见的0805电阻功率规格为1/8瓦(0.125W)或1/10瓦(0.1W)。要计算最大允许...
2024-11-26 11:29:12

10月16日盘后,炬光科技发布公告称,该公司于近日获得了某欧洲知名汽车 Tier1 客户(客户代号:AG 公司,限于保密协议,无法披露其名称)的第二个激光雷达线...
2024-10-23 18:27:00