首页 > 应用与设计 > 工业应用 > C2837x入门指南 >

电机驱动

最新课程

热门课程

C2837x入门指南(二十)—通信系统之SPI

大家好 接下来我们进入第12章 C2000的通讯 本章介绍一些经常用到的日常的通讯方式 比如SPI SCI I2C USB CAN等等 本模块的目的并不是 通讯外设的设计器件 而是快速介绍 这些设备的特性和功能 了解了特性和功能后 可以根据需要从相关文档的各种资源 获取其他信息 本模块将介绍通讯模块的基本操作 基本的数字和工作原理 这跟我们学习的F28X7X系列的 我们支持多达3个的SPI通讯模块 4个SCI模块 两个MCBSP模块 两个I2C模块 一个USB模块 两个CAN通讯模块等等 由此看出 我们的通讯方式是丰富多样的 具体设计中选择哪种通讯方式的话 有一个基本的设计原则 就是高性价比 就是以最低成本 达到所需的数据 有两点 第一最低的成本 这是成本方面的要求 第二是所需的数据 速率 这是性能方面的要求 因此 高性价比的通讯方式是我们的首选 在这里 我们也知道 串口通信是一种性价比比较高的方式 有很多优点 我们进入串口通讯 可以在器件之间实现简单的效率较高的通讯 与GPIO口引脚类似 串行端口可以用在独立的端口 或者多个系统中 在多台设备上 如果两个设备都有可用的串行端口 对数据的速率要求较低 串行端口是一个廉价的选择 如果器件的物理地址相距较远 使用串行接口更适合 因为这种方式 接入的数据少 固有的特性 可用简化器件互联的成本的 串行端口需要实施的单独的线路不会对器件处理器的数据 和数据地址产生任何干扰 唯一的开销是接受和发送每个字的时候 需要对端口读写数据 这个过程可在中断服务程序里面 非常短的时间 几个周期来维持 所以对软件或者芯片资源的开销相对低 因此串口具有低成本 对系统的要求比较低这几个优点 串口通讯分为同步和异步通讯 接下来我们介绍两者的区别 同步和异步通讯的场合不同 同步是一些短载的短距离的通讯 比如在同一个PCB板子上的 异步通讯是一些长距离的通讯 比如两个板子之间 两个设备之间 距离是几十米 上百米等等 因此 同步通讯 它的特点是 我的通讯速率要求高 因为在同一个板子上 传一些实时的数据 它的速率要求高 缺点是有一个显性的时钟 需要时钟的控制 那么反过来 异步通讯对速率要求是比较低的 其实只有20PI 同步通讯的八分之一左右 但它的优点是不需要一个显性的时钟 时钟和数据信号不能杂合的 所以异步通讯适合于长距离的 性价比较高的通讯 我们接下来详细介绍SPI SPI模块是同步串行IO的端口 在28X和其他外设间移动长度和数据速率可变的串行数据流 数据传输之间 必须有一个SPI器件配置为主机 其他器件配置为从机 主机提供时钟信号 根据工作方式的不同 SPI用的器件 一般处在三个不同的通讯模式下 一个是主机发送 从机发送虚拟数据 第二个主机发送数据 一个从机发送数据 第三个是主机发送虚拟数据 一个从机发送数据 最简单的情况是可加SPI通讯 是一个可编程的移位寄存器 数据通过SPI data 也就是SPI的发送寄存器 移入和移出 数据 发送的数据直接写入SPI 数据寄存器 接受到的数据存入我们的接收缓存器 SPIbuffer里面 提供给CPU读取 这样可以实现双缓冲的接受过程 在此期间 CPU无需从SPI Buffer里面读取已经读取到的数据 即可开始新操作 但是在新操作完成前 SPI必须将数据从SPI buffer里面读取出来 为什么 因为在接收过程中 在完毕以后 我的数据会从SPI数据里面 拷贝到我的buffer 我的缓存器里面 因此 它接受完之前 必须把它从我的缓存器里面 拷贝出来 要不然有数据溢出的错误 还要注意 我们的SPI不支持双缓存发射的 必须先完成当前发射 然后再进入下一个数据写入 否则会破坏当前发射的过程 由于主机控制SPI的实现 因此主机可随时发出数据的传输 接下来我们看看SPI模块的框图 从中看出 我们的SPI主要的寄存器是SPI数据 针对主机来说 它的数据是从高位移出来 我接受数据是从低位移入的 因此我们总结一下 SPI接受和发送的区别是 首先是从机将发送数据写入自己的移位寄存器 然后将主机将要发送的数据 写入主机自己的移位寄存器 完成两个数据的装载后 主机启动发送 启动SPI clock时钟信号 来启动数据发送 启动后 主机将要发送到数据 一位一位的移出 从机发送的数据 一位一位移入 整个过程重复直到我的数据发送完成后 进入我们的接受 接受数据从SPI数据里面拷贝到我的 buffer里面 索存 这些接触的数据 整个过程完成 我的SPI的中断响应位将复位 如果它允许被使能的话 就触发中断 进入SPI的接受或发送中断 这个过程是比较简单的 启动时钟之后 数据从高位移出 接受数据从低位移入 等发送完成后 我进入中断 然后下一个数据发送 重复这个过程 接下来我们看看SPI数据的数据格式 刚才也提到了 SPI的通讯 它的数据位数 和我的数据都是可编程的 因此对数据对齐有要求 针对发送端来说 由于从高位移出 针对发送数据来说 必须左对齐 也就是数据往左移 针对我接受来说 我从低位开始的 所以接受数据是右对齐 针对不用的位的话 我必须在用户程序中屏蔽掉 接下来 我们总结一下 SPI通讯的 一些要点 SPI是一个同步的串口通讯 工作方式有两种 一个是两线 一个是三线的通讯方式 针对两线制的通讯方式 它的优点是硬件的线数少 只能工作在half duplex 三线制的 速率要求高 是边收边发的 是双功能的通讯方式 我们可以通过软件来配置 主机和从机 非常简单 只需要我的寄存器 设置成主机从机模式就好了 我们要注意 在整个SPI通讯网络中 只有一个主机 其他的都是作为从机 主机提供通讯的时机 和时序 然后我们的数据位是可以变化的 是可以编程设置的 那么针对F2837X或者F28X7X的话 我们的SPI有一些增强的功能 比如我们支持16位的 多缓存 还支持延迟的发送 我可以设定我的发送是上升沿 下降沿 延迟90度 半个相位等等 还有我们的SPI 是支持DMA模式的 无线访问的 DMA支持的话 有非常好的一点是 我在数据的发送和接收时 不需要CPU直接的参与 我直接从DMA从我要发送的数据的寄存器中 或者RAM中 把数据拷贝过来 放在我的SPI的发送寄存器里面 然后将接受数据通过DMA 移到我的目标RAM中 或者我的flash中 这个过程无需CPU参与 减少对CPU开支的需求 好 这块是我们的SPI 接下来我们讲SCI 串行通讯接口

