目录

  • 一、 串口通信基础知识
    • 1、数据的传输方式
    • 2、数据的通信方式
    • 3、串行通信接口
    • 4、奇偶校验
  • 二、AW60串行通信
    • 1、串行通信接口概述
    • 2、八大寄存器
      • (1)波特率寄存器
      • (2)数据寄存器(SCIxD)
      • (3)控制寄存器
      • (4)状态寄存器
    • 3、寄存器初始化
    • 4、编程实例

一、 串口通信基础知识

设备之间的通信方式可以分成并行通信和串行通信两种。它们的区别是:

并行通信 串行通信
传输原理 数据每个位都同时传输 数据按位顺序一位一位传输
优点 速度快 占用引脚资源少
缺点 占用引脚资源多 速度相对较慢

1、数据的传输方式

  • 单工:数据传输是单向的,一端为发送端,另一端为接收端,如(a)图。
  • 半双工:允许数据在两个方向上传输。但是,在任何时刻,只允许数据在一个方向上传输,不能同时收发;它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口,如(b)图。
  • 全双工允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端,如(c)图。

2、数据的通信方式

  • 同步通信:带时钟同步信号传输。例如:SPI,IIC通信接口。
  • 异步通信:不带时钟同步信号。例如:UART(通用异步收发器),单总线。

(1)在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。

(2)在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率—每秒内传送的位数)等,以便更好地同步。常用的波特率有600、900、1200、1800、2400、4800、9600、115200等。

(3)在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。

3、串行通信接口

通信标准 引脚说明 通信方式 通信方向
UART(通用异步收发器) TXD:发送端; RXT:接收端 ;GND:接地 异步通信 全双工
SPI SCK:同步时钟;MISO:主机输入,从机输出;MOSI:主机输出,从机输入 同步通信 全双工
I2C SCK:同步时钟;SDA:数据输入/输出端 同步通信 半双工

4、奇偶校验

  • 字符奇偶校验检查(垂直冗余检查):它是为每个字符增加一个额外位,使字符中“1”的个数为奇数或偶数。
    (1)奇校验:如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果“1”的数目是奇数,校验位应为“0”。
    (2)偶校验:如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如果是奇数则为“1”。

二、AW60串行通信

1、串行通信接口概述

  • MC9S08AW60系列包含两个独立的串行通信接口(SCI)模块,分别和PTE0(TxD1)PTE1(RxD1)PTC3(TxD2)PTC5(RxD2) 管脚复用。
  • 每个SCI模块特性
    (1)具有的独立的可编程波特率生成器
    (2)支持低于115.2kbaud的多种标准波特率
    (3)采用双缓冲结构
    (4)接收器和发送器还具有硬件奇偶校验、接收唤醒和双缓冲。
    (5)可编程的8位或9位字符长度。可选的13位暂停符。支持多种中断驱动或轮询操作
    (6)SCI还具有多种工作模式:回路模式、单线模式、正常2线全双工模式

2、八大寄存器

(1)波特率寄存器

  • AW60的SCI模块内部含有波特率发生器,它将总线频率进行分频,以产生串行通信需要的波特率。分频因子由16位SCI波特率寄存器的(第12~0位)[SCR12:SBR0] 决定。而16位SCI波特率寄存器由两个8位寄存器SCIxBDH、SCIxBDL组成。

  • SCIxBDH:16位SCI波特率寄存器的高八位,也就是第8~15位;故SCIxBDH的第0 ~ 4位对应于[SCR8:SBR12],第5 ~ 7位未定义,一般取为0。

  • SCIxBDL:16位SCI波特率寄存器的低八位,也就是第0~7位;故SCIxBDH的第0 ~ 7位对应于[SCR0:SBR7]。

  • 波特率计算公式:

  • SCIBD寄存器值的计算公式:

    SCIBD=BUSCLK/(SCI波特率X16)
    AW60的内部总线频率是4MHz,由于4MHz=4x10^6>65535,故通常把4MHz=(4x10 ^4)/10 ^(-2),这样做的目的是防止数据溢出。

  • 设置波特率时首先写入SCIxBDH,缓存生成的高八位字节,然后再写入SCIxBDL。SCIxBDH中的值在写入SCIxBDL前不会变化。如:

void SCIInit(uint baud )   //baud是波特率(600、9600……){uint Mbaud=0;Mbaud=4*(10000/(baud/100))/16;SCI1BDH=(uchar)((Mbaud&0xFF00)>>8);SCI1BDL=(uchar)(Mbaud&0x00FF);}

