您现在的位置是: 首页 > 笔记本电脑 笔记本电脑
i2c硬件接口_i2c接口标准
ysladmin 2024-05-24 人已围观
简介i2c硬件接口_i2c接口标准 大家好,今天我将为大家详细介绍i2c硬件接口的问题。为了更好地呈现这个问题,我将相关资料进行了整理,现在就让我们一起来看看吧。1.触摸屏有几种接口2.I2c总线一般拿来实现什么功能?3.51单片机 i
大家好,今天我将为大家详细介绍i2c硬件接口的问题。为了更好地呈现这个问题,我将相关资料进行了整理,现在就让我们一起来看看吧。
1.触摸屏有几种接口
2.I2c总线一般拿来实现什么功能?
3.51单片机 iic 总线程序,用IO口模拟和用自带IIC口有什么不同?
4.I2C是什么
5.硬件i2c和软件i2c有什么不同
6.iic的I2C简介
触摸屏有几种接口
摘要:触摸屏的构造主要是在玻璃屏幕上镀一层透明的薄膜导体层,再在导体层外加上一块保护玻璃,双玻璃设计能彻底保护导体层及感应器。触摸屏的接口一般是IIc接口,也有的是用spi接口。下面,小编整理了相关资料,一起来看看了解下吧,希望对你有帮助。触摸屏接口的类型和作用
1、SPI接口
SPI(SerialPeripheralInterface):串行外围接口。是Motorola首先在其MC68HCXX系列处理器上定义的。它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
2、I2C接口
I2C(Inter-IntegratedCircuit):I2C总线是一种由NXP(原PHILIPS公司)开发的两线式串行总线,最主要的优点是其简单性和有效性。总线是用于连接微控制器及其外围设备。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
3、CPU接口
CPU在智能机之前的功能机上用的多,手机进入到大屏时代后,并口的传输速度跟不上,特别是面临高清播放的应用,能力不足,所以出现了MDDI和MIPI。
4、RGB接口
大屏采用较多的模式,数据位传输也有6位,16位和18位之分。连线一般有:VSYNC,HSYNC,DOTCLK,VLD,ENABLE,剩下就是数据线。
5、LVDS接口
LVDS(LowVoltageDifferentialSignaling)是一种低压差分信号技术接口。它是美国NS公司(美国国家半导体公司)为克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。采用LVDS输出接口可以实现低噪声和低功耗。
6、MDDI接口
MDDI(MobileDisplayDigitalInterface):高通公司于2004年提出的接口,通过减少连线可提高移动电话的可靠性并降低功耗,这将取代SPI模式而成为移动领域的高速串行接口。连线主要是host_data,host_strobe,client_data,client_strobe,power,GND几根线。
7、MIPI接口
MIPI为多家重量级厂商联合成立的组织,其推出了一系列移动标准,其中就包括MIPIDSI。Mipi推出的时间不长,但推广速度很快,包括iphone4/MeizuM9都采用mipi接口(可能现在除了高通的手机,大部分都是)。Mipi接口有物理规范,因此我们看到的支持DSI的开发板和LCD都是mipi规范的排线。
I2c总线一般拿来实现什么功能?
利用Linux中IIC设备子系统移植IIC设备驱动
背景描述
IIC总线在嵌入式系统中应用十分广泛,常见的有eeprom,rtc。一般的处理器会包含IIC的控制器,用来完成IIC时序的控制;另外一方面,由于IIC的时序简单,使用GPIO口来模拟时序也是常见的做法。面对不同的IIC控制器,各种各样的芯片以及linux源码,如何更快做好IIC设备驱动。
问题描述
在我们的方案中,我们会用到eeprom,rtc以及tw2865。由于Hi3520的IIC控制器设计有问题,无法正常使用。而IIC控制器的SDA和SCL管脚正好是和两个GPIO管脚复用的。Hisi将控制gpio来实现IIC的时序,从而对IIC设备进行操作。这种设计方式简单明了,但使用IIC子系统,可以更方便的移植和维护其他的设备驱动。
问题分析
Hisi对于gpio口,rtc芯片以及tw2865的处理方式如下:将gpio口做成一个模块化的驱动,该驱动模拟IIC时序,并向外提供一些函数接口,比如:EXPORT_SYMBOL(gpio_i2c_read_tw2815);等。对于具体的rtc芯片,将其注册为一个misc设备,并利用gpio模块导出的函数进行rtc芯片的配置操作。
其实对于linux-2.6.24\drivers\i2c目录下代码,我们可以加以利用。
Linux的IIC字结构分为三个组成部分:
IIC核心
IIC核心提供了IIC总线驱动和设备驱动的注册、注销方法,IICalgorithm上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码。
IIC总线驱动
IIC总线驱动是对IIC硬件体系结构中适配器端的实现。
IIC设备驱动
IIC设备驱动是对IIC硬件体系总设备端的实现。
我们查看下该目录下的makefile和kconfig:
obj-$(CONFIG_I2C_BOARDINFO) +=i2c-boardinfo.o
obj-$(CONFIG_I2C) += i2c-core.o
obj-$(CONFIG_I2C_CHARDEV) +=i2c-dev.o
obj-y +=busses/ chips/ algos/
i2c-core.c就是IIC核心,buses中的文件是主流处理器中IIC总线的总线驱动,而chips中的文件就是常用芯片的驱动,algos中的文件实现了一些总线适配器的algorithm,其中就包括我们要用到的i2c-algo-bit.c文件。
我们首先利用i2c-gpio.c和i2c-algo-bit.c做好总线驱动。
在i2c-gpio.c中,module_init?i2c_gpio_init?platform_driver_probe(&i2c_gpio_driver,i2c_gpio_probe);
将其注册为platform虚拟总线的驱动。
在staticint __init i2c_gpio_probe(struct platform_device *pdev)中,
定义了如下三个结构体:
structi2c_gpio_platform_data *pdata;//平台相关的gpio的设置
structi2c_algo_bit_data *bit_data;//包含algorithm的具体函数,setor
get SDA和SCL
structi2c_adapter *adap;//适配器
i2c_gpio_probe主要做了下面几件事:
填充bit_data结构的各个函数指针,关联到具体的操作SDA和SCl函数。
填充adap结构,adap->algo_data= bit_data;
pdata= pdev->dev.platform_data;
bit_data->data= pdata;
pdev->dev->driver_data= adap;
在i2c-core中注册适配器类型。
inti2c_bit_add_numbered_bus(struct i2c_adapter *adap)
在staticint i2c_bit_prepare_bus(struct i2c_adapter *adap)中
adap->algo= &i2c_bit_algo;
将i2c_bit_algo与adap关联上。
static const structi2c_algorithm i2c_bit_algo = {
.master_xfer = bit_xfer,
.functionality = bit_func,
};
其中,master_xfer函数指针就是IIC传输函数指针。
I2c-algo-bit.c还实现了IIC开始条件,结束条件的模拟,发送字节,接收字节以及应答位的处理。
i2c-gpio.c中的i2c_gpio_setsda_val等函数是与具体平台gpio相关的。
修改对应arch-hi3520v100目录下的gpio.h中的各个函数,这些函数是通过操作寄存器来控制gpio的方向和值。
在对应mach-hi3520v100中的platform-devices.c中添加如下:
static structi2c_gpio_platform_data pdata = {
.sda_pin = 1<<0,
.sda_is_open_drain = 1,
.scl_pin = 1<<1,
.scl_is_open_drain = 1,
.udelay = 4, /* ~100 kHz */
};
static struct platform_devicehisilicon_i2c_gpio_device = {
.name = "i2c-gpio",
.id = -1,
.dev.platform_data = &pdata,
};
static struct platform_device*hisilicon_plat_devs[] __initdata = {
&hisilicon_i2c_gpio_device,
};
int __inithisilicon_register_platform_devices(void)
{
platform_add_devices(hisilicon_plat_devs,ARRAY_SIZE (hisilicon_plat_devs));
return 0;
}
通过platform添加devices和driver,使得pdev->dev.platform_data=pdata
综合上面的过程,我们完成了adapter的注册,并将用gpio口模拟的algorithm与adapter完成了关联。
这样,在rtc-x1205.c中,x1205_attach函数利用i2c核心完成client和adap的关联。
在x1205_probe函数中填充i2c_client结构体,并调用i2c_attach_client通知iic核心。
接着注册rtc驱动。
最后我们要读取时间,就需要构造i2c_msg结构体,如下所示:
struct i2c_msg msgs[] = {
{ client->addr, 0, 2,dt_addr }, /* setup read ptr */
{ client->addr, I2C_M_RD,8, buf }, /* read date */
};
/* read date registers */
if((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
dev_err(&client->dev,"%s: read error\n", __FUNCTION__);
return -EIO;
}
dt_addr是寄存器的地址,I2C_M_RD表示iicread。
51单片机 iic 总线程序,用IO口模拟和用自带IIC口有什么不同?
I2C总线控制器为微控制器或微处理器提供控制I2C总线的接口,它控制所有I2C总线的特殊序列、协议、仲裁、时序,这里指MPC8250提供的I2C总线控制接口。总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。
总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。总线按功能和规范可分为五大类,数据总线、地址总线、控制总线、扩展总线及局部总线。
I2C是什么
其实程序是一模一样的,唯一的区别是模拟IIC需要CPU运算,这样就增加了单片机的运算时间,而带IIC接口的单片机,程序还是需要的,但是IIC的运算通过集成在单片机里面的寄存器硬件电路来运算,就像定时器电路一样自己会运算,这样就不要cpu来运算过程了,从而节省了时间,使cpu运算的更快。当然这样就的多付出经济成本哦
硬件i2c和软件i2c有什么不同
I?C(Inter-Integrated Circuit)是内部整合电路的称呼,是一种串行通讯总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边装置而发展。I?C(读作"I-squared-C" ),还有可选的拼写方式是I2C(读作I-two-C)以及IIC(读作I-I-C),在中国则多以"I方C"称之。1. I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
2. 主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。
3. 在硬件上,12C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺.因此I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为12C芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用IC可以很容易形成标准化和模块化,便于重复利用。
4. I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。
5. I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试,故障可以立即被寻址,软件也利于标准化和模块化,缩短开发时问。连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。
iic的I2C简介
软件i2c是程序员使用程序控制SCL,SDA线输出高低电平,模拟i2c协议的时序。一般较硬件i2c稳定,但是程序较为繁琐,但不难。
硬件i2c程序员只要调用i2c的控制函数即可,不用直接的去控制SCL,SDA高低电平的输出。但是有些单片机的硬件i2c不太稳定,调试问题较多。
论文题目“基于I2C总线接口的数据采集系统设计”,哪位高手给点建议啊?
即I2C,一种总线结构。例如:内存中的SPD信息,通过IIC,与BX芯片组联系,IIC 存在于英特尔PIIX4结构体系中。
随着大规模集成电路技术的发展,把CPU和一个单独工作系统所必需的ROM、RAM、I/O端口、A/D、D/A等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的CPU,各种容量的ROM、RAM以及功能各异的I/O接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行总线,另一种是串行总线。由于串行总线的连线少,结构简单,往往不用专门的母板和插座而直接用导线连接各个设备。因此,采用串行线可大大简化系统的硬件设计。PHILIPS公司早在十几年前就推出了I2C串行总线,利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能。因此,这是一种高性能的串行总线。
飞利浦电子公司日前推出新型二选一I2C主选择器,可以使两个I2C主设备中的任何一个与共享资源连接,广泛适用于从MP3播放器到服务器等计算、通信和网络应用领域,从而使制造商和终端用户从中获益。PCA9541可以使两个I2C主设备在互不连接的情况下与同一个从设备相连接,从而简化了设计的复杂性。此外,新产品以单器件替代了I2C多个主设备应用中的多个芯片,有效节省了系统成本。
I2C总线接口协议设计及FPGA的实现
摘 要:简单介绍了I2C总线规范和提出一种基于FAGA的I2C总线接口协议的设计方法,并给出了仿真结
果。
关键词:I2C总线;FPGA;Verilog HDL
0 引言
I2C总线是Philps公司开发的一种用于芯片间通讯的串
行传输总线,它由串行时钟线SCL和串行数据线SDA完成全
双工数据传送。由于它具有连线少、允许多主机控制、具有总
线仲裁和同步等特点,被广泛应用到各个领域,并已经成为一
种世界性的工业标准。本文结合现行的研究项目,利用ver-
ilog HDL语言在FPGA上设计实现I2C总线接口功能。
1 I2C总线的基本原理
I2C总线数据传输时,在时钟高电平期间数据线上必须
保持有稳定的逻辑电平状态,高电平为数据1,低电平为数
据0。只有在时钟线为低电平时,才允许数据线的电平状态
变化。
起始信号:在时钟线保持高电平期间,数据线出现由高
电平向低电平变化时启动I2C总线,为I2C总线的起始信
号。
终止信号:在时钟线保持高电平期间数据线上出现由低
到高的电平变化时将停止I2C总线的数据传送,为I2C总线
的终止信号。
应答信号:I2C总线数据传送时,每传送一个字节数据
后都必须有应答信号。应答信号在第九个时钟位上出现,接
收器输出低电平为应答信号(A),输出高电平则为非应答信
号(-A)。图1为一次完整的数据传输。
按照设计要求需要有8位双向数据线(data-bus),1位
时钟线(clk),2位控制线(drive和r/-w)、一位握手线(mcf)、
一位串行时钟线(scl)及一位串行数据线(sda)共计14位输
入输出引线。EDA模块的主要功能是完成并行数据与串行
数据的转换,在转换过程中串行数据的输入与输出必须满足
I2C总线规范。
分频器:由FPGA的锁相环输出的稳定时钟信号,由于
频率很高所以必须经过分频模块输出满足I2C总线要求的
数据传输速率。
I2C总线接口控制时序逻辑块:I2C总线数据传输的所
有时序控制逻辑都由它产生,是这个I2C模块的核心。
数据锁存器:根据读写使能信号(r/-w)存储I2C己接收
的或待发送的数据。
移位寄存器:在时序控制逻辑模块的控制下根据读写使
能信号(r/-w)对数据进行正确地处理。
3 verilog HDL代码设计
由于I2C总线传输协议可知,I2C在传输过程中存在着
几个固定的状态,因此我们采用同步状态机来设计I2C模
块。主状态机共有5个状态:空闲(Idle),开始(Start),发送
数据(Tx),接收数据(Rx),停止(Stop)。
Idle:I2C总线处在空闲状态。Start:当drive信号为高
电平时开始运作I2C模块,且根据(r/-w)判断进入下一状态。
Tx:当(r/-w)为“0”时传输数据。Rx:当(r/-w)为“1”时接收数
据。Stop:当数据传输完毕,跳入Stop状态。状态转移图如
图3所示。
4 仿真验证
对I2C总线串口设计的系统调试主要是看串行时钟线
(scl)及串行数据线(sda)的输出是否满足I2C总线规范。为
此我们将I2C模块实例化了两个模块master和slave,并设
计了顶层模块调用master和slave,使用了modelsim6.0进行
了仿真。从图4和图5明显可知,当master的drive线置高
电平且r/-w线为低电平时,I2C模块运作,产生起始信号
Start,且在sda线发送8位数据,且在scl线发送9个时钟脉
冲信号,等待mcf,若slave响应,则mcf为高电平,继续发
5 结论
从以上对master和slave接口的读写时序的模拟仿真结
果可以看出,整个时序满足I2C总线协议的时序要求,并且
所编写的I2C接口模块的Verilog HDL代码是可综合的。本
人已成功下载至altera公司EP2S90F1020C5器件上且模拟
了I2C总线接口功能,基本实现项目要求。下一字节数据,直到产生终止信号Stop,sda线和scl线置高
电平,发送数据终止,等待下一个起始信号Start。同样的,
当slave的drive线置高电平时,I2C模块运作,r/-w线为’1’
时接收数据功能启动。当mcf为’1’时,slave响应master,且
在这时刻才能保证接收数据的准确性,当出现终止信号Stop
时数据接收终止,等待下一个起始信号Start。图4和图5准
确反映了master发送3字节数据和slave准确接收3字节数
据的功能。
参考文献
[1] 何立民.I2C总线应用系统设计[M].北京航空航天大
学出版社,2004.
[2] 夏宇闻.Verilog数字系统设计教程[M].北京航空航天
大学出版社,2005.
[3] 吴继华,王诚.Altera FPGA/CPLD设计(高级篇)[M].
人民邮电出版社,2005.
今天关于“i2c硬件接口”的讨论就到这里了。希望通过今天的讲解,您能对这个主题有更深入的理解。如果您有任何问题或需要进一步的信息,请随时告诉我。我将竭诚为您服务。