0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文解读SCI通信的相关内容

冬至子 来源:龙一的编程life 作者:龙憨憨 2023-11-08 10:34 次阅读

前言

本次总结主要是SCI通信的相关内容。具体如下:

1、通信波特率的设置;
2、SCI通信时序:数据格式,信号的接收与发送时序;
3、SCI接收、发送的相关原理,包括查询和中断,FIFO等;
4、如何设计通信协议:MCU上位机,MCU–MCU。

基础知识

SCI:串行通信接口,串行通信技术的一种总称;
UART:通用异步收发器,串行通信的一种协议;
RS232:串行通信的一种物理接口电气标准。

1、串行通信:同步通信和异步通信

  • 同步通信:发送、接收端共用一个时钟用来同步,如I2C、SPI;
  • 异步通信:时钟独立,使用同一标称频率(波特率)。如SCI(UART)。

2、传输方式:单工、半双工、全双工

  • 单工:单向传输,只需一根数据线;
  • 半双工:双向传输,任一时刻只能发送或者接收,不能同时进行;
  • 全双工:双向传输,可同时收发数据。

3、DSP中的SCI接口可以看做UART,输出电平为TTL,一般和RS232接口连接,RS232电平不同于TTL,需要进行电平转换,常用芯片如MAX232。

  • 232电平:逻辑1:-3~15V;逻辑0:3 ~15V
  • 标准TTL:逻辑1:2~5V;逻辑0:0 ~0.8V

1、时钟使能

1.1 时钟使能

时钟使能为外设时钟控制寄存器PCLKCR0的第10位(SCIA)或第11(位SCIB)或第5位(SCIC)。
SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; // SCI-A
SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1; // SCI-B
SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1; // SCI-C

图片

1.2波特率

SCI的时钟由LSPCLK和波特率选择寄存器决定,波特率选择寄存器为16位。波特率的设置分两种情况:

  1. BRR = 0,波特率 = LSPCLK / ((BRR + 1)*8)
  2. BRR在1-65535之间,波特率 = LSPCLK / 16

图片

2、SCI数据通信

2.1 数据格式

典型数据帧格式如图Figure1-3所示:

  1. 1位起始位
  2. 1-8位数据位(LSB低位先行)
  3. 1个奇/偶校验位
  4. 1位或2位停止位

图片

所谓低位先行就是一个数据的地位在前 ,如0xAA,数据位则为:0101 0101

在这里说一下奇偶校验,奇偶校验检查称为垂直冗余检查,具体指在每个发送字符中增加一个额外为使字符中的“1”的数目是奇数或偶数。
奇校验:字符数据位中“1”的数目是偶数,校验位应为“1”,使数目为偶数;反之为“0”,如:1100 0011,数目为偶数,校验位则为1,即1100 0011 1;
偶校验:字符数据位中“1”的数目是偶数,校验位应为“0”,使数目为偶数;反之为“1”,如:1100 0011,数目为偶数,校验位则为1,即1100 0011 0。

2.2 SCI数据流

由图4-15可知发送和接收数据流。

  1. 一个发送器(TX)的相关寄存器:发送数据缓冲寄存器(SCITXBUF)和发送移位寄存器(TXSHF)
    数据流向为:发送数据–>SCITXBUF–>TXSHF—>SCITXD发送出去;
  2. 一个接收器(RX)的相关寄存器:接收数据缓冲寄存器(SCIRXBUF)和发送移位寄存器(RXSHF)
    数据流向为:接收数据—>SCIRXD–>RXSHF–>SCITXBUF存取缓冲器;
    接收数据直接通过接收数据缓冲器给变量即可。

以上的数据流都是在非FIFO模式下的,FIFO模式简单来说是设置了一个缓冲机制,设置一个数据的缓冲深度,当发送或接受数据存到设置的深度时,再进行发送或接收。具体流向见图4-15。

2.3、信号接收时序

信号接收时序如Figure1-8所示,具体时序为:

  1. 1-RXENA使能,接收数据;
  2. 2- 数据到SCIRXD,检测起始位;
  3. 3-数据从移位寄存器RXSHF到缓冲寄存器SCIRXBUF,产生中断申请,RXRDY变高(1),已接收到一个新字符;
  4. 4-程序读缓冲寄存器,RXRDY=0;
  5. 5-下一次字节到达SCIRXD,检测启动位,清除;
  6. 6-RXENA变为低(0);
  7. 继续想移位寄存器转载数据,但不移入缓冲寄存器。

以上是中断接收,我们一般都是用中断接收,中断直接获取缓冲寄存器的中的数据即可;而查询接收则是通过查询RXRDY标志位来进行接收,为高则接收到新字符,读之后为0.

图片

2.4 信号的发送时序

  1. 1-TXENA使能,发送数据,初始时缓冲寄存器SCITXBUF为空,TXRDY为高(1),TX EMPTY为高(1);
  2. 2-写数据到缓缓冲寄存器,不为空,TXRDY为低(0),EMPTY为低(0);
  3. 发送数据到移位寄存器TXSHF,缓冲寄存器为空,准备传送第二个字符到缓冲寄存器,3-TXRDY为高(1),中断请求;
  4. 3-TXRDY为高(1)时,程序写第二个字符到缓冲寄存器,这时SCITXD开始发送第一个字符;写入缓冲寄存器后,4-TXRDY为低(0);
  5. 发送完第一个字符,开始将第二个字符移入移位寄存器,移完5-TXRDY为高(1),开始发送第二个字符;
  6. 6-TXENA位变低,禁止发送数据,,结束当前字符的发送;
  7. 7-第二个字符发送完成,缓冲寄存器为空,准备发送下一个字符。

