Questions tagged «i2c»

I²C(集成电路间)是飞利浦(现在为NXP)发明的多点串行总线,用于同一PCB上的IC之间的通信,即短距离通信。

8
为什么串行EEPROM优于并行EEPROM?
在EEPROM的Wikipedia页面上:http : //en.wikipedia.org/wiki/EEPROM,给出了“并行EEPROM设备通常具有8位数据总线和足够宽以覆盖整个存储器的地址总线”,并且“与串行EEPROM相比,并行EEPROM的操作既简单又快速”。在那种情况下,为什么串行EEPROM变得比并行EEPROM更流行?
17 serial  i2c  memory  eeprom 


7
那里是否有任何确定的I2C引脚输出指南?不寻找“标准”
编辑:这已经重复了好几次,所以放在最上面:是的,众所周知, I2C设备间连接器没有“标准”,但是可以肯定的是,这个社区可以制定一个“指导”要点清单。此类互连基于信号行为,噪声最小化和减轻由于错误连接引起的风险。 我的理解是,恩智浦在未指定I2C连接器引脚的情况下定义了I2C标准。恩智浦的唯一指导似乎是提到如果在互连中承载Vss / Gnd,则在SDA和SCL之间放置接地和/或Vss。 购买各种I2C模块给我留下了各种I2C引脚,并且还有一些任务跟踪我必须为它们做的各种小的带状电缆切换垫片。 例如 单色OLED模块:SCL,SDA,GND,5V(显然不理想,因为时钟和数据彼此相邻。 Arduino的传感器屏蔽层:SDA,SCL,GND,5V(同样不理想,加上开关式SCL / SDA) 彩色LCD模块:SCL,GND,5V,SDA(是的!) 无名称的I2C中继器:SCL,5V,GND,SDA(哎呀,它们切换了电源引脚!几乎让魔术冒烟了。) 所以我的问题是: 是否有一个明确的/权威指南为I2C 4针连接器的引脚输出序列来使用,其中两个Vss和GND是从主机进行到设备? 如果失败,是否有列出每个采用的引脚的I2C模块/设备的目录,但是不完整? 澄清:寻找诸如“由于……使Vss离SCL更近”之类的准则,而不是明显不存在的已定义标准。

4
我应该选择哪个I2C地址?
现在我知道,要为自己保留一个I2C地址,您必须向I2C人员支付一些钱。但是我不想这样做。 我正在寻求有关我应该为项目中的从属和主控MCU选择什么地址的建议。板上还将有一个EEPROM。因此,我将避免使用EEPROM的地址。我计划让主机连接到各种传感器,包括陀螺仪和加速度计,以及可能的其他存储设备。有没有我应该注意的地址栏?我在考虑只将0x00用作主服务器,将0x01用作从属服务器,因为这些似乎很少使用。 另一个问题:将10位设备和7位设备混合在同一条总线上会是个坏主意吗?我正在考虑让我的MCU通过10位寻址进行通信的可能性,但仅将7位地址用于传感器。
16 i2c 


3
HDMI和I C
我当时在看HDMI引脚,我想:为什么他们要使用I C进行显示主机通信?我的问题是关于导致这种选择的设计指标。22^2 HDMI是最近的标准,而1982年以来I C出现了。I C用于板载芯片间通信,此外该标准允许将多个设备连接到同一总线。HDMI电缆的长度可能约为15m,因此I C信号可能应使用高于正常电压的电压,以避免产生过多的噪声,从而增加了两侧收发器的必要性。关于多设备问题,除非您非常非标准,否则我真的无法考虑如何将多个显示器连接到单个HDMI端口。22^222^222^2 我并不是通信协议方面的专家,但我认为RS485,CAN或其他点对点,全双工,更高SNR协议会更好。 那么,为什么他们会选择I C?22^2 注意:我知道这可能被标记为“基于观点”,我希望周围的人能想到/知道一些客观原因。


3
I2C最低时钟速度和可靠性
I2C是否指定了最小时钟速率?我知道使用最广泛的时钟频率是100kHz,并且某些设备支持400kHz的“快速”模式,而其他设备则支持较快但又模式的模式(我认为1MHz?)。由于SCK信号是由主机生成的,所以我认为一个主机的运行速度可能比任何一个主机都要慢得多-实践中是否存在下限?从属设备在多大程度上关心时钟速率(例如,它们的超时时间短是常见的)?我问的原因是我想知道是否可以在更长的距离(例如20英尺)上运行I2C以在生产测试仪设置中可靠地对I2C EEPROM进行编程。我假设它在标准数据速率下无法在该距离上可靠地工作。

3
I2C:3.3V和5V器件在3.3V总线上没有电平转换?
如果我在上拉至3.3V的I2C总线上使用5V供电的设备,我真的需要一个电平转换器吗?以我的理解,设备只会将线(SDA,SCL)拉低(接地),而不会将其电源电压驱动到总线。因此,只要所有器件都检测到上拉电压(3.3V)为逻辑高电平,我就看不到电平转换器的原因。使用5V作为电源的设备应该是这种情况。 在我的情况下,我有一个IC,它的输入不能作为主设备承受5V的电压,我可以用3.3V为从属设备供电,但是在电路中使用5V会更容易,并且允许从属设备具有更高的(内部)时钟速率。

5
I2C混合频率可以吗?
假设我们有一条400 kHz的I 2 C总线。有一个主设备和一堆从设备。我们想引入一个从属设备,但不幸的是,它只能达到100 kHz。 显然,可靠的设计选择是: 只需以100 kHz运行该总线 为400 kHz和100 kHz外设使用单独的总线 但是问题仅在于黑客:如果我们使用一条总线,以400 kHz的频率寻址400 kHz的设备,并且在与100 kHz的从设备通话时将总线切换到100 kHz,该怎么办? 还是较慢的从机可能会由于错误地认为正在解决而在I 2 C线上看到的400 kHz哈希行为不当? 我们是否可以依靠100 kHz器件来仍然能够很好地处理400 kHz I 2 C信号,以可靠地忽略发往其他从站的消息?
12 i2c 

1
使用I2C STM32F0 HAL库寻址寄存器
我对使用STM的CUBE和HAL_libraries非常陌生。我正在使用具有32个引脚的STM32F0微控制器。I2C的原理图是正确的。所以在这里我需要一点帮助。 我有一个使用I2C通信的电容传感器(FDC1004)。我必须写这些寄存器才能读取数据。 我该如何正确地将START请求表的主机发送给从机(从机地址为A0)? 如何设置指向0x0C寄存器的指针? 数据表中看到(寄存器0x0C:bit [7:4])为1。)我不知道,该怎么做?最后如何从同一寄存器读取? 另外,在阅读之前,我必须等待DONE_x字段(寄存器0x0C:bits [3:0])吗? 但是我不知道我是否在寻找正确的寄存器!因为我没有从传感器获得任何数据! 这是我的代码: int I2Ccomm () { HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x0C, 10, 100); //start bit and pointer to register HAL_Delay(50); HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x054, 10, 100); // setting the register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x0C, 10, 100); //read from this register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x02, 10, 100); //read data from …