大家好 接下来我们进入第12章

C2000的通讯

本章介绍一些经常用到的日常的通讯方式

比如SPI SCI I2C USB CAN等等 本模块的目的并不是

通讯外设的设计器件 而是快速介绍

这些设备的特性和功能

了解了特性和功能后 可以根据需要从相关文档的各种资源

获取其他信息

本模块将介绍通讯模块的基本操作 基本的数字和工作原理

这跟我们学习的F28X7X系列的 我们支持多达3个的SPI通讯模块

4个SCI模块 两个MCBSP模块

两个I2C模块 一个USB模块 两个CAN通讯模块等等

由此看出 我们的通讯方式是丰富多样的

具体设计中选择哪种通讯方式的话

有一个基本的设计原则 就是高性价比

就是以最低成本 达到所需的数据

有两点 第一最低的成本

这是成本方面的要求 第二是所需的数据 速率

这是性能方面的要求

因此 高性价比的通讯方式是我们的首选

在这里 我们也知道 串口通信是一种性价比比较高的方式

有很多优点 我们进入串口通讯

可以在器件之间实现简单的效率较高的通讯

与GPIO口引脚类似 串行端口可以用在独立的端口

或者多个系统中

在多台设备上 如果两个设备都有可用的串行端口

对数据的速率要求较低

串行端口是一个廉价的选择

如果器件的物理地址相距较远 使用串行接口更适合

因为这种方式 接入的数据少 固有的特性

可用简化器件互联的成本的

串行端口需要实施的单独的线路不会对器件处理器的数据

和数据地址产生任何干扰

唯一的开销是接受和发送每个字的时候

需要对端口读写数据

这个过程可在中断服务程序里面

非常短的时间 几个周期来维持

所以对软件或者芯片资源的开销相对低

因此串口具有低成本 对系统的要求比较低这几个优点

串口通讯分为同步和异步通讯

接下来我们介绍两者的区别

同步和异步通讯的场合不同

同步是一些短载的短距离的通讯

比如在同一个PCB板子上的

异步通讯是一些长距离的通讯 比如两个板子之间 两个设备之间

距离是几十米 上百米等等

因此 同步通讯 它的特点是

我的通讯速率要求高 因为在同一个板子上

传一些实时的数据

它的速率要求高

缺点是有一个显性的时钟 需要时钟的控制

那么反过来

异步通讯对速率要求是比较低的

其实只有20PI 同步通讯的八分之一左右

但它的优点是不需要一个显性的时钟

