Questions tagged «i2c»

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

3
哪个微控制器应该为主/从?
我正在设计一个闹钟来唤醒我。该系统由3个子系统组成: (S1) RGB七段式管理。由5µC组成,一个用于数字,一个用于“:”。µC较高的原因是我不将IC用于RGB LED,而仅用于晶体管。 (S2)传感器和输入管理。1 µC管理距离传感器以设置警报和当前时间;和用于配置的开关。 (S3)通信和音频文件。一个与UART中的蓝牙模块进行通信以进行进一步工程的µC,获得了一个RTC晶体以具有准确的时钟并管理音频播放。(我尚未处理音频) 在正常执行期间,S2读取输入并将其发送到S3进行处理。然后S3向S1发送必须显示的内容。 我想使所有这些子系统一起通信,然后选择使用I2C总线。但是我的问题来了: 哪个µC必须是主机? 一方面,S3是系统的中心,但另一方面,S2发送的消息可能比S3多。这就是为什么我不确定谁将成为主人/奴隶。 是否有规则确定谁将成为从机/主机?我应该问自己一个什么样的问题才能做出好的选择?(通常,不适用于此特定系统)
8 i2c 

8
通过Cat5电缆可靠地发送I2C
我正在考虑在Raspberry Pi周围安装家庭自动化系统,但是我发现在每个地方都需要太多控制的地方插入Pi的价格和空间要求都很高,但是在翻新过程中已经安装了此设计所需的Cat5e电缆。我周围有一些PCF8574,PCF8591和SSR,因此可以使用Cat5e电缆来驱动它们吗? 我所有的Cat5e电缆都已经连接了TIA / EIA 568B引出线。它们是我的结构布线的一部分,没有屏蔽,因此需要更高的线电压。我正在考虑通过此引脚分配通过电缆发送电源和I2C线: Pin 1 (Pair 1): SCL+ Pin 2 (Pair 1): SCL- Pin 3 (Pair 2): SDA+ Pin 4 (Pair 3): +12V Pin 5 (Pair 3): +12V Pin 6 (Pair 2): SDA- Pin 7 (Pair 4): GND Pin 8 (Pair 4): GND 电源引脚的布置与100BASE-TX PoE布线相同,因此额定功率也将相同,并且在需要Cat5e的1000BASE-T中发现了双向差分信号的使用。 原始的I2C SCL和SDA线在TTL电平下被分为两个双向差分对(漏极开路不保留在电线上,而是在我设计的线路终端/电平转换设备中恢复) …

3
L3G4200D随机峰值
我已经在有关L3G4200D陀螺仪的问题上搜索了一下这个论坛,但没有看到提到的问题,但是我在其他论坛上看到了其他人在谈论它。当陀螺仪静止时,我在输出中看到一个奇怪的大值。不幸的是,似乎没有人能够回答为什么会这样,所以我想问一下 因此,我正在使用i2c以400kHz(快速模式)从陀螺仪收集数据,并使用多字节读取(一次六个字节)收集陀螺仪数据。以100Hz采样(也尝试了最高800Hz),还尝试了在不同值处打开和关闭滤波。我没有使用中断引脚,而是在GYRCTRLREG4中使用了“块数据更新”属性,以便在读取LSB和MSB之前都不会输出数据。满2000dps,对FIFO没做任何事情。如果有帮助,我可以发布确切的寄存器值,但是图大多数人都没有数据手册。 下图显示了我的问题。输出的数据良好,据我所知正确计算,并且一般噪声是可以接受的。但是后来我注意到,当设备静止时,这些烦人的“斑点”会随机出现。如果我将其静置几秒钟,我将获得其中一个峰值,始终等于250-255(转换后约为18,使用'(输出* 70)/ 1000')。正如我所说,这些峰值是随机的,可以出现在任何平面中(在下图中,您可以看到X平面中的第一个峰值,Y方向中的第二个峰值),始终在相同的值附近,以及一个,两个或全部三个可以同时发生。大值仅用于单个样本,然后恢复正常。 如前所述,我在另一个线程中看到应该在GYRCTRLREG4中使用块数据等待功能,但没有任何变化。我将问题缩小到MSB为零或更高(即正数)时,然后将MSB和LSB合并时,我得到了这些大数。例如,我抓取X平面所需的两个字节,在LSB中得到-6,在MSB中得到0,将它们组合起来得到250,然后转换为(250 * 70)/ 1000 = 17.5 dps(即对于固定/错误而言太大)。在同一样本中,Y平面的两个字节是-3 LSB和-1 MSN,将它们组合在一起得到-3,而转换得到-0.21(即,期望/正确)。 几天来一直在解决这个问题,我的磁力计也看到了一些随机峰值,所以我想这是我通过i2c读取设备错误吗? 任何建议或尝试的事情都非常欢迎!

