许多设备通过I2C和 SPI 数据协议进行交互。在本文中,我们将展示如何使用GreenPAK™ SLG46811 集成电路 (IC) 在这两种协议之间进行转换。由于 其 小 尺寸 和 高 功能 , 以及 低成本 和 电流 , 这 是 该 应用 程序的 绝佳 选择 。 _
转换如何工作?
SLG46811V 可以双向转换,从 I2C 到 SPI,反之亦然。
图 1:应用电路
图 1 显示了一个典型的转换器原理图。I2C总线接PIN5、PIN6,SPI总线接PIN9、PIN10、PIN11、PIN12。PIN8 用于控制传输方向。I2C 总线必须上拉至 VDD。
转换方向由 nSPI/I2C 信号选择。该电路提供四个字节的传输,其中一个是 I2C 控制字节。
图 2:设计实现
该设计是使用基于 GUI 的免费GreenPAK Designer 软件 (Go Configure™软件中心的一部分)创建的。完整的设计文件可在此处获得。
SPI 数据接收和 I2C 数据传输
当 nSPI/I2C 信号为低电平时,IC 接收 SPI 命令并发送 I2C 命令。
图 3:SPI 数据接收
SPI_EN 信号决定了 SPI 数据接收的开始和停止。当 SPI_EN 信号由高变低时,IC 从输入 SPI_DATA_IN 读取。与时钟信号 SPI_CLK 同步,IC 读取移位寄存器 SHR 0 – SHR 3 中的数据。
图 4:I2C 数据传输
当数据完全接收时,信号 SPI_EN 变高,IC 开始形成 I2C 数据包。EDGE DET 检测何时接收到数据,将 SRFF 触发器的输出转换为 1。这允许扩展码型发生器 (EPG) 和时钟发生器的 *** 作。EPG 单元处理 I2C 数据包的形成并控制数据发布过程。
图 5:EPG 波形
EPG单元记录一组用于产生I2C *** 作信号的模式。输出 OUT0 用于形成 Start、Stop和 ASK 位。输出 OUT1 为 I2C_CLK 生成时钟信号。OUT2 信号在 SHR 寄存器中提供数据偏移。I2C 传输完成后,OUT3 信号将 SRFF 触发转换为 0,之后系统进入初始状态。
例如,我们将尝试使用 SPI/I2C 桥接器更改 SLG46826 中的计数器数据 CNT0。
图 6:测试示意图
图 6 显示了构建在 SLG46811 上的 SPI/I2C 桥接器和构建在 SLG46826 上的发生器的测试连接图。SLG46826有用于 I2C 总线连接的 PIN8 和 PIN9 以及用于脉冲输出的 PIN17。
图 7:SLG46826 内部原理图
以下是图 8 的关键:
SLG46811
通道 1(黄线/顶线)– PIN5 (I2C_CLK) ,带有外部 5k Ω上拉电阻
通道 2(浅蓝色/第 2 行)– PIN6 (I2C_DATA) ,带有外部 5k Ω上拉电阻
B1 – I2C 数据解码
B2 – SPI 数据解码
D0 – PIN12 (SPI_EN)
D1 – PIN11 (SPI_CLK)
D2 – PIN10 (SPI_DATA_IN)
SLG46826
D5 – PIN17 (PULSE_OUT)
图 8:SPI 数据接收
图 9:I2C 数据传输
I2C 数据接收/ SPI 数据传输
当 nSPI/I2C 信号为高电平时,IC 工作在 I2C 从机/ SPI 主机模式。
图 10:I2C 数据接收/SPI 数据传输
在这种模式下,I2C 数据接收和 SPI 数据传输同时发生。以下组件用于检测 I2C 启动/停止组合:检测器 EDGE 模式下的 P DLY、3 位LUT8、3 -L11 和 DFF4。当开始组合到达时,触发器 DFF4 的输出变为 0,这允许 EPG *** 作并激活 SPI_EN 信号。EPG 的第二部分生成用于处理来自 I2C 的数据的信号,并且还生成 ASK 响应信号。来自 I2C 的数据立即传输到输出 SPI_DATA_OUT。当SPI_CLK时钟暂停时,SPI_CLK 仅在启动、停止和 ASK 等服务组合的时间使用 I2C_CLK 计时. 当Stop组合到达时,触发器 DFF4 的输出变为 1,使 EPG 处于初始状态,并向 SPI 总线信号 SPI_EN 发出信号,完成数据传输。一些 IC 输出具有输出使能 (OE) 信号以改变 *** 作方向。
图 11:EPG 波形
对于接收 I2C 命令和发送 SPI 命令,我们使用 EPG 信号:
OUT5 –阻止检测器启动/停止的 *** 作,并在形成 ASK 信号时反转 EPG 单元的 CLK 信号。
OUT6 –产生一个 ASK 信号。
OUT7 –控制 SPI 时钟。
以下是图 12 的图例:
通道 1(黄线/顶线)– PIN5 (I2C_CLK) ,带有外部 5k Ω上拉电阻
通道 2(浅蓝色/第 2 行)– PIN6 (I2C_DATA) ,带有外部 5k Ω上拉电阻
B1 – I2C 数据解码
B2 – SPI 数据解码
D0 – PIN12 (SPI_EN)
D1 – PIN11 (SPI_CLK)
D2 – PIN10 (SPI_DATA_OUT)
图 12:测试结果
结论
在本文中,我们使用 GreenPAK SLG46811 IC 实现了一个 I2C/SPI 转换器。GreenPAK IC 提供了许多功能元件来实现各种电路设计。GreenPAK 产品系列中有 50 多个 IC,每一个都有自己的特殊特性和功能。它们可以显着减少外部电路元件的数量,并能够开发具有高度特殊要求的系统。此外,GreenPAK 产品可实现非常快速的设计时间,并提供低功耗、小电路板面积和低成本。
审核编辑:汤梓红
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)