2
I2C电平转换
我目前正在设计一种电路,该电路可以记录来自传感器的数据并将记录的数据保存到EEPROM中。我的两个器件(EEPROM和用于测试目的的RTC)通过I2C总线连接到PIC16F887 µC。但是,两个设备的电压工作范围并不相同(EEPROM为5v,RTC为3.3v),我的电池是9V电池。 因此,我为SDA / SDL布线设计了带有由MOSFET组成的电平转换器的电子电路。最重要的是,我添加了两个LM317稳压器来为设备供电(9V-> 3.3V和9V-> 5V)。由于我不是设计此类事物的专家,因此,如果您能看一眼我所做的事情,并告诉我是否做错了可怕的事情,我将不胜感激!

7
I2C从站地址未确认(有时)
我正在尝试使用I2C与远程连接的FRAM(Ramtron的FM24C04)进行通信。此内存嵌入在板上,可以随时将其插入系统或从系统中卸下(在卸下内存之前,通信已正确终止)。 问题是:刚插入包含FRAM的卡后,有时,它不确认地址。 信号测量 我测量了信号以查看发生了什么,看来在两种情况下(工作和不工作)的计时都可以。 正确的I2C通信(读取3个字节): I2C FRAM地址未确认(从机地址已正确发送): 为了解决这个问题已经采取的行动(没有成功) 插入带有嵌入式FRAM的卡后添加的延迟,以确保遵守电源顺序。 检测到未确认从站地址后,I2C停止生成 I2C总线配置 一个主机(ST的STM32F205微控制器) 三个从机(Microchip的EEPROM 24AA1025,Maxim IC的RTC DS1339C和Ramtron的远程FRAM FM24C04 一个I2C电平转换器(Maxim IC提供的MAX3373E)用于允许主机与FRAM之间的通信 总线频率设置为100 kHz 编辑(2013-04-17) 首先,谢谢大家的评论。 由于有很多建议,所以这里是我所做调查的描述。 原理图 下图显示了I2C总线的简化原理图: I2C_SDA和I2C_SCL信号直接连接到微控制器,FRAM_SDA和FRAM_SCL信号连接到FRAM。请注意,使用村田制作所的BLM18铁氧体对连接到FRAM的SDA和SCL信号进行滤波。 FRAM的连接方式如下: NC(引脚1)->未连接 A1(引脚2)-> GND A2(引脚3)-> GND VSS(引脚4)-> GND SDA(引脚5)-> FRAM_SDA SCL(引脚6)-> FRAM_SCL WP(引脚7)-> GND(无写保护) VDD(引脚8)-> + 5V FRAM卡说明 该卡是仅嵌入FRAM的“类似ISA”卡。 调查 减慢频率 我在将SCL频率设置为50kHz和10kHz的情况下进行了测试。我用示波器测量了SCL信号,以确保它处于预期的频率。 这些修改不能解决问题。我检查了时序,它们在FRAM数据表的规格之内。 …

1
BMA180加速度计。如何在I2C和SPI之间共享引脚?
BMA180加速度计可以是SPI从机或I 2 C从机。两条总线的引脚是共享的。 SPI mode I2C mode --------------------------------------------------- SDI input SDA bidirectional (!) SDO output ADDR address bit, input SCLK input SCL input CSB chip select, input I2C mode select, input 根据数据手册(参见第8章),总线之间的选择通过CSB引脚完成。当CSB为低电平时,该器件为SPI从器件。当CSB为高电平时,该器件为I 2 C从器件。 这是我关注的故障模式。假设BMA180在SPI总线上。同一总线上还有另一个具有自己芯片选择的设备。假设SPI总线主设备正在与该另一设备通信。公务员事务局BMA180高,所以它的I 2 C应该允许。BMA180看到SCL(SPI的SCLK)上的时钟沿和SDA(SPI的MOSI)上的位飞过。如果这些位中的某些位像有效的I 2 C读事务的开始一样对BMA180来说是什么,并且BMA180开始输出数据并破坏现有的SPI事务,该怎么办?BMA180的设计将如何防止这种情况? 这是出于好奇。我还没有尝试过这些问题。我将在SPI上使用BMA180。 任何建议,见解或参考都非常感谢! 更新。 在数据表中找到了一些东西(参见7.7.11)。如果通过SPI与BMA180进行通信,建议通过将该位置1来禁用I dis_i2c2C。 使用SPI接口时,强烈建议将dis_i2c设置为1,以避免出现故障。 BMA180具有内置EEPROM。寄存器内容可以存储在EEPROM中,并在上电时自动加载。因此,它可能使BMA180不理我2下完全并始终。 更新。 L3GD20陀螺仪是另一种IC,它以类似的方式在I 2 C和SPI …
11 spi  i2c 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.