当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:随着I2C总线应用的越来越广泛,其电路简单,编程方便,易于系统标准化与维护的优点也日益显现出来。 文章在分析了I2C总线的基本概念和工作原理的基础上,重点介绍了基于Wolfson音频SoC的I2C总线接口的系统结 构和程序设计方法。

引言

I2C(Inter-IntegratedCommunication),单线是Philips公司开发的一种高效、简单、双向、两线制同步串行总线,它仅需要两根线(串行数据线SDA和串行时钟线SCL)即可为连接到总线的设备提供简单有效的数据交换方式该总线可将各电路分割成各种功能的模块,并进行软件化设计,各个功能模块电路内部都集成有一个I2C总线接口电路,故可连接在总线上,从而很好地进行众多功能模块与MCU之间的输入输出接口,并使连接方式变得简便,同时可灵活地实现在线配置。本文采用VerilogHDL设计了一个FC总线的控制模块,该模块能够实现FC的所有功能。此外,该模块可作为一个软核来方便地嵌入到音频SoC系统中,这就是当前非常流行的两线总线。

1 I2C总线原理

通常将FC总线主从机之间的一次数据传送称为一帧,一帧数据一般由启动信号、地址码、若干数据 字节、应答信号位以及停止信号等组成。SDA SCL都通过一个电流源或者上拉电阻连接到正的电 源电压,图1所示是rc总线上标准模式器件和快速 模式器件之间的连接电路,由图1可见,当总线空闲 时,这两条线路都是高电平,连接到总线的器件输出 级必须是漏极开路或者集电极开路才能执行“线与” 的逻辑功能。串行8位双向数据传输位速率在rc 总线的标准模式下,其速率可达100 Kb/s,快速模式 下可达400 Kb/s,高速模式下可达3. 5 Mb/s。

基于Wolfson音频SoC的I2C总线接口设计

I2C总线可构成多主和多从系统。在系统结构中,系统通过硬件或者软件仲裁获得总线控制权。在应用系统中,I2C总线多采用主从结构。I2C总线上的设备寻址由器件地址线决定,与总线相连的每个器件都对应一个特定的地址,同时采用软件寻址方式,并且可以通过访问地址最低位来控制W/R方向。I2C总线的数据传输格式如图2所示。

基于Wolfson音频SoC的I2C总线接口设计

I2C总线上发送数据的操作(针对WM8731/8731L类似的设备)过程一般可为4步:

第一步,启动START信号,接着写一个字节的设备地址,地址字节的高7位是设备有效地址,地址字节的最低1位代表准备写(低电平),然后等待ACK应答;

第二步,应继续写一个字节的rc设备内部数据访问地址,然后等待发出ACK;

第三步即可开始发送数据,发送的数据可以是一个字节,也可以连续发送N个字节,每发送完一个字节的数据,都需要等待一个应答ACK信号;

最后发送的是一个STOP信号,以结束发送操作。

在I2C总线上接收数据的操作(针对WM8731/8731L类似的设备)过程如下:

第一步,也是启动START信号,接着写一个字节的设备地址,地址字节的高7位是设备有效地址,地址字节的最低位代表准备写(低有效),然后等待ACK应答;

第二步,继续写一个字节的I2C器件内部数据访问地址,并等待ACK;

第三步,再次启动START信号,此时再写一个字节的设备地址,这个设备地址字节的最低1位若为高电品,则代表准备接收数据;

第四步,开始接收数据,数据可以是接收一个字节,也可以连续接收N个字节。在接收前面的N—1个字节后,每接收一个字节数据,都要产生一个ACK;

第五步,在接收最后一个字节数据前停止控制器生成ACK信号,然后等待最后一个字节的数据就绪后,再读取;

最后,发送一个STOP信号,以停止接收操作。

2 I2C总线的接口设计

2.1  总体内部架构设计

图3所示为rc总线接口中ip核的总体结构。该接口主要包括时钟发生器,字节命令控制器、位命令寄存器、数据I/O移位寄存器、发送与接收寄存器等几部分。

基于Wolfson音频SoC的I2C总线接口设计

时钟发生器可用于产生时钟使能信号,该信号可触发位命令控制器的所有时钟同步操作。

字节命令控制器承担着I2C接口字节数据的传输任务。它从I2C寄存器中的命令寄存器中读取操作命令。这些命令可通过设置该寄存器中的某些位来完成,并且都是以字节为单位。

位命令寄存器负责总线上实际的数据传输工作,包括START和STOPo这些操作可通过控制SCL和SDA线来实现。

数据I/O移位寄存器中存储着当前数据传输所需要的数据。如果是读操作,移位寄存器将接收从SDA线上的逐位数据;如果是写操作,移位寄存器则将该数据逐位发送到SDA线上。

2.2 I2C接口控制器

I2C总线是通过二根线来连在器件之间进行通信的总线,它可根据地址识别每个器件。每个I2C设备都有自己固定的硬件地址。对于芯片WM8731/WM8731L的FC总线它的两个从地址为001_1011和001_1010oWM8731设备的控制操作可以描述为:首先发出该设备地址,和该设备建立连接,再向该设备读或写2个字节的数据,最后发出停止信号以结束I2C通讯。

对WM8731的控制实际上就是控制FC设备读/写数据,本文不涉及读数据而只介绍部分rc总线写数据的关键Verilog程序设计。

2.3  启动与停止程序

检测通讯启动与停止的Verilog程序如下:

always@(posedge mclk or negedge reset_n)

基于Wolfson音频SoC的I2C总线接口设计

在主机方式下,完成启动与地址信号发送后,即开始发送数据。发送数据时,并串数据在SCL的下降沿移位,这样可保证SCL高电平时SDA数据的稳定。发送的进程由WR信号和从机的应答信号启动。为了保证时序正确和控制的可靠,软件程序可采用有限状态机来设计。其Verilog程序如下:

基于Wolfson音频SoC的I2C总线接口设计

基于Wolfson音频SoC的I2C总线接口设计

基于Wolfson音频SoC的I2C总线接口设计

3 仿真结果

设计时,可以釆用Xilinx公司的集成开发工具ISE9.0,仿真工具使用SYNPOSYS的VCS仿真软件,图4所示是其仿真波形,由图可见,该设计是正确的。整个设计可以采用Verilog语言描述在LINUX平台上完成系统的仿真、综合、映射、布局。在得到正确的仿真结果后,通过器件编程(即通过编程器将设计下载到实际芯片中)来进行系统调试,直到最后实现。

基于Wolfson音频SoC的I2C总线接口设计

4  结语

本文介绍了一种简易的音频soc的I2c总线接口的软件设计方法。该设计可以作为一个ip核方便地嵌入音频SoC的系统设计中,以用于对具有I2c接口的芯片ic芯片进行数据读写。目前,本设计已经在实践项目中投片,并已经通过实际系统的测试。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