3
从PIC18s上的I2C开始
对于一个项目,我希望三个PIC(两个从PIC18F4620,一个主PIC18F46K22)通过I2C总线进行通信。稍后,可以添加更多从设备(如EEP​​ROM,SRAM等)。我正在使用C18编译器在C中为这些PIC编写代码。我在Internet上浏览了很多东西,但是找不到用于处理(M)SSP外设的库。我已经在I2C模式下阅读了(M)SSP外设上的这两个PIC的数据表,但找不到如何与总线接口。 所以我需要主库和从库。 您有什么推荐的吗?你在某处有这样的图书馆吗?它是内置在编译器中的吗?如果是,在哪里?网络上有什么好的教程吗?

5
多个arduino通信(1个主设备,n个从设备)
我想开发一个包含以下内容的主/从网络: 1个Arduino主机,可读取传感器并根据传感器信号生成速度斜坡曲线,然后将这些斜坡发送给从机 3个(或更多)Arduino从设备,它们按照主设备发送的斜坡控制12V伺服电机的速度 什么是实现此目的的良好通信协议?串行(SPI)?I2C?还有吗 如果是串行的,那么新的Arduino Leonardo是一个不错的选择吗?选择协议时应考虑哪些问题? 我在想类似的东西: 主: void loop() { update_ramps() for(int i=0; i< num_slaves; i++) { send_to_all(i, ramps[i]); } } 从站1: const int id = 1; int recived_id, recived_value; void loop() { read_data(); if(recived_id == id) { do_motor_step(recived_value); } } 串行通信,其中主机的RX / TX发送到所有从机。 这似乎是一个合理的解决方案吗?

2
设计自己的公交车
这个问题是我先前提出的问题的又一个问题:由于EMI而替代了SPI。我正在设计自己的通讯总线。如果有人可以对我的初步设计表示关注,并告诉我我疯了哪里,我将不胜感激。 我目前正在使用2MHz SPI,将10cm长的导线连接到单独PCB上的七个ADC(共享CS,但每个ADC都有自己的MISO线。它有点位撞),但我想用一个差分器件代替它以减少EMI。问题是带有差分总线的ADC很少,所以我想知道是否有可能设计自己的总线。至少是物理层,可能还有协议。 新巴士的设计目标: 使用物理上小的组件 低EMI 最多4条数据线(两对) 每个ADC的带宽> 300kbps。(总计> 2.1mbps) 在考虑让我发疯之前,请考虑一下在PSoC5上做起来并不难。在该芯片上,我当然可以在Verilog中设计自己的协议,并在硬件中实现它。在某种程度上,我也许也可以包括物理层组件。而且,我也许可以同时拥有7个这些东西,它们在主服务器中并行运行,每个从设备并行运行,以便获得良好的整体带宽。 这是我的初步想法: 它将基于I2C,并稍加修改以帮助其连接到物理层组件。现在,SDA和SCL线是差分对。SDA对具有OR-ing属性。使用一个只能驱动高电平的引脚和一个只能驱动低电平的引脚可以实现此目的。SCL对仅由主机驱动。数据速率将提高到至少1mbps。 主机将是具有7个主机模块的PSoC5。从设备也将是具有一个从模块的PSoC5,并使用集成ADC。 想法: 不太确定实现上拉电阻器和压摆率限制组件的最佳方法是什么。 我认为我不需要任何终止。如果将压摆率限制为80ns,则对于10cm长的电缆来说应该是不错的选择。 那显然不是合适的差分收发器。我是在浪费时间试图使自己脱颖而出吗? 那些非门引起一些偏斜。这可能是个问题吗?

2
如何获得Arduino(5 V)和MPR121(3.3 V)通话?
我有Sparkfun MPR121 I2C电容式触摸传感器分线板 我已经读到它使用3.3 V,我知道我不能仅仅连接Arduino的3.3 V电源输出,因为通信线也需要3.3V。如何连接其他线路? 我在Sparkfun的网站上找到了一个教程。使用二极管的第三张图-那是将传感器连接到Arduino的最佳方法吗? 任何想法或信息都很好,我的知识很低。

5
什么是最受欢迎的嵌入式串行总线?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在设计一种嵌入式设备,希望通过串行总线与第三方外围设备进行互操作。我应该选择SPI,I²C还是其他总线? 外围设备的带宽将非常低(某些传感器通过总线通信,需要定期轮询),并且最有可能在控制器的一米或更短的距离内。控制器的唯一任务是收集传感器数据,以某种方式打包,然后通过另一条总线将其发送到无线模块(尽管传感器总线也有可能被重用)。

5
将I2C实施为模拟
如何实现(或者可能已经有一个IC做到这一点)一块输入为I2C而输出为模拟电压(0V-5V)的电路板? 最终,我想将其中的几个连接到arduino的IO引脚,从而有效地创建数字到模拟输出。
8 arduino  i2c  voltage  analog  dac 
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.