- 本课程为精品课,您可以登录eeworld继续观看:
- (20) -通信系统之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
串行通讯接口
课程介绍
共计28课时,4小时27分22秒
C2837x入门指南
TI C2000 MCU PWM F2837xD ADC DAC DMA CLA C2837x CMP SDFM CAP QEP c28x
F2837x系列的最新 C2000™ Delfino™ 32 位 F2837xD 微控制器 (MCU),为工业实时控制实现最新创新,并设定了全新性能标准。这些最新 MCU 支持双核 C28x 处理功能与双实时控制加速器(也称为控制律加速器或 CLA),可提供 800 MIPS 浮点性能,从而可帮助设计人员为计算要求严格的控制应用开发低时延系统。此外,设计人员还可通过将多个嵌入式处理器整合在单个 MCU 中以降低复杂性,充分满足高级伺服驱动器、太阳能中央逆变器以及工业不间断电源 (UPS) 等需要实时信号分析的应用需求。
猜你喜欢
换一换
推荐帖子
- 如下C6713指令,15行为什么加上一个nop 5指令???
- 改代码摘自TI 的C6713 二级bootloader代码。在15行为什么加上一个nop 5 指令,为啥不是nop 3 或nop 2 或干脆不加呢??? 1 ;**************************************************************************** 2 ; copy sections 3 ;***...
-
52mcu
DSP 与 ARM 处理器
- ADS1298的常见问题
- 本帖最后由 dontium 于 2015-1-23 11:21 编辑 ADS1298 的常见问题1、 问:我想使用不带 MMB0 的 ADS1298ECGFE EVM,这是否可能?答:是的,完全没问题!不过应首先考虑到以下几个方面:- 电路板电源ADS1298ECGFE 板的电源来自 10 引脚双排插座 J4。通过 MMB0 连接头 J5,可将 +5V、+3.3V 以及 +1.8V 交付给ADS...
-
模拟IC
模拟与混合信号
- omapl138环境搭建
- 大家好,本人正在搭建omapl138的开发环境。 现在搭建的环境是WIN7 32位操作系统,CCS5.1,仿真器用的是北京瑞泰科技的ICETEK-XDS560U-PLUS。ARM端要跑裸机,DSP做算法。 我已经实现了DSP端控制开发板上LED,想实现ARM和DSP之间的通信,ARM去访问外设。安装了OMAPL138_StarterWare_1_10_04_01-Setup.exe。 Sta...
-
twli
DSP 与 ARM 处理器
- 【TI首届低功耗设计大赛】智能手表之通话功能实现
- 本帖最后由 zhanghuichun 于 2014-11-15 19:39 编辑 将之前Sim908的通信底层测试好之后,集成到人机交互界面中。 主要代码如下: void GUI_Phone( void ) { WM_HWIN hEdit; &n...
-
zhanghuichun
微控制器 MCU