(2)数据寄存器(SCIxD)

  • 数据寄存器包含两个独立的寄存器,两个独立的寄存器分别对应接收数据缓冲区与发送数据缓冲区。
  • 接收数据时,读取数据寄存器(SCIxD)的内容。
  • 发送数据时,将数据写到数据寄存器(SCIxD)。
  • 该寄存器不需要初始化,直接可以用。
  • 发出一个字符:
while(!(SCI1S1_TDRE));  //判断发送缓冲区是否为空SCI1D=ch;         //ch是1个字节

(3)控制寄存器

  • 控制寄存器有三个分别是SCIxC1、SCIxC2和SCIxC3。
  • SCIxC1该读/写寄存器用于设置SCI的工作方式,可选择运行模式、唤醒模式、空闲类型检测以及奇偶效验等。
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义 LOOPS SCISWAI RSRC M WAKE ILT PE PT
复位 0 0 0 0 0 0 0 0
功能描述
LOOPS 环路模式选择——用于选择SCI的发送、接收两个管脚的工作模式;0:正常操作——RxD和TxD管脚互相独立,工作于正常全双工模式;1:环路模式或单线模式,发送器输出被内部连接到接收器输入(见RSRC位),RxD管脚未被SCI使用
SCISWA 等待模式下SCI停止允许位。0:在等待模式下SCI时钟继续运行,因此SCI能够在等待模式下产生中断唤醒CPU;1:在等待模式下SCI时钟被停止。
RSRC 接收源选择—―此位只有在 LOOPS=1时才有含义和效果。当LOOPS=1时,接收器的输入被内部连接到TxD管脚,RSRC位决定此连接是否还连接到发送器的输出。0:在LOOPS=1的情况下,RSRC=0选定内部环回模式,且SCI不使用RxD或TxD管脚;1:单线SCI模式,TxD管脚被连接到发送器输出和接牧器输入
M 数据帧格式选择位(9位或8位模式选择);0:8位正常模式,包括(起始位+8位数据位(LSB在前)+停止位);1:9位模式,起始位+8位数据位(LSB在前)+第9位数据+停止位。
WAKE 接收唤醒方法选择。0:空闲线唤醒;1:地址符唤醒。
ILT 空闲线类型选择—―用于设定检测空闲线的两种方法。0:空闲字符位计数从起始位之后开始;1:空闲字符位计数从停止位之后开始。
PE 奇偶校验允许一一允许硬件奇偶生成器和校验。当允许奇偶校验时,那么数据位最高有效位MSB(第8位或第9位)被当作奇偶检验位。0:没有硬件奇偶生成器和校验;1:有硬件奇偶生成器和校验
PT 奇偶校验类型 一一用于选定在 PE=11时是用偶校验还是奇校验。0:偶校验;1:奇校验
  • SCIxC2:该寄存器主要用于收/发及相关中断控制的设置。
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义 TIE TCIE RIE ILIE TE RE RWU SBK
复位 0 0 0 0 0 0 0 0
功能描述
TIE 发送中断允许位。0:当TDRE=1时禁止产生硬件中断(可使用轮询);1:当TDRE=1时允许产生硬件中断
TCIE 发送完成中断允许位。0:当TC=1时禁止产生硬件中断(可使用轮询);1:当TC=1时允许产生硬件中断。
RIE 接收中断允许位。0:当RDRF=1时禁止产生硬件中断(可使用轮询);1:当RDRF=1时允许产生硬件中断
ILIE 空闲线中断允许位。0:当IDLE=1时禁止产生硬件中断(可使用轮询);1:当IDLE=1时允许产生硬件中断
TE 发送器允许。0:发送器关闭;1:发送器工作。
RE 接收器允许 一一当SCI接收器关闭时,RxD管脚可用作通用I/O管脚。0:接收器关闭;1:接收器打开
RWU 接收器唤醒控制一一在接收器等待对选定好的唤醒条件进行自动硬件检测的结果时,此位能被写1来使SCI接收器在此时处于备用状态。唤醒条件要么是在信息之间有一个空闲线( WAKE=0,空闲线唤醒),要么是字符中的最高有效位为1 (WAKE=1地址符唤醒)。应用软件设置RWU为1, 而选定的硬件唤醒事件会自动清零RWU。0:正常SCI接收器操作;1:SCI接收器在等待唤醒事件时转为备用模式。
SBK 发送暂停一一先写1然后写0到SBK会在发送数据流中插入一个暂停符。只要SBK=1,由10或11位时间长度的逻辑0组成的额外的暂停符就被一直插 入到发送数据流中。0:正常发送器操作;1:插入的暂停字符被发送。
  • SCIxC3:该寄存器主要用于9个数据位、TxD引脚方向、发送数据极性和错误中断的控制