时钟和数据信号不能杂合的

所以异步通讯适合于长距离的 性价比较高的通讯

我们接下来详细介绍SPI

SPI模块是同步串行IO的端口

在28X和其他外设间移动长度和数据速率可变的串行数据流

数据传输之间 必须有一个SPI器件配置为主机

其他器件配置为从机

主机提供时钟信号

根据工作方式的不同 SPI用的器件 一般处在三个不同的通讯模式下

一个是主机发送 从机发送虚拟数据

第二个主机发送数据 一个从机发送数据

第三个是主机发送虚拟数据 一个从机发送数据

最简单的情况是可加SPI通讯 是一个可编程的移位寄存器

数据通过SPI data

也就是SPI的发送寄存器 移入和移出

数据 发送的数据直接写入SPI 数据寄存器

接受到的数据存入我们的接收缓存器 SPIbuffer里面

提供给CPU读取

这样可以实现双缓冲的接受过程

在此期间 CPU无需从SPI Buffer里面读取已经读取到的数据

即可开始新操作 但是在新操作完成前

SPI必须将数据从SPI buffer里面读取出来

为什么

因为在接收过程中 在完毕以后

我的数据会从SPI数据里面 拷贝到我的buffer

我的缓存器里面

因此 它接受完之前 必须把它从我的缓存器里面 拷贝出来

要不然有数据溢出的错误

还要注意 我们的SPI不支持双缓存发射的

必须先完成当前发射 然后再进入下一个数据写入

否则会破坏当前发射的过程

由于主机控制SPI的实现

因此主机可随时发出数据的传输

接下来我们看看SPI模块的框图

从中看出 我们的SPI主要的寄存器是SPI数据

针对主机来说 它的数据是从高位移出来

我接受数据是从低位移入的

因此我们总结一下 SPI接受和发送的区别是

首先是从机将发送数据写入自己的移位寄存器

然后将主机将要发送的数据

写入主机自己的移位寄存器

完成两个数据的装载后

主机启动发送 启动SPI clock时钟信号

来启动数据发送

启动后 主机将要发送到数据 一位一位的移出

从机发送的数据

一位一位移入

整个过程重复直到我的数据发送完成后

进入我们的接受 接受数据从SPI数据里面拷贝到我的

buffer里面 索存

这些接触的数据 整个过程完成

我的SPI的中断响应位将复位

如果它允许被使能的话 就触发中断

进入SPI的接受或发送中断

这个过程是比较简单的

启动时钟之后 数据从高位移出

接受数据从低位移入

等发送完成后 我进入中断

然后下一个数据发送 重复这个过程

接下来我们看看SPI数据的数据格式

刚才也提到了 SPI的通讯

它的数据位数 和我的数据都是可编程的

因此对数据对齐有要求

针对发送端来说 由于从高位移出

针对发送数据来说 必须左对齐

也就是数据往左移 针对我接受来说

我从低位开始的 所以接受数据是右对齐

针对不用的位的话 我必须在用户程序中屏蔽掉

接下来 我们总结一下 SPI通讯的

一些要点

SPI是一个同步的串口通讯 工作方式有两种

一个是两线 一个是三线的通讯方式

针对两线制的通讯方式 它的优点是硬件的线数少

只能工作在half duplex

三线制的 速率要求高 是边收边发的

是双功能的通讯方式

我们可以通过软件来配置 主机和从机

非常简单 只需要我的寄存器

设置成主机从机模式就好了

我们要注意 在整个SPI通讯网络中

只有一个主机 其他的都是作为从机

主机提供通讯的时机

和时序

然后我们的数据位是可以变化的

是可以编程设置的

那么针对F2837X或者F28X7X的话

我们的SPI有一些增强的功能

比如我们支持16位的

多缓存

还支持延迟的发送 我可以设定我的发送是上升沿 下降沿

延迟90度 半个相位等等

还有我们的SPI 是支持DMA模式的

无线访问的 DMA支持的话

有非常好的一点是 我在数据的发送和接收时

不需要CPU直接的参与

我直接从DMA从我要发送的数据的寄存器中

或者RAM中 把数据拷贝过来

放在我的SPI的发送寄存器里面

然后将接受数据通过DMA 移到我的目标RAM中

或者我的flash中

这个过程无需CPU参与

减少对CPU开支的需求

好 这块是我们的SPI

接下来我们讲SCI

串行通讯接口

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

C2837x入门指南(二十)—通信系统之SPI

所属课程:C2837x入门指南 发布时间:2016.07.12 视频集数:28 本节视频时长:00:11:43
C2837x概述;芯片架构; 开发环境;外设寄存器操作;复位和中断;系统初始化;模拟子系统 ADC DAC CMP SDFM;控制类外设PWM CAP QEP。
TI培训小程序