C2837x入门指南(二十)—通信系统之SPI
Loading the player...
将在30s后自动为您播放下一课程
大家好 接下来我们进入第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 串行通讯接口
大家好 接下来我们进入第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 串行通讯接口
大家好 接下来我们进入第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。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>