数据位 D7 D6 D5 D4 D3 D2 D1 D0
定义 R8 T8 TxDIR TXINV ORIE NEIE FEIE PEIE
复位 0 0 0 0 0 0 0 0
功能描述
R8 接收数据第9位一一当 SCI被配置为9位数据格式(M=1)时,R8用作接收数据中的处于SCIxD寄存器中接收缓存数据最高位MSB左边的第9数据。当读9位数据的时候,R8和SCIxD都必须被读才能完成自动清零RDRF的操作序列。
T8 发送数据第9位一一当SCI 被配置为9位数据格式(M=1)时,T8用作发送数据中的处于SCIxD寄存器中发送缓存数据最高位MSB左边的第9数据位。当写一个9位数据时,完整的9位值在SCIxD被写入之后就被传送到SCI移位寄存器中,因此T8如果要从当前值被改变那么应该在写SCIxD之前写入。如果T8不需要改变成一个新的值,那么它不需要在每次写SCIxD的时候都被重写。
TxDIR 单线模式下的TxD管脚方向一一当SCI被配置为单线半双工工作模式(LOOPS=RSRC=1)时,此位决定TxD管脚的方向。0:单线模式下TxD管脚作为输入;1:单线模式下TxD管脚作为输出。
TXINV 发送数据极性控制位一一设置该位可使发送数据输出的极性反转。0:发送数据极性未被反转;1:发送数据极性被反转。
ORIE 接收器溢出中断允许一一此位用于允许OR=1产生一个硬件中断请求。0禁止OR=1产生中断请求(可使用软件轮询);1允许OR=1产生中断请求
NEIE 噪声错误中断允许一一此位用于允许NF=1产生一个硬件中断请求0:禁止NF=1产生中断请求(可使用软件轮询);1:允许NF=1产生中断请求
FEIE 成帧错误中断允许一一此位用于允许FE=1产生一个硬件中断请求0:禁止FE=1产生中断请求(可使用软件轮询);1:允许FE=1产生中断请求
PEIE 校验错误中断允许一一此位用于允许PF=1产生一个硬件中断请求0:禁止PF=1产生中断请求<可使用软件轮询);1:允许PF=1产生中断请求。

(4)状态寄存器

待写……

3、寄存器初始化

  • (1)根据通信双方的波特率,设定SCI波特率寄存器SCIxBD中分频因子。需要先写SCIxBDH,再写SCIxBDL。
  • (2)更新SCI控制寄存器1(SCIxC1),设定环路模式、8位还是9位数据位、是否允许硬件奇偶校验等,如无特别需求,可取其缺省值而不做设定。
  • (3)更新SCI控制寄存器2(SCIxC2)来允许发送、接收,以及是否允许发送中断和接收中断等。
  • 如需要,更新SCI控制寄存器3(SCIxC3),再对发送数据是否取反、是否允许错误中断等进行设定。
  • (4)允许SCI发送之后,通过读SCI状态寄存器1(SCIxS1)判断其中的TDRE位是否为1来判断发送数据寄存器是否为空,当发送数据寄存器为空时,可以写发送数据到发送数据寄存器SCIxD。
  • (5)允许SCI接收之后,通过查询或中断方式判断SCIxS1中的接收数据寄存器满标志位RDRF是否为1来判断是否接收到了新数据,当接收到新数据时,读寄存器SCIxD来保存新数据,之后还要通过清零RDRF的操作清零RDRF标志位。

4、编程实例

