DSP课件-SCI串行通信接口
DSP课件-SPI串行外设接口

传输速率较很高,可达75M×16=1200Mbps 信号线多(DB8/16,AB等) 限用于板级扩展外设的输入/输出接口。
4
SPI模块的特点与信号
F281x包含一个四线制SPI接口,可工作于全双工模式 数据长度:1~16位可编程 波特率:126种可编程 可同时进行发送和接收操作
SPI中断使能位(SPICTL.0):1-使能中断,0-禁止中断 当中断使能置位,且满足中断条件时,产生相应的中断。 SPI中断标志位(SPISTS.6):只读,由硬件设置。 指示SPI接收器中已经存放字符可以被读取或已完成指定长度的数据发送。 该位置位时已接收数据送入SPIRXBUF,当DSP读SPIRXBUF中的数据后 自动清除中断标志。
SPICCR.3~SPICCR.0确定了字符的位数(1~16); 当数据写入SPIDAT和SPITXBUF寄存器时必须左对齐; 当数据从SPIRXBUF读取时,必须是右对齐; SPIRXBUF中包含最新接收的字符,以及上次接收且已移位到左边的位。 例1:发送数据长度为1,SPIDAT当前值为737BH,数据格式见下图。
讲授人:奚伯齐 Email: 2015dsp@ 密码:2015dsp
SPI串行外设接口
Serial Peripheral Interface(SPI) 1 SPI模块概述 2 SPI的工作原理 3 通过SPI接口扩展外设 4 软件编程举例
2
1 SPI模块概述
SPI与SCI有什么区别?
两种工作方式:主/从工作方式 4种时钟模式:由极性和相位控制 接口方式:中断或查询
4个外部引脚 只能以 16位方 式访问
12个寄存器
同步时钟
5
模 块 框 图
DSP第三章3节

停止位和空闲位是高电平,以保证在起始位的开始处一定有一 去图 个下跳沿作为起始检测标志。 DSP控制器的串行通信由时钟SCICLK指挥,每位占有8个 SCICLK周期, 在SCICLK周期的第4、5、6个脉冲的下降沿采样引脚,采取3 取2的投票机制决定该位的状态。 而普通的单片机只在每位采样1次就决定该位状态,因此DSP的 采样更合理,抗干扰性能也要好。 为了保证异步串行通信主、从机之间的同步,除了要有前面的 通信数据格式外,还必须要求主、从机的发送和接收时钟具有相同 的周期,既相同的波特率。
数据类寄存器有3个,分别是数据发送缓冲寄存器SCITXBUF、 数据接收缓冲寄存器SCIRXBUF、仿真数据接收缓冲寄存器 SCIRXEMU。
表3.17 串行通信接口寄存器说明
地 址 7050h 寄存器 SCICCR 7 SCI通信 STP 控制寄存 BITS 器 RW-0 SCI CTL1 SCI控制 寄存器1 7 保留 6 EVEN/ ODD RW-0 6 5 PAR ITY RW-0 5 4 SCI ENA RW-0 4 CLOCK ENA RW-0 4 BAUD 12 RW-0 位 数 3 ADDR/ IDLE RW-0 3 TXW AKE RW-0 3 BAUD 11 RW-0 2 SCI CHAR2 RW-0 2 SLEEP RW-0 2 BAUD 10 R-0 1 SCI CHAR1 RW-0 1 TXENA RW-0 1 BAUD9 RW-0 0 SCI CHAR0 RW-0 0 RXENA RW-0 0 BAUD8 RW-0
2、地址位方式 如上图(c)所示,它是增加了一个地址/数据位,该位为1表示 信息块是地址信息,否则是数据信息。 去图 这种方法不需要监视空闲位的长短,编程比较简明。
地址位方式适合于短信息的传送,空闲线方式适合于长信息的 传送。
第7章 串行通信接口(SCI)

第7章串行通信接口(SCI)目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM口。
有的台式电脑带有两个串行口,分别称为COM1、COM2口。
大部分的笔记本电脑也带有串行口。
随着USB接口的普及,串行口的地位逐渐变低了。
但是,作为设备间的一种简便的通信方式,在相当长的时间内,串行口还不会消失。
因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以,串行通信可以作为MCU与外界通信的简便方式之一。
大部分嵌入式MCU都具有串行通信接口(Serial Communication Interface,SCI),掌握SCI的编程是学习MCU的重要内容之一。
本章从掌握规范的SCI基本编程角度讨论串行通信编程,把与芯片型号相关内容和与芯片型号无关内容区别开来,便于读者融会贯通与实际应用。
本章7.1、7.2节是与芯片无关的有关串行通信的通用基础知识,只有理解这些基础知识,才能进行串行通信的应用。
7.3、7.4节阐述GP32芯片的SCI模块的编程方法,在此基础上,重点掌握7.5节给出的编程实例。
注意,在汇编程序中,只有初始化子程序与GP32相关,收发程序在整个08系列中是通用的,在C程序中,只有初始化子程序与GP32相关,收发程序对任何芯片是通用的。
当然,要注意头文件SCI.h相关位的定义。
关于串口程序的测试,最好利用教学资料中提供的PC机方的高级语言源程序进行。
根据自己对高级语言的熟悉程度选用VB、C#、VC或其他高级语言。
实际上,掌握一门PC机方的高级语言编程对嵌入式系统开发是必要的。
7.1异步串行通信的基础知识本节简要概括了串行通信中的通常使用的相关基本概念,为学习MCU的串行接口编程做准备。
对于已经了解这方面知识的读者,可以略读本节。
7.1.1基本概念“位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0”和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(byte)。
第十章 串行通信接口(SCI)模块-TMS320F28335 DSP原理、开发及应用-符晓

0x0000-7774 0x0000-7775 0x0000-7776 0x0000-7777 0x0000-7779 0x0000-777A 0x0000-777B 0x0000-777C 0x0000-777F
1
控制寄存器2
1
接收状态寄存器
1
仿真缓冲寄存器
1
2
SCI Char2
1
SCI Char1
0
SCI Char0
0 = 1 位停止位 1 = 2 位停止位
0:禁止奇偶校验功能 1:使能奇偶校验功能
0:空闲线模式 1:地址位模式
0:奇校验 1:偶校验
0:禁止测试模式 1:使能测试模式
数据位= (二进制值 + 1) 例如 110b代表7位数据位
SCI异步通信数据格式
寄存器名称
SCICCR SCICTL1 SCIHBAUD
SCILBAUD
SCICTL2 SCIRXST SCIRXEMU SCIRXBUF SCITXBUF SCIFFTX SCIFFRX SCIFFCT SCIPRI
SCI-A 0x0000-7050 0x0000-7051 0x0000-7052
下一个数据块的 地址字节
(地址位为1)
无关紧要的 空闲时间
地址位模式下的一帧数据
SCI波特率计算
SCI 波特率=
LSPCLK , BRR = 1 to 65535 (BRR + 1) x 8
LSPCLK ,
16
BRR = 0
波特率选择的MSB寄存器(ScixRegs.SCIHBAUD)
7
BAUD15 (MSB)
CI常用波特率配置(LSPCLK=37.5MHz)
DSP原理及应用技术第7.3节 串行通信接口(SCI)

TXINT TXINT
7.3 串行通信接口(SCI)
2)SCI自动波特率
SCI模块的增强功能支持硬件上的自动波特率检测逻辑。自动波特率 检测的流程如下:
①使能自动波特率检测模式:设置CDC位(SCIFFCT.13)为1并通过 向ABDCLR位(SCIFFCT.14)写1清除ABD位(SCIFFCT.12)。
7.3 串行通信接口(SCI)
(3)SCI多处理器通信
多处理器通信格式允许一个处理器在同一串行线路中将数据块有 效地传给其它处理器。在一条串行线上每次只有一个处理器发送数据 地址字节: 休眠位: 识别地址字节:
两种多处理器模式的接收顺序如下: 1)在接收一个地址块时,SCI端口被唤醒并请求中断(SCICTL2 寄存器的RX/BK INT ENA位必须使能以发送中断请求)。读取包含目 的地址的第一帧数据。 2)通过中断进入一个软件服务程序,检测即将到来的地址,将 接收到的地址字节与存储在内存中的器件地址进行比对。 3)如果检测结果表明数据块的地址与该设备CPU地址一致,则 CPU清零SLEEP位,并读取数据块的其余部分;如果不是则退出子程序 ,SLEEP仍然保持置位,并且在下一个数据块开始之前不会产生接收 中断。
SCI模块与CPU的连接如图7-29所示。
7.3 串行通信接口(SCI)
1. SCI模块具有以下特征:
➢ 两个外部引脚(不用于SCI通信时,可作为通用I/O口): SCITXD:SCI发送-输出引脚; SCIRXD:SCI接收-输入引脚; ➢ 可编程为多达64K种不同的波特率; ➢ 可编程的数据字格式; ➢ 四个错误检测标志:奇偶校验、溢出、帧错误和间断检测; ➢ 两种多处理器唤醒模式:空闲线和地址位; ➢ 半双工或者全双工操作; ➢ 双缓冲接收或发送功能; ➢ 发送器和接收器操作的完成可以通过中断驱动或者软件查询状态标志来
6.5_串行通信接口SCI模块080408

接收缓冲器/间断中断使 能
0
TX INT ENA
发送缓冲器中断使能控 制TXRDY标志引起的 中断
0-禁止TXRDY中断; 1-使能TXRDY中断
南京航空航天大学自动化学院DSP技术应用实验室
(4)SCI优先级控制寄存器SCIPRI 规定SCI发送和接收中断的优先级以及 SCI模块在仿真挂起时的操作.
2. SCI接收操作 ⑤接收器继续接收下一帧数据,检测起始位, 重复上述操作。 ⑥若第二帧数据尚未接收完毕(时刻6), RXENA=0,则将这一帧数据全部接收完毕后再 停止,但RXSHF中的数据并不传送到SCIRXBUF 中。
南京航空航天大学自动化学院DSP技术应用实验室
四、 SCI操作控制
3. SCI错误处理操作
7052h
SCIHBAUD
SCI波特率选择寄存器高8位
7053h
7054h
SCILBAUD
SCICTL2
SCI波特率选择寄存器低8位
SCI控制寄存器2
保存波特率控制数据低8位
发送中断使能,接收缓冲器/ 间断中断使能,发送准备好 标志和发送空标志。 存放7个接收状态标志
7055h
SCIRXST
SCI接收状态寄存器
四种错误:间断错误、奇偶性错误、溢出错误和帧错 误 ① 数据帧错误(Framing error):若超过一段时间 后仍收不到期待的停止位。 发生数据帧错误时,FE(SCIRXST.4)置位。 ②奇/偶校验错误(Parity error):检测接收到的数 据中1的个数是否正确,用于有限差错检测。 发生奇偶校验错误时,PE(SCIRXST.2)置位。
南京航空航天大学自动化学院DSP技术应用实验室
2. SCI模块的主要部件
第9-11章SCI-McBSP(xkj201612)4

波特率控制
- 工作时钟为LSPCLK - 64K种可编程波特率 - 波特率由SCIHBAUD、SCILBAUD寄存器配置
• BRR = 1~65535
LSPCLK SCI Baud Rate (BRR 1) 8
LSPCLK BRR -1 SCI Baud Rate 8
LSPCLK 16 说明:实际的最大波特率需确保小于主从机的最大允许速率。 SCI Baud Rate
(Full Duplex Shown)
TX FIFO_0 TX FIFO_15 Transmitter-data buffer register 8 Transmitter shift register SCITXD SCITXD TX FIFO_0 TX FIFO_15 Transmitter-data buffer register 8 Transmitter shift register
合肥工业大学电气与自动化工程学院DSP实验室
2016-12-
串行通信概述
串行通信的传送方式
1.单工方式:通信双方一方只能发 送,另一方只能接收,传送方向 是单一的。 2.半双工方式:通信双方只有一根 传输线(共地)(一个信道),但 同一时刻只能其中一方发送,另 一方接收。 3.全双工方式:需要通信双方连接 两条传输线(共地)(两个信 道),一条是将数据从甲方送往 乙方,另一条是从乙方送往甲方。 允许双向同时发送。
串行通信概述
RS-232C串行通信标准接口
RS-232C接口采用EIA电平 • 低电平为+3V~+15V • 高电平为-3V~-15V • 接口电源±12V或±15V • 25或9芯D型插座连接
引脚 1 2 3 4 5 9芯串行接口引脚含义表 功 能 引脚 接收线信号检测(载波检测DCD) 接收数据线(RXD) 发送数据线(TXD) 数据终端准备就绪(DTR) 信号地(SG) 6 7 8 9 功 能
第9章 串行通信接口SCI

上式适用于1≤BRR≤65535的情况
应用举例:
利用DSP的SCI口与PC的RS-232接口进行通讯。 上位机使用“串口调试助手”软件。 DSP使用“查询”方式,发送和接收数据。 波特率设为9600bps。
MAX232 RS-232 RX 74LS245
9.5 SCI中断
SCI的接收器和发送器有独立的中断标志。
发送中断:
TXRDY:当一个数据发送完毕时产生,通知CPU可以将 新数据写入SCITXBUF中。
接收中断:
RXRDY:当接收完一个数据并存入SCIRXBUF后产生,通 知CPU可以将接收数据读走。 BRKDT:间断检测,丢失了1个停止位后,SCIRXD引脚 保持10个周期的低电平。 RX ERROR:接收错误,是奇偶校验错误、超时、帧错 误的或。
9.6 SCI波特率计算
串行时钟由系统时钟频率CLKOUT和两个波特率选 择寄存器决定。 SCI使用16位的波特率选择寄存器来选择65536种 不同的串行时钟频率中的一种。SCI波特率选择 寄存器SCIHBAUD和SCILBAUD合成一个16位的波 特率值,用BRR表示。 SCI波特率可以使用如下的公式计算。
9.1.2 SCI模块的结构
9.1.2 SCI模块的结构
发送数据缓冲寄存器 SCITXห้องสมุดไป่ตู้UF 8
发送移位寄存器
TXSHF 接收数据缓冲寄存器 SCIRXBUF 8 接收移位寄存器 RXSHF
SCITXD
SCIRXD
SCI内部结构简图
9.1.3 SCI模块的寄存器地址
地址 7050h 7051h 7052h 7053h 7054h 7055h 7056h 7057h 7059h 705Fh 寄存器 SCICCR SCICTL1 SCIHBAUD SCILBAUD SCICTL2 SCIRXST SCIRXEMU SCIRXBUF SCITXBUF SCIPRI 名称 SCI通信控制寄存器 SCI控制寄存器1 波特率选择寄存器高8位 波特率选择寄存器低8位 SCI控制寄存器2 SCI接收器状态寄存器 SCI仿真数据缓冲寄存器 SCI接收器数据缓冲寄存器 SCI发送数据缓冲寄存器 SCI优先级控制寄存器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8255A
打印机插座
CPU
PA0~7
PC7 PC2
地
DATA0~7
STB BUSY 地
8255A并行打印机接口电路框图
3
串行通信概述
串行通信:通信线上既传输数据信息,也传输联络信息,因 此收发双方就必须要有通信协议。特点是串行传输成本低, 适用于远距离通信,但传输速度低。 串行通信分类:1)同步通信;2)异步通信。
同步通信:发送器和接收器通常使用同一时钟源来同步。方法是在发送器 发送数据时同时包含了时钟信号,接收器利用该时钟信号进行接收。 异步通信:收发双方的时钟不是同一个时钟,是由双方各自的时钟实现数 据的发送和接收。但要求双方使用同一标称频率,允许有一定偏差。 同步方法:要正确传输字符,准确读取每一位是必须用各自的时钟同步的, 为克服不同时钟的偏差,每个字符都有一个起始位进行同步。
发送过程:在FIFO功能使能的情况下,缓冲寄存器SCITXBUF从TX FIFO中获 取要发送的数据,然后将数据传输给发送移位寄存器TXSHF,若SCI的发送功 能使能,将接收到的数据逐位的移到SCITXD引脚上。
8
SCI的数据格式
SCI的数据格式包括: 一个开始位 1~8个数据位(通常为8位) 一个奇/偶校验位或无奇偶校验位 1~2个停止位 区分地址和数据的附加位(仅地址位模式时存在)
CPU SCIRXBUF
每个字符6个数据位
RXSHF
SCIRXD
地址位模式
12
通信过程中的发送器信号 3个数据位
地址位模式
1)TXENA=1(SCICTL1.D1),使能发送器发送数据; 2)程序写数据到SCITXBUF寄存器,此时发送器不为空,TXRDY变低; 3)SCI发送数据到移位寄存器TXSHF后,产生中断请求,同时TXRDY变高; 4)TXRDY变高后,程序写第二个字符到SCITXBUF,随后TXRDY又变低; 5)发送完第一个字符,开始将第二个字符移位到寄存器TXSHF;
10
SCI通信格式
1) 4个SCICLK周期的连续低电平表示有效的起始位; 2) 接收器收到1个起始位后开始接收数据; 3) 每个串行数据位占用8个SCICLK时钟周期; 4) 在随后的各位中进行三次采样(4、5、6)确定该位电平; 5)串口两端的接收/发送器分别使用各自的时钟(异步方式)。
11
通信过程中的接收器信号
6)TXENA=0,禁止发送数据,SCI继续完成当前字符的发送; 7)第二个字符发送完成后,发送器变空,TXEMPTY=1。
CPU
SCITXBUF
TXSHF
SCITXD
13
SCI的中断
SCI通信过程可以使用中断方式或查询方式控制接收器和发送器的工作; 发送器和接收器有独立的中断使能位(TX INT ENA、RX/BK INT、RX ERR). 当中断被屏蔽时,但标志位仍然有效,可以反映发送和接收状态; 发送器有一个SCITXBUF空标志(TXRDY=1),接收器有3个中断标志:
讲课内容
“串行通信接口(SCI)”
1 通信接口概述 2 SCI串行通信接口 3 标准串行通信总线 4 SCI编程举例 5 RS485实际应用举例
2
1 通信接口概述
通信方式:1)串行通信;2)并行通信。
并行通信:一般包括8条数据线,几条控制线和状态线。特点 是传输速度快,但通信距离短、传输线多。 例如XINTF、并行打印机接口等。
1)置RXENA=1(SCICTL1.D0),使能接收器接收数据; 2)数据到达SCIRXD引脚后,检测起始位(SCI自动实现); 3)数据从RXSHF寄存器移位到接收缓冲寄存器(SCIRXBUF),
产生一个中断请求,同时接收器数据准备好标志RXRDY=1; 4)用户程序读取SCIRXBUF寄存器,标志位RXRDY自动清零; 5)数据的下一个字符到达SCIRXD引脚,检测到起始位; 6)RXENA=0,禁止接收数据。继续向RXSHF装载数据,但不送入SCIRXBUF。
典型的异步串行通信接口:RS-232、RS-422/485、USB等
4
2 SCI模块
主要特点:
串行通信接口(SCI-Serial Communication Interface) F2812包含两个SCI接口,记做SCIA和SCIB SCI是一种异步串行通信接口,即通常所说的UART接口 SCI支持16级接收和发送FIFO,有助于减少CPU的开销 如果不使用FIFO时,SCI接收器和发送器采用两级缓冲方式 SCI可工作于半双工或全双工模式(RS485/422) 两种多处理器通信模式:空闲线与地址位多处理器模式 为保证数据的完整性,SCI模块对接收到的数据可以进行间 断、奇偶、超限和帧错误检测。
与RS232 格式兼容
9
SCI数据格式的配置
SCIA的通信控制寄存器
STOP BITS:指定发送时停止位个数,0-1个停止位,1-2个停止位; EVEN/ODD PARITY:奇偶校验选择, 0-奇校验, 1-偶校验; PARITY ENALBE:校验使能, 0-禁止奇偶校验,1-允许奇偶校验; LOOPBACK ENA:环路测试模式使能,1-TX数据内部送Rx,0-禁止 ADDR/IDLE MODE:多处理器模式选择,0-空闲线模式,1-地址位模式 SCICHAR2~0:数据长度选择,1~8位数据(000-111)。
1)接收器数据准备好(ቤተ መጻሕፍቲ ባይዱXRDY=1); 2)接收器错误标志位(RX ERROR=1); 3)如果SCIRXD引脚连续保持至少10个低电平,则产生一个间断条件 ( BRKDT =1)。
5
SCI与CPU间的接口
CPU
两个外 部引脚
SCI模块
3.3V TTL 电平
13个控制 寄存器
只能以 16位方 式访问
6
SCI
模
块
框
LSPCLK
图
TXSHF SCITXBUF
RXSHF SCIRXBUF
SCITXD
To CPU
SCIRXD
To CPU
7
SCI模块原理图
接收过程:来自于SCIRXD引脚的数据逐位移至寄存器RXSHF,若SCI的接收功能 使能,将这些数据传输给接收缓冲寄存器SCIRXBUF,如果FIFO功能使能,将数据 加载到RX FIFO中,CPU从FIFO读取数据。