以上为中断发送,一般我们发送可以直接赋值给缓冲寄存器SCITXBUF即可。

图片

3 通信协议

一般使用SCI通信(RS232通信)可以是MCU–上位机,MCU–MCU等,这里主要说这两种,其实方法都一致。
1、如果传输的数据量不大的话,直接传输即可,也不需要进行精心的设计,规定好先后顺序即可,然后发送和接收都按照顺序进行即可;
2、如果传输的数据量的大的话,同时是全双工进行的话,这时候就需要进行设计相关的传输准则了。如:

  1. 确定传输的对象;
  2. 确定双方的通信地址;
  3. 确定传输数据的命令,不同命令对应传输不同的数据;
  4. 确定校验的方法,每次指令传输的数据都进行校验,验证传输的和接收的是否一致,不一致则重新接收;
  5. 全部确定以后,即可按照地址、传输指令和校验方法编写程序进行验证。

总结

此次的重点在于波特率的设置以及数据传输的时序,至于通信协议只是写了最基本的思路,需要根据具体的实际情况进行编写相关的通信标准,然后设计程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 串行通信
    +关注

    关注

    4

    文章

    536

    浏览量

    35024
  • 上位机
    +关注

    关注

    26

    文章

    861

    浏览量

    54051
  • 异步收发器
    +关注

    关注

    0

    文章

    36

    浏览量

    10800
  • SCI
    SCI
    +关注

    关注

    1

    文章

    53

    浏览量

    19950
  • FIFO存储
    +关注

    关注

    0

    文章

    102

    浏览量

    5895
收藏 人收藏

    评论

    相关推荐

    大功率晶闸管封装工艺相关内容,有没有哪位朋友可以帮忙

    大功率晶闸管封装工艺相关内容,有没有哪位朋友可以帮忙
    发表于 04-01 10:11

    。。。。GSM的相关内容(包含AT)

    GSM相关内容(短消息,AT指令,例程)。。。。
    发表于 07-21 19:42

    量子力学经典相关内容附图使之更易理解

    量子力学经典相关内容附图使之更易理解2020-8-1
    发表于 08-01 22:24

    单片机之驱动能力的相关内容解析

    来源:互联网单片机是个比较复杂的课题,但是如果你找到正确的学习方式你就会觉得单片机点都不难,下面跟着小编学习下单片机篇之驱动能力的部分相关内容~
    发表于 10-22 19:02

    GPIO中断相关内容 精选资料分享

    芯片:STM32 F412这里只写GPIO中断相关内容打开STM32CubeMX,鼠标左键点击需要设置GPIO中断的引脚,选择GPIO_EXTI*,鼠标右键点击可以设置自定义LABEL设置GPIO
    发表于 08-13 08:54

    小白求助,机甲大师机器人软件单元测试的相关内容

    小白求助,机甲大师机器人软件单元测试的相关内容
    发表于 11-22 06:15

    简单描述下Arduino相关内容

    什么是Arduino,今天就针对初学者简单描述下 Arduino 相关内容、初识Arduino要了解Arduino就先要了解什么是单片机,Arduino平台的基础其实就是AVR指令集的单片机。1、什么是...
    发表于 11-23 08:38

    串口硬件和协议的相关内容

    1.概述串口通信种非常常用的通信方式,本文首先介绍了串口硬件和协议的相关内容,然后给出个单片机与上位机通过串口
    发表于 01-19 08:20

    分享个RK3288主板适配LVDS分辨率相关内容

    分享个RK3288主板适配LVDS分辨率相关内容
    发表于 03-04 07:24

    高云半导体时序约束的相关内容

    本手册主要描述高云半导体时序约束的相关内容,包含时序约束编辑器(Timing Constraints Editor)的使用、约束语法规范以及静态时序分析报告(以下简称时序报告)说明。旨在帮助用户快速
    发表于 09-29 08:09

    永康泰冲击波参数及相关内容

    永康泰冲击波参数及相关内容,招标文件参数。
    发表于 05-09 15:22 1次下载

    浅析弹簧管压力仪表的相关内容

    弹簧管压力表属于就地指示型压力表,就地显示压力的大小,不带远程传送显示、调节功能。在化工场合运用非常广泛,接下来就为大家全面的介绍一下弹簧管压力仪表的相关内容
    的头像 发表于 09-17 09:35 3578次阅读

    USB HID介绍及USB协议的相关内容USB设备描述符资料概述

    HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB协议的相关内容
    发表于 11-02 15:15 27次下载
    USB HID介绍及USB协议的<b class='flag-5'>相关内容</b>USB设备描述符资料概述

    CANOpen系列教程01_ 初识CAN与CANOpen及相关内容

    CANOpen系列教程01_初识CAN与CANOpen及相关内容
    的头像 发表于 03-07 16:15 8074次阅读

    在 I/O 看未来 | 多设备相关内容三大更新

    作者 / 开发者关系工程师 Sara Hamilton 您是否错过了今年 Google I/O 大会上多设备相关内容的最新动态?别担心,我们将在本文为您介绍作为开发者不容错过的 Android
    的头像 发表于 07-12 17:40 246次阅读
    在 I/O 看未来 | 多设备<b class='flag-5'>相关内容</b>三大更新