串行通信(SCI模块)相关推荐

  1. 28335之SCI模块

    1.介绍 TMS320F28335内部有三个SCI模块,SCIA.SCIB.SCIC. 每一个SCI模块都有一个接收器和发送器,SCI的接收器和发送器各有一个16级的FIFO(First In Fir ...

  2. DSP F28335的SCI模块

    28335之SCI模块 1.介绍 TMS320F28335内部有三个SCI模块,SCIA.SCIB.SCIC. 每一个SCI模块都有一个接收器和发送器,SCI的接收器和发送器各有一个16级的FIFO( ...

  3. TMS320F28335项目开发记录10_28335之SCI模块

    28335之SCI模块 1.介绍 TMS320F28335内部有三个SCI模块,SCIA.SCIB.SCIC. 每一个SCI模块都有一个接收器和发送器,SCI的接收器和发送器各有一个16级的FIFO( ...

  4. UART 异步串行通信发送模块设计与实现

    UART 异步串行通信发送模块设计与实现 串口发送模块接口设计 注意:在每一次设计端口时,我们都要求可以随时控制该模块开始和结束,因此在设计每一个模块时,务必要加模块的使能端口(EN)和模块结束端口( ...

  5. TI DSP芯片SCI模块的波特率自适应

    以TMS320F2803x为例,其SCI Reference Guide (SPRUGH1C)对SCI模块的波特率自适应作了如下描述: 1.置位SCIFFCT寄存器的CDC位,同时,向SCIFFCT寄 ...

  6. F28335 SCI模块功能单元及其寄存器配置————F28335学习笔记(八)

    1 SCI模块的功能单元 (1)1个发送器(TX)及相关寄存器. (2)1个接收器(RX)及相关寄存器. (3)一个可编程的波特率产生器. (4)数据存储器映射的控制和状态寄存器. SCI模块的所有寄 ...

  7. 基于FPGA的UART异步串行通信发送模块设计与实现

    欢迎关注微信公众号"FPGA科技室",更多内容请关注 下一篇文请点击下列链接(接收模块设计) [基于FPGA的UART异步串行通信接收模块设计与实现] 本文发送模块: 在电子系统中 ...

  8. 【DSP】TMS320F28335的SCI模块

    一.功能说明 两线式异步串行通讯 深度为16的FIFO 接收中断检测 校验位.错误帧 16位可编程波特率 软件设置流程 //1.SCI时钟使能,在InitSysCtrl()函数里 SysCtrlReg ...

  9. DSP SCI模块实验

最新文章

  1. win10下mysql 8.0.18 安装配置方法图文教程
  2. CodeIgniter 的数据安全过滤全解析
  3. java返回类型自动_java-Apache Flink:由于类型擦除,无法自动确定函数的返回类型...
  4. 抓取网络源码python_使用Python进行网络抓取的新手指南
  5. LeetCode刷题——167. 两数之和 II - 输入有序数组
  6. Atitit.软件开发提升稳定性总结
  7. 怎么把HTML转换成swf用迅雷,什么工具能把MP4格式转换成SWF并不降低画质
  8. 经颅磁刺激对大脑结构的直接影响: cTBS后的短期神经可塑性
  9. PHP LOL接口,教你如何用php实现LOL数据远程获取_PHP教程
  10. Web App - MUI框架实战
  11. LaTex中各种文本框
  12. 干货!量子技术入门、进阶、行业专家观点、最新资讯!1000篇好文帮你揭开量子技术神秘面纱!...
  13. 权证基础知识学习(一)
  14. 单机翻译软件android,计算机辅助翻译软件(Transmate)V7.3.0.1218 单机版
  15. Python与自然语言处理——句法分析
  16. python商业数据分析课程设计_商务数据分析实验室
  17. 看图写英语作文关于计算机,看图说话 英语作文图片上是一个小女孩看着电脑发呆,要求120字~...
  18. 内推一定能找到工作吗?三个问题带你了解内推
  19. stay hungry,stay foolish
  20. MATLAB求最大特征值和特征向量

热门文章

  1. ServerSocket通过构造方法绑定端口
  2. 漫说从打工者到企业家的蜕变过程所碰到的问题及解决方案
  3. 雅诗兰黛中国创新研发中心在上海揭幕;安联贸易任命中国区行政总裁 | 美通企业日报...
  4. 圣诞节要来了,程序员女友用Python画圣诞树的浪漫代码作为最好的礼物
  5. 外星人安装MSDN原版系统一键还原Alienware OEM logo
  6. C语言课设分享:图片加载
  7. 2018年Oracle官网下载Oracle 11g安装包
  8. 解决docker报错:listing workers for Build: failed to list workers: Unavailable: connection error: desc =
  9. JS前端数据多条件筛选
  10. web渗透--ftp暴力破解,明文、嗅探安全等