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

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

猜您喜欢

敲渣锤是应用于工业和建筑领域的工具,主要用于清理和加工金属材料。应用领域包括冶金行业,在炼钢和铸造过程中,敲渣锤可以有效去除炉渣,提高金属的纯度和质量。在建筑工...
2017-10-07 00:00:00

锡膏和锡浆是电子制造行业中常用的材料,虽然都以锡为主要成分,但在应用和特性上存在显著区别。锡膏是粘稠的混合物,主要用于表面贴装技术(SMT)中。由锡粉、助焊剂和...
2008-10-26 00:00:00

出锡机是专门用于焊接和电子组装行业的设备,能够高效、精准地将锡焊料涂布到需要焊接的部件上。该设备通过加热和控制锡的流动,确保焊接质量和一致性,显著提高生产效率。...
2014-08-28 00:00:00

鞋底清洁机是专门用于清洁鞋底的设备,具有多种重要作用。能够有效去除鞋底上的泥土、沙石和污垢,保持鞋子的干净整洁,避免将脏物带入室内。定期清洁鞋底可以延长鞋子的使...
2017-10-28 00:00:00

贴片电阻上的590标识代表其阻值为59欧姆。 这是一种简化的表示方法,遵循EIA-96标准的3位数代码规则。前两位数字59代表有效数字,第三位数字0代表10的0...
2024-11-29 10:26:31

现代工业与科技不断发展的背景下,PM_39X25MM_TM作为一种重要的产品,越来越受到各行各业的关注。它不仅在功能上具有独特的优势,同时在实际应用中也展现出了...
2025-03-07 06:42:30

快速发展的光电技术领域中,激光二极管作为核心元件,其重要性不言而喻。国内激光二极管市场正经历着前所未有的增长,众多企业纷纷涌入,竞相角逐。本文将为您揭示国内激光...
2025-03-29 20:00:01


现代电子设备中,微型封装技术的应用越来越。DSBGA6_1.47X0.97MM作为新兴的封装形式,凭借其小巧的尺寸和优良的性能,受到了业界的关注。本文将对DSB...
2025-04-21 09:31:46

贴片电阻的拆卸需要一定的技巧和工具,操作不当容易损坏电路板或元器件。这里介绍几种常用的方法:1. 热风枪: 这是最常用也是最安全的方法。使用热风枪均匀加热电阻周...
2024-11-29 10:26:00