一、串行通信与并行通信DSP控制器间,DSP控制器与外部设备间交换信息,通信,可采取的通信方式主要两大类1、串行通信 2、并行通信。
并行通信一般包括多条数据线、多条控制线和状态线,传输速度快,传输线路多,硬件开销大,不适合远距离传输。一般用在系统内部,如XINTF接口或者控制器内部如DMA控制器。
串行通信则在通信线路上既传输数据信息也传输联络控制信息,硬件开销小,传输成本低,但是传输速度慢,且收发双方需要通信协议,可用于远距离通信。串行通信可以分为两大类1、同步通信 2、异步通信
同步通信:发送器和接收器通常使用同一时钟源来同步。方法是在发送器发送数据时同时包含时钟信号,接收器利用该时钟信号进行接收。典型的如I²C、SPI。
异步通信:收发双方的时钟不是同一个时钟,是由双方各自的时钟实现数据的发送和接收。但要求双方使用同一标称频率,允许有一定偏差。典型的如SCI。
二、28335SCI介绍F28335处理器共提供3个SCI接口,相对TI的C240X系列DSP的SCI接口,功能上有很大的改进,在原有功能基础上增加了通信速率自动检测和FIFO缓冲等新的功能,为了减小串口通信时CPU的开销,F28335的串口支持16级接收和发送FIFO。也可以不使用FIFO缓冲。SCI接收器和发送器有各自独立的中断和使能位,可以独立地操作实现半双工通信,或者同时操作实现全双工通信。为了保证数据完整,SCI模块对接收到的数据进行间断、极性、超限和帧错误的检测。为了减少软件的负担,SCI采用硬件对通信数据进行极性和数据格式检查。通过对16位的波特率控制寄存器进行编程,可以配置不同的SCI通信速率。
所谓的FIFO就是先进先出的意思。SCI工作在FIFO模式下一般是因为所传输的信息并不是以一个帧为单位,而是以多个帧组成的一个包为信息单位的。比如说我的一个数据包由5个帧组成,第一个为控制字节,后四个字节共同组成一个浮点数。这时你可以设置FIFO接收中断为5个字节时产生中断。设置以后,每接收到5个字节后才会产生一次中断,而不是每接收一次产生一次中断。这样可以大幅减小CPU的开销。而先进先出的意思就是:在中断中,你读FIFO接收寄存器读到的数据是首先接收到的数据,再读一次的话读到的是接收到的第二个数据。而16深度的话就是最多能保存最近的16个接收数据,如果接收数据超过16个的话会产生相应的溢出,可以软件编程对溢出进行处理。
对于发送FIFO也是一样,你可以一次将多个数据放到发送FIFO中,然后DSP按先后顺序依次发送数据。
三、SCI模块的特点如下(通过相应的寄存器可以对这些功能进行设置) (1)2个外部引脚:SCITXD为SCI数据发送引脚;SCIRXD为SCI数据接收引脚。两个引脚为多功能复用引脚,如果不使用可以作为通用数字量I/O。
(2)可编程通信速率,可以设置64K种通信速率。
(3)数据格式:
◇ 1个启动位;
◇ 1~8位可编程数据字长度;
◇可选择奇校验、偶校验或无效校验位模式;
◇ 1或2位的停止位。
(4)4种错误检测标志位:奇偶错误、超越错误、帧错误和间断检测。
(5)2种唤醒多处理器方式:空闲线唤醒(Idle-line)和地址位唤醒(AddressBit)。
(6)全双工或者半双工通信模式。
(7)双缓冲接收和发送功能。
(8)发送和接收可以采用中断和状态查询2种方式。
(9)独立地发送和接收中断使能控制。
(10)NRZ(非归零)通信格式。
(11)13个SCI模块控制寄存器,起始地址为7050H。
(12)自动通信速率检测(相对F140x增强的功能)。
(13)16级发送/接收FIFO(相对F240x增强的功能)。
四、SCI主要功能单元 (1) 1个发送器(TX)及相关寄存器。
◇ SCITXBUF:发送数据缓冲寄存器,存放要发送的数据(由CPU装载);
[cpp] view plain copy
- <span style="font-size: 18px;"> ScicRegs.SCITXBUF=a;//向数据缓冲寄存器中写入数据即可发送该数据</span>
◇ TXSHF寄存器:发送移位寄存器,从SCITXBUF寄存器接收数据,并将数据移位到SCITXD引脚上,每次移1位数据。
(2)1个接收器(RX)及相关寄存器。
◇ RXSHF寄存器:接收移位寄存器,从SCIRXD引脚移入数据,每次移1位;
◇ SCIRXBUF:接收数据缓冲寄存器,存放CPU要读取的数据,来自远程处理器的数据装入寄存器RXSHF,然后又装入接收数据缓冲寄存器SCIRXBUF和接收仿真缓冲寄存器SCIRXEMU中。
(3)一个可编程的波特率产生器。
(4)数据存储器映射的控制和状态寄存器。
五、SCI寄存器
SCICCR寄存器各位的功能如图所示,可以配置SCI的发送或接收的数据长度、是否使用奇偶校验、结束位的个数等。同理可知每个寄存器的各位有不同功能,写程序的时候查找相应的寄存器即可。(其实许多东西TI已经帮我们写好了,例如有FIFO的测试函数,我们可以在别人写好的基础上进行修改,加快进度)
六、SCI发送与接收功能介绍
可编程的中断级:发送和接收FIFO都能产生CPU中断,只要发送FIFO状态位TXFFST(位12~8)与中断触发优先级TXFFIL(位4~0)相匹配,就产生一个中断触发,从而为SCI的发送和接收提供一个可编程的中断触发逻辑。
标准SCI的一个字的发送缓冲器作为发送FIFO和移位寄存器间的发送缓冲器。只有移位寄存器的最后一位被移出后,一个字的发送缓冲才从发送FIFO装载。使能FIFO后,经过一个可选择的延迟(SCIFFCT),TXSHF被直接装载而不再使用TXBUF。(与标准SCI相比,中断源变了,发送时标准的SCI是TXBUF为空)
SCI发送数据过程划线处置位与清除都是硬件自动完成的。 |