大家好,欢迎观看 本视频,深入了解与 精密数据转换器的相关通信知识。 在本视频中, 我们将介绍数字通信 和串行外设接口,即 SPI 的 基础知识。 我们将讨论通信结构 和所需的数字线路, 之后将介绍 SPI 通信的不同模式, 最后会举例 说明 SPI 数据 是如何传送到外设, 并由外设接收的。 在许多精密模拟 器件中,微控制器, 即“控制器”, 与被控设备, 即“外设”之间 都设有数字接口。 以精密 ADC 为例, 外围 ADC 测量输入电压, “控制器” 微控制器通过数字通信 读取数据。 再以精密 DAC 为例, “控制器” 微控制器通过向 DAC 写入数字来 设置输出电压。 在这两类 器件中,这种通信 都可能是双向的。 许多精密数据转换器 都需要进行一些配置 和编程。 需要通过数字通信 对器件进行写入和读取。 要在两个器件 之间实现通信, 需要一个统一的 标准,从而确保 控制器和外设 能够相互理解。 通信是通过 传输以二进制 编码的字符进行的。 通信位由 1 和 0 组成, 通常 8 位分为 一组,称为一个字节。 为了方便,一个 字节可以储存 2 个 十六进制数字。 通常会使用几个字节 在微控制器和外设之间 来回发送数据。 可用多个字节表示 ADC 的输出数据、 DAC 的输出电压, 或者向数据 转换器发送命令和 配置。 数字通信有多种形式, 但经常使用的 主要有两种结构。 首先,通信可以并行 进行,即一条线路用于 传输 1 位数据。 例如,同时通过 八条平行数据线 传输一个字节。 其次,通信 也可以串行进行, 即在一条数据线上 传输所有数据位。 在串行通信中, 数据逐位 按顺序传送。 串行通信在现代设备 中的应用更为广泛。 串行通信能减少 控制器和外设之间 通信线路的数量。 这里的数字是指 从控制器传到 外设的数据。要从外设 将数据传输回控制器, 需要通过其他的线路。 大多数精密数据转换器 采用的是串行通信。 大多数 TI 器件使用两种 串行接口标准中的一种, 要么使用 4 线 串行外设接口, 要么使用 2 线 I2C。 本演示讨论的 是 SPI 的实现。 I2C 将在 另一个演示中讨论。 控制器和外设 之间的线路电平 被驱动到两个电压 电平中的其中一个。 如果电压接近 0, 则该线路被解码为 数字 0; 如果电压接近 数字电源电压, 则该线路 被解码为数字 1。 请注意,控制器 和外设都要同意 这些电平值, 通信信号 才能被正确解码。 数字输出必须 要被驱动到高电平, 才能被解码为数字 1; 要被驱动到低电平, 才能被解码为数字 0。 数据表列出了 数字输出的 最小输出 高电平电压和 最大输出低电平电压。 此外,数据表还 列出了定义高电平的 最小输入电压和 定义低电平的 最大输入电压。 控制器和 外设的通信标准 根据数字电源的 电压来定义这些电平。 如果控制器和外设的 数字电源不匹配, 那么通信就 可能出现问题。 可能需要使用 电压电平转换器件 来连接从一个电源电平 到另一个电源电平的 通信。 控制器和外设 器件之间进行通信时, 时间也要同步, 而且两个器件的 时序必须相同, 这样才能知道 外设应在何时 读取电压电平, 从而确定何时 发生位传输。 来自控制器的串行时钟 通常被用来定义 通信的时间。 数据位读取可能 发生在串行时钟的 上升沿或下降沿。 在这个例子中, 数据是在串行时钟的 下降沿读取的。 时序对于通信 而言非常重要, 我们将在另一个 视频中讨论这个主题。 精密数据转换器中 最常用的串行接口是 串行外设接口标准, 缩写是 SPI。 SPI 接口需要 两条控制线。 控制器,通常是 微控制器或 DSP, 控制外设选择和 用于数据同步的 串行时钟。 一条 SPI 总线 可以控制多个外设, 但只能有一个控制器。 每个外设都有 自己的外设选择线, 需要控制器提供。 此外,还有两条数据线。 一条从控制器 向外设发送数据, 另一条从外设 向控制器发送数据。 数据传输可以 全双工方式进行, 也就是说,数据可以 同时沿两个方向传送, 使用同一个 SCLK 脉冲计时。 下一张幻灯片 将介绍这 4 条 SPI 线。 SS 是外设选择。 这条线用来 选择用于通信的 外设。 如果 SPI 总线上 有多个器件, 每个器件都会 有自己的外设选择。 外设选择通常为 低电平有效, 用上划线表示。 器件被选中时, 外设选择变为 低电平来激活通信。 器件未被选中时, 外设选择被设置为 高电平。 外设选择也可以标记为 SSEL、CS、CS bar、 CE、nSS 或 SS#。 在许多 TI 精密 ADC 中, 该片选线通常被标记为 CS bar,为低电平有效。 在许多 TI 精密 DAC 中, 这条线路通常被标记为 SYNC bar, 也是低电平有效。 SCLK 是串行时钟。 如前所述, SCLK 被控制器 用来同步 控制器和外设之间 发送的数据。 SCLK 源自控制器, 被发送到所有外设。 这个串行时钟可能 并非总处于工作状态, 可能处于空闲时高电平 状态或空闲时低电平状态。 数据在串行时钟的 上升沿或下降沿 被传入控制器或 外设。 SCLK 线路也可 被标记为 SCK。 MOSI 是控制器 输出、外设输入。 这条线路 用于从控制器 向外设发送数据。 外设根据 SCLK 同步 读取 MOSI 线路。 这条线路也可能 有不同的名称, 具体由设备制造商来定。 在外设上, 这条线路可能称为 SIMO、SDI、DI、DN 或 SI, 连接到控制器器件时, 在一些串行线路上标为 SDO、DO 或 DOUT。 在精密数据转换器中, 如果有寄存器需要配置, 配置数据就在 这条线路上发送。 如果器件未激活, 由于控制器没有选择 用外设选择激活器件, 这条线路就会停用, 外设不在 MOSI 上接收数据。 在许多 TI 精密 数据转换器中, 此数字输入 通常标记为 DN。 MISO 是控制器 输入、外设输出。 这条线路用于 将数据从外设 传出到控制器。 如果控制器 没有用外设选择 来选中器件, 这条线路就会变成 高阻抗,即 Hi-Z, 可供包含 多个器件的系统 共享。 外设在 MISO 线上发送数据, 并与 SCLK 同步。 在外设上,这条 线路可能称为 SOMI、SDO、 DO、DOUT 等, 连接到控制器器件时, 在一些串行线路上 标为 SDI、DI 或 DN。 在许多 TI 精密 数据转换器中, 此数字输出 通常标记为 DOUT。 如前所述,控制器 和外设的数据可以 在 SCLK 的 上升沿或下降沿 被读取。 此外,还可以 利用时钟极性 来定义数据进入 和离开器件的 前沿和后沿, 从而支持多种 SPI 通信模式。 有两个参数用于 确定 SPI 的工作模式。 第一个参数 CPOL, 决定了串行时钟的 极性。 当 CPOL = 0 时,表示 时钟在空闲时是低电平, 前沿是上升沿, 后沿是下降沿。 当 CPOL = 1 时,表示 时钟在空闲时是高电平, 前沿是下降沿, 后沿是上升沿。 第二个参数 CPHA, 决定采集数据的 时钟相位。 当 CPHA = 0 时, 数据在时钟脉冲的 前沿被采集。 当 SS bar 被 设置为低电平时, 在 SCLK 的后沿 设置第一位数据。 当 CPHA = 1 时, 数据在 SCLK 的后沿 被采集。 在这两种时钟相位 模式下,数据都是在 前一个时钟沿上设置的。 CPOL 和 CPHA 组合配置可实现 4 种 SPI 工作模式。 这张幻灯片的表显示了 SPI 从 0 到 3 四种模式。 每种模式都为 SPI 通信 定义了不同的时钟极性 和相位。 请注意,SPI 器件和 微控制器的不同厂家 定义的 SPI 模式编号 可能会不同。 请查阅控制器 和外设的数据表, 了解时钟极性 和相位信息。 SPI 可以用来 与多个器件通信。 通信可通过两种 不同的方式实现。 首先,由于 SPI 使用外设选择线, 因此,控制器可以 与多个器件进行通信。 控制器上有每个外设的 外设选择线, 其余的线是共享线。 当器件的外设 选择被选中时, 其余的 SPI 线被激活。 当外设选择未被选中时, SPI 线被忽略。 未被选中时,每个外设的 MOSI 线和 SCLK 线会被 忽略,每条 MISO 线都变成 Hi-Z, 这样,被激活的外设 就可以驱动 MISO, 而不会有其他外设 争相驱动同一线路。 在某些系统中,由 一个 SPI 驱动一个外设, 而其他外设通过 菊花链方式连接。 在菊花链系统中, SCLK 线和外设选择线 可以由所有外设共享。 但是,控制器只 连接第一个外设的 一条 MOSI 线。 第一个外设的 MISO 线 连接到下一个外设的 MOSI 线, 以此类推,依次连接, 将所有外设连成一条链。 最后一个外设的 MISO 线 连接到控制器。 来自器件的所有数据 都通过这条链传递, 最终从最后 一个外设中收集。 并非所有的器件 都能通过菊花链式 SPI 连接实现控制和读取。 器件须专门针对 这种通信进行过 设计。 这是一个 SPI 数据通信的例子, 器件是 ADS1118 精密 ADC。 ADS1118 是 16 位 ADC,使用 SPI 模式 1, CPOL = 0,CPHA = 1。 这里,SCLK 为 空闲时低电平, 数据在 SCLK 的后沿 传入和传出。 在 16 位数据传输 周期中,两个字节的数据 被传入配置寄存器。 同时,16 位的 ADC 数据 被送出器件。 ADC 包含一个 16 位配置寄存器, 其设置如表所示。 配置寄存器的这些值 按说明栏中的设置 对器件进行编程。 在这个例子中,我们 要写入器件的设置是 81C3 和十六进制。 继续来看这个例子。 这是 ADS1118 的 16 位数据传输周期, 表示的是 SPI 线路的传输情况。 同样,SCLK 为 空闲时低电平, 数据在 SCLK 的下降沿传输。 对器件的写入是在 MOSI 线上完成的, 该器件的引脚标的是 DN。 配置寄存器设置 为 81C3 和十六进制。 同时,ADC 数据 从 ADS1118 传出。 这里,随机的输出 数据字会从器件中传出。 看一下 DOUT 线。 二进制输出被读为 E476 和十六进制。 本视频到此结束。 谢谢观看。 请尝试完成测验, 检查您对本视频 内容的理解。 问题 1。 以下二进制输出是 十六进制的什么值? 正确答案是 D。A6。 问题 2。 下图中,CPOL = 0, CPHA = 1。 在这个事务中, 外设向控制器发送的 是哪个十六进制的字节? 正确答案是 B。26。 问题 3。 下图中,CPOL = 0, CPHA = 1。 在这个事务中, 控制器向外设发送的 是哪个十六进制的字节? 正确答案是 D。EC。