串行通信接口SCI与SPI
- 格式:ppt
- 大小:291.50 KB
- 文档页数:38
串行通信分为同步通信和异步通信。
串行通信接口都具有发送引脚TXD和接收引脚RXD,它们是TTL平电。
如果要利用这两个引脚与外界实行异步通信,必须将TTL电平转化为RS-232电平。
SCI是一种全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的通信,几个独立的MCU也能通过SCI实现串行通信,形成网络。
从编程角度看,先设定好波特率,通信格式,是否校验,是否允许中断等。
接着发送数据时,先检查相应的标志位是否允许发送数据,如果可以,则把数据放入SCI数据寄存器即可,剩下的工作芯片自动完成:将数据从SCI数据寄存器送到发送移位寄存器,硬件驱动将发送移位寄存器里的数据按规定发送到发送引脚TXD,供对方接收。
接收时,数据逐位从接收引脚RXD进入到接收移位寄存器,当收到一个完整字节时,芯片会自动将数据送到SCI数据寄存器,并置相应的标志位,我们就可以根据标志位的情况来读取数据了。
SCIBDH:TNP[1:0]:发送窄脉冲位。
此位的设定与SCI传送的脉冲对应关系如下表:SCIBDL:SBR[12:0]:波特率设定位当IREN=0时,SCI波特率=SCI总线时钟/(16*SBR[12:0])当IREN=1时,SCI波特率=SCI总线时钟/(32*SBR[12:1])SCICR1:控制寄存器1(当AMAP=0时有效)LOOPS:循环模式选择位。
LOOPS=0时,为正常模式。
LOOPS=1时,为自发自收模式,在此模式下,RXD引脚与SCI内部断开,内部发送数据直接作为接收的输入,用于测试。
接收器的输入由RSRC位决定。
SCISWAI:当SCISWAI=0时,SCI可以在等待模式下工作。
当SCISWAI=1时,SCI 不可以在等待模式下工作。
RSRC:当LOOPS=1时,RSRC位决定接收移位寄存器接收数据的来源。
RSRC=1,RXD引脚与SCI模块断开,SCI用TXD引脚来发送及接收。
RSRC=0时,发送器的输出作为接收器的输入。
DSPF28335---SPI模块DSPF28335--串行外设接口(SPI模块)问题1:什么是串行外设接口(SPI)?答:SPI(Serial Peripheral Interface)接口是高速同步串行I/O接口。
问题2:串行通信接口(SCI)和串行外设接口(SPI)主要区别?答:(1)SPI采用同步通讯方式,除了发送和接受两根线之外,还需要一根同步时钟线;SCI采用异步通信方式,只需要发送和接收两根线,通讯双方微处理器使用各自的时钟。
(2)SPI适用于板上短距离高速通讯;SCI适用于对另外的外设长距离的低速率通讯,在默认状态下,其最高通讯速率只相当于SPI通讯速率的1/4。
(3)SPI的时钟可反映在外在的同步时钟线上;SCI的时钟时隐藏的。
问题3:TMS320F28335有几个SPI接口模块?答:有一个专门的SPI模块,另外两个McBSP也可以配置为SPI接口。
问题4:F28335SPI接口由几组寄存器控制?答:12组,位于控制寄存器帧0x7040h开始的位置。
问题5:SPI FIFO模式下如何对传输和接收16级FIFO进行操作?直接对SPITXBUF寄存器进行赋值以传输数据。
例如:SpiaRegs.SPITXBUF=sdata[i],此操作可理解为:首先使TXFIFO头指针加1,然后把值写入TXFIFO头指针指向的位置。
如果当前没有一个激活的传输过程时,对SPITXBUF的写入会激活一个传输过程。
直接读取SPIRXBUF寄存器的值以接收数据。
例如:rdata[i]=SpiaRegs.SPIRXBUF,此操作可理解为:首先从RXFIFO 头指针处读取1个字符,然后使RXFIFO头指针减1。
问题6:SPI FIFO模式下传输和接收中断何时产生?答:是在数据传输或接收结束后,再判断传输和接收FIFO队列中有多少数据(SPIFFTX.TXFFST(4-0)和SPIFFRX.RXFFST(4-0)的值)。
spi与sci的区别与联系
SPI与SCI
1. SPI串行外围设备接口(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口。
Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接
口,如68系列MCU。
SPI总线是一种三线同步总线,因其硬件功能很强,所以,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。
2. SCI串行通信接口(serial communication interface)也是由Motorola公司推出的。
它是一种通用异步通信接口UART,与MCS-51的异步通信功能基本相同。
说白一点一个是同步串行、一个是异步串行
再白一点——同步的需要多出一条时钟线、异步的只需要接收、发送两条线
SCI模块用于串行通讯,如RS422、RS485、RS232;
SPI模块用于扩展外设,如AD、DA、FRAM、DSP等。
SCI模块和SPI模块是两个外设的扩展模块!
SCI是异步通信
SPI是同步通信
sci是异步串行通信接口,spi是同步,spi分主从机,通信速率上spi高于sci。
⼏种最常⽤的串⾏数据传输总线-SPI串⾏数据总线由于占⽤较少的管脚被⼴泛应⽤在MCU和外设的连接中,在过去的⼏⼗年⾥,有三种最常⽤的多线串⾏数据传输格式SPI、I2C和UART。
这3种串⾏总线的主要区别:SPI - Serial Peripheral Interface(串⾏外设接⼝),突出了外设,也就有了主(Master - 控制器)和从(Slave - 外设)之分,在总线中也就只有⼀个“主⼈”,其它都是处于服从的位置,也就是Slave,它是⼀种有时钟信号的同步串⾏总线,从器件的寻址是靠专⽤的⽚选信号线SS来实现的;I2C - Inter-Integrated Circuits(集成电路之间的连接),没有突出主次,也就是所有挂在总线上的器件都是平等的,它也是⼀种有时钟信号的同步串⾏总线,每个器件都有⾃⼰的地址,两根信号线都需要通过电阻上拉;UART - universal asynchronous receiver/transmitter(通⽤异步收/发),顾名思义,它是异步串⾏总线,传输的信号中没有专⽤的时钟信号线。
由于很多MCU、外设芯⽚为了节省管脚,都采⽤了管脚功能复⽤的⽅式,同⼀个管脚既可以⽤于SPI,也可以⽤于I2C,根据具体的器件连接⽅式进⾏选⽤。
当器件的管脚配置为I2C的时候,要记住在I2C的两根信号线(SCL、SDA)上⼀定要有上拉电阻,SPI则不需要。
今天我们就先来说说SPI:SPI(Serial Peripheral Interface - 串⾏外设接⼝)是⼀种⽤于短距离通信(主要是嵌⼊式系统中)的同步串⾏通信接⼝规范,这种接⼝由Motorola发明,已经成了⼀种事实标准。
⼴泛⽤于各种MCU处理器中,同传感器,串⾏ADC、DAC、存储器、SD卡以及LCD等进⾏数据连接。
⼏乎所有的微处理器/微控制器都有SPI/I2C和UART接⼝,⽽且不⽌⼀个SPI和I2C也被⼴泛⽤于传感器的数字接⼝连接即便FPGA也将SPI和I2C做成了硬化的IP在芯⽚内主要的信号线:SPI总线由4根主要的信号线组成以实现数据在主设备(Master)和从设备(Slave)之间的全双⼯(收、发同时执⾏)同步(由时钟同步)通信:SCLK:串⾏时钟(由主设备输出),每个时钟周期将会移出⼀个新的数据位;MOSI:主设备输出⇒从设备输⼊,数据由主设备进⼊从设备,器件A上的MOSI线连接到器件B 上的MOSI线。
SPI与S CI--[360doc]1. SPI串行外围设备接口(se rialperip heral inte rface)总线技术是Moto rola公司推出的一种同步串行接口。
Mo torol a公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。
SPI总线是一种三线同步总线,因其硬件功能很强,所以,与S PI有关的软件就相当简单,使C PU有更多的时间处理其他事务。
2.SCI串行通信接口(seria l com munic ation inte rface)也是由M otoro la公司推出的。
它是一种通用异步通信接口UART,与MCS-51的异步通信功能基本相同。
说白一点一个是同步串行、一个是异步串行再白一点——同步的需要多出一条时钟线、异步的只需要接收、发送两条线SCI模块用于串行通讯,如RS422、RS485、RS232;S PI模块用于扩展外设,如AD、DA、FR AM、DS P等。
SCI模块和SPI模块是两个外设的扩展模块!SC I是异步通信SPI是同步通信sc i是异步串行通信接口,spi是同步,sp i分主从机,通信速率上spi高于sci------------------------------------------------------------------------------[百度知道]通常,大部分人把SCI、UART与RS232混为一谈,其实他们有本质上的差别:SC I(Ser ial C ommun icati on In terfa ce)意为“串行通信接口”,是相对于并行通信的,是串行通信技术的一种总称,最早由Motol ora公司提出的。
SPI、I2C、UART、USB串行总线协议的区别SPI、I2C、UART三种串行总线协议的区别第一个区别当然是名字:SPI(Serial Peripheral Interface:串行外设接口);I2C(INTER IC BUS)UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)第二,区别在电气信号线上:SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。
SPI总线可以实现多个SPI设备互相连接。
提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。
主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。
在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。
(注:I2C资料了解得比较少,这里的描述可能很不完备)UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;第四,看看牛人们的意见吧!wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。