F28027第十课
今天我们先来学习下SCI的理论知识,明天再进行实践课学习。
SCI(serial communications interface),串行通信接口。其他今晚刚看SCI定义的时候,很自然的就跟SPI关联起来了,然后我就去查了下SPI跟SCI之间的区别:
SCI(serial communication interface)串行通信接口
SPI(serial peripheral interface)串行外设接口
1)SPI采用同步通信方式,除了发送和接受两根线外,还需要一根同步时钟线,SCI采用异步通信方式,只需要发送和接受两根线,通信双方微处理器使用各自的时钟。
2)SPI适用于板上短距离高速率通信;SCI适用于对另外的设备长距离的低速率通信,在默认状态下,其最高通信速率只相当于SPI通信速率的1/4.
3)SPI的时钟可反映到外在的同步时钟线上,SCI的时钟是隐含的。
好了,稍微发散了一下,再回来继续了解SCI的接口图:
这个接口图跟SPI差不多,也是分为三部分:数据传输、中断、系统控制和时钟。先设置好使能和时钟,写好中断服务子程序,然后开始数据的传输,当完成数据的读入读出时,产生中断。 工作原理大概就是这样。
SCI主要有哪些特征呢:
1、两个外部管脚:SCITXD(SCI transmit-output pin)、SCIRXD(SCI receive-input pin);
2、可编程的波特率,可以有64K种不同的波特率;
3、数据格式:1个开始位、1到8位可编程数据长度、1个奇偶校验位、1或者2位长的停止位;
4、两种多处理器唤醒模式:空闲线模式、地址位模式;
5、半双工或全双工操作模式;
总体的模块结构图如下:
插播下总体的寄存器说明表,因为后面的章节都涉及到寄存器了:
我们现在分别来了解下SCI的架构.
重要的组成部分:
信号先总结:
数据格式:
前面说了数据结构:1个开始位、1到8位可编程数据长度、1个奇偶校验位、1或者2位长的停止位。我们现在来看一个8位数据长度的例子:
很容易理解空闲线和地址位操作模式的数据格式。数据格式主要用到了SCICCR寄存器,具体操作位如下对应:
说完了总体架构,我们来了解下SCI多处理器通信的一些基本概念。
Address Byte:地址位,消息块里面包含地址信息,所以处理器都可以接收到该消息块,只有当接收并识别到正确地址的处理器才能够接收后面的数据字节。地址识别不正确的处理器会处于非打扰模式,直到下一个包含地址信息的消息快。
Sleep Bit:休眠位,所有处理器在串行链路上面都会设置SCI 休眠位,只有在识别到地址信息的时候才会中断休眠。但是需要注意的是,如果你的CPU识别到正确的地址信息消息块,程序必须手工清理休眠位,以保证COU能够产生对应的中断信息。
识别地址字节:对于空闲线模式,在地址字节之前,预留超过十位长度的空闲空间;对于地址位模式,对于每一个字节都包含了一个地址位信息。
处理器工作模式由ADDR/IDLE MODE bit (SCICCR, bit 3)位控制。
前面一直说空闲线模式和地址位模式,下面我们来具体了解下这两种操作方式。
首先是空闲线模式(ADDR/IDLE MODE bit=0),前面了解到,在地址字节之前,预留超过十位长度的空闲空间,换句话说,也就是在两个消息块之间,有大于等于十位长度的高电平空闲期
对于空闲线模式,发起起始信号主要有两种办法:
1、在两个不同的消息块之间,故意留大于等于十位长度的空闲期;
2、在写数据到SCITXBUF寄存器之前,将TXWAKE位置1,。
说完了空闲线模式,现在来说说地址位模式。
还是先看下基本概念
看完了概念,再看下它的数据格式
是不是很容易理解了,呵呵,相信到这里,大家都这两种模式都有了一个基本认识。
现在要来说下SCI的通信格式了
先直接看下通信基本格式图
说明一点,所有的格式位,都是八个时钟周期构成。由于是SCI异步通信,时钟都是系统内部提供。
操作都从一个起始位开始,起始位是连续读到四个连续的低电平,被认为是有效的起始位。紧接着是数据位,处理器采用的是三局两胜制,呵呵,也就是采样4、5、6三个时钟点,取其中相同两个时钟点的值为该位值。
了解了数据格式,我们再来看下接收信号的通信方法:
具体解释如下:
再看下发送信号的通信方法:
具体相关过程解释如下:
最后是波特率,直接贴图了,没什么好说的
其实最后还有一个4位深度的FIFO,这个我明天直接实践吧,也真的没什么好说的。唯一需要注意的是下面这句:
四位深度的FIFO数据可以直接读入,之间的时间间隔可设置。具体明天实践操作,今天先这样了,又是一点了,不能太晚了。
F28027菜鸟交流qq群107691092