(21) -通信系统之SCI

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录eeworld继续观看:
  • (21) -通信系统之SCI
  • 登录
接下来我们讲SCI通信模块 SCI是串行的IO端口 支持C2000和外部的串联的异步通讯 异步串行通讯 主要适用于远距离 对速率要求不高的通讯 是性价比比较高的通讯方式 SCI的发送和接收寄存器是双缓冲的寄存器 除了发送移位寄存器 还有缓存器 接收也有一个寄存器和它的接受缓存器 所以它可以避免数据冲突 高效利用CPU 同时 SCI模块的接受和发送寄存器 是相互独立的 端口也是独立的 RXD端口 因此它是一个全双功的接口 随时可以发送和接收数据 我们的C2000的SCI模块还有硬件校验和数据格式的处理 都是端口的硬件来完成 进一步降低软件的开销 SCI模块通讯时的接线非常简单 比如只有两个器件通讯 两根线交叉连接就可以了 如果是总线通讯的话 将TSD RSD挂到总线上即可 我们看看SCI的数据格式 它是一个串行通讯 所以数据最小单位是位 是我们的字符 是一个位一个位往外移的 具体有几个位 数据有效位可以从1到8之间 长度是可以设置的 通过我们的SCICCR寄存器里面的bit0到2之间的 设置通讯数据的长度 那么数据的每个字符的格式 是一个起始位 1到2个停止位 一个校验位 一个地址位或数据位 数据字符和这些起始位 停止位等组合 称为一个数据针 那么很多针组合在一起 叫做一个数据块 如果SCI上有两个以上的串行端口 数据块是以地址针为起始的 那么这个地址针的作用是 根据用户的协议 指定数据的目标端口 起始位是每个针的最开始第一位 是针的开始 我们的SCI采用的是NRZ 不归零的格式 也就是在非活动状态下 SCI的RS和TS两根线上必须保证是高电平 当总线上没有数据接收 或发送时 我们的外设必须保证把这两根线拉到一个高电平 一个无效状态 刚才说了 数据针里面的 控制 包括起始位 控制 包括奇偶位的控制 都是在我们的CCR寄存器里面完成配置的 CCR配置要注意的一点是 必须在SM或者复位的时候 非活动状态下 进行配置 如何保证这个配置 一般这个状态是在程序初始化的时候 我们先通过SCI控制寄存器里面的SWRESET 软件复位控制 将SM位初始化 并且保证 保持复位的状态 在这个过程中 我们可以配置我们的SCI寄存器 当这个SCI配置完后 在SWRESET这个位置上重新写1 让SM重启 完成这么一个配置的过程 然后我们看看SCI的时序 我们主要关注起始位有效状态的检测 结束位的有效状态的检测 起始位状态检测非常简单 关键一点是 我在SCRXD上检测到 下降沿的时候 那我们必须保证后面四个clock一直处在低电平 那这个地方强调说 我对每个位的检测 有8个clock周期来完成 针对数据位的话 我需要把8个周期里面的4 5 6 三个周期 多数投票状态来决定 举个例子 在4 5 6的时候 我发现两个以上的位数检测到 是高电平的话 我的输出位是]高电平 反过来 两个以上的位置检测到低电平 我的输出位是一个低电平的状态 接下来我们将SCI中非常关键的唤醒机制 这地方 多重处理器的意思是 我的SCI总线上挂的不止两个器件 是两个器件以上 三个以上 这时候 多个器件间如何完成通讯 不管总线上有多少个器件 在某个时候 我们只允许两个器件来完成通讯 一个收 一个发 因此 唤醒机制非常关键 在这么多器件中 我如何唤醒两个器件或者我通讯所需的器件 根据我们的唤醒机制不同 我们分为两种 一种是空闲模式 一种的地址模式 我们接下来讲讲两种模式的区别 我们先看空闲模式 空闲的意思是 我的地址针或者每个针之间 状态是空闲的 无效状态的 那么在空闲状态 我们的地址针的标志是通过软件 有意延迟10个周期 第二个是通过TXWAKE寄存器在我发送地址针之前 留11个无效的状态位 在唤醒机制中 最关键的一点是 我如何检测我的地址针 刚才说了 空白模式下是两种 一个是空闲10个 第二个是自动留11个空闲状态 这两个方式的区别是前面这个需要软件来单独配置这个周期 后面是寄存器完成 不需要用户参与 反过来 针对我们的地址模式 它跟空闲模式 最主要的区别 我在每个地址针前 我不需要特意留出每个空闲的状态 我只需要在地址位或状态位的时候 假如把它标为1 代表我前面发送的数据 接受的是地址信息 假如是0 代表1到8位是一个数据信息 不是地址 是数据 所以这个模式和前面的空闲模式 一个区别是我不需要这个地址之前是保持一个无效状态 它配置起来更灵活 假如我的某一个器件 检测到 我的地址 检测对比完发现 这个地址跟本设备的地址吻合的时候 我的器件进入有效状态 会接收发送数据 同时 我的sleep寄存器清零 SCI中还有一个关键的是中断 它的中断源有好几个 最常用的是接收中断 发送中断 还有我们的一些故障保护的中断 比如溢出、错误等待这些 最关键的接受和发送中断 发送中断的话 它产生的原则是 我的发送缓存器里面空了 一种是发送寄存器里面空的 我的缓存器里面是空的 我认为这是一个空闲状态 第二种是发送寄存器里面有数据的 数据跟着缓存器已经发送到发送寄存器里面 缓存器可以接受下个数据时 我认为是发送就绪状态 这两种都可以产生发送中断 接收中断 比如说 产生的一个标准是 接收寄存器里面 我接收的数据 我认为我的接受可以了 我产生一个接收的中断 其他的比如发送中断 异常中断 就根据产生的机制 产生保护等功能 此外 针对其他寄存器的错误 我们提供了标志和中断功能 比方说 RX接收中断检测 中断错误检测 接受异常检测 奇偶状态错误的检测 所有这些都是为了完成数据的保护 完成正常的通讯 最后总结一下 SCI的通讯 它是异步的串行通讯 支持的波特率也是比较多的 比如经过我们的波特计算器 来设置 还有总线的唤醒模式 有空闲和地址模式 数据格式有SCCR寄存器的编程控制1到8位的数据格式 那么然后在我们的C28X系列里面 对我们的SCI有一些增强功能 比如我们有16位的FIFO 在复位的时候是无效的 程序进入后 通过寄存器的配置 可以让FIFO使能 FIFO也就有两个中断 比如接收和发送中断 等等 因此 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) 等需要实时信号分析的应用需求。

推荐帖子

晒WEBENCH设计的过程+时钟设计1
初次使用时钟设计 , 对CLOCK还不是很熟悉 , 设想要求四路时钟设计, 来体验, 因为之前有过设计, 知道报告不好出, 打开界面后可以使用ADD增加一行, 设置10,30,55,80MHZ, 再选择绿色按纽, 在出现的界面里可以看的到很多选择, 在右下角, 我们选择第3个 依次再选择所需要的设置, 在这里, 可以修改一些参数 然后可以选择保存项目, 可能是初次尝试时钟...
accboy 模拟与混合信号
求助:我装的dsp builder7.2,scan jtag没有device下拉菜单,怎么回事
我装的dsp builder7.2,scan jtag没有device下拉菜单,怎么回事? 我毕设有载波跟踪环设计,各种滤波器,寄存器,发生器,我对ccs完全不会,觉得编程好难;dsp builder是图形化设计,觉得简单一点。 那么dsp builder与ccs到底有何区别?比如说,分别用dsp builder与ccs设计一个正弦信号发生器,二者有何区别? 板子是dspc54系列的,dsp...
blackboard DSP 与 ARM 处理器
如何开始DSP编程[精]
如何开始DSP编程 这本书,从安装CCS 软件开始,一步一步教你如何开始DSP编程, 并给出了相应操作的图示,是一本难得的好书 对初学者来说,可以以最快的速度入门。 ...
zhang_mike2000 DSP 与 ARM 处理器
msp430学习笔记之uart
1 相关知识 MSP430系列,usart模块的波特率值设定是通过以下三个参数决定的:UxBR0,UxBR1,UxMCTL 波特率=BRCLK/N BRCLK:时钟源,可以通过寄存器设定何为时钟源; N:波特率产生的分频因子。N=UxBR1+UxBR0+UxMCTL,其中UxBR1+UxBR0为整数部分,UxMCTL为设定小数部分 。 举个例子:波特率=9600,时钟源=32.768...
灞波儿奔 微控制器 MCU

luck_gfb

电机驱动的软件还是很复杂的。也就是说 你用我们的技术 你不需要做很多的操作调整 重新标定啊等等这些工作 只需要将我们的板子连接到电机 在10分钟内 可以让我们的电机转起来 而且这是无传感的技术 InstaSPIN TM motion是有传感的 会带给编码器的 我们会将速度网和[听不清]结合成一个环路 用IDC控制起来做 它的性能比较高端 而且只需要调整一个参数就可以了。

2020年09月02日 17:07:38

hawkier

哈哈哈,学完这章要点时间啊

2019年11月21日 16:12:10

大明58

学习C2837x入门指南

2019年08月22日 12:32:36

zhangleiat185

好好学习天天向上。。

2019年07月12日 16:34:47

hellokt43

好好学习天天向上。。

2019年06月09日 11:05:30

dingxilindy

学习C2000开发所需软件工具

2019年05月16日 14:51:31

zx1988ZX

终于看完了,不错的!

2019年04月25日 06:53:06

wudianjun2001

不错的视频资料。。。。。。

2019年03月04日 10:15:26

59477cq

学习了

2019年01月21日 20:28:50

凤凰息梧桐

学习一下

2019年01月21日 17:28:12

分享到X
微博
QQ
QQ空间
微信

EEWorld订阅号

EEWorld服务号

汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved