SCI模块精要

上传人:缘*** 文档编号:213256058 上传时间:2021-11-21 格式:DOCX 页数:7 大小:40.81KB
返回 下载 相关 举报
SCI模块精要_第1页
第1页 / 共7页
SCI模块精要_第2页
第2页 / 共7页
SCI模块精要_第3页
第3页 / 共7页
SCI模块精要_第4页
第4页 / 共7页
SCI模块精要_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《SCI模块精要》由会员分享,可在线阅读,更多相关《SCI模块精要(7页珍藏版)》请在金锄头文库上搜索。

1、SCI模块SCI即一种通用异步通信接口 UART , SCI采用异步通信方式, 只需要发送和接收两根线,通信双方微处理器使用各自的时钟, 适用 于对另外的设备长距离的低速率通信。在DSP中,SCI就是UART通信。一位一位的按顺序传送带通信方式。F28335处理器共提供了 3个SCI接口,在原有功能基础上增加 了通信速率自动检测和 FIFO缓冲等新功能,为了减少串口通信时 CPU的开销,F28335的串口支持16级接收和发送FIFO。SCI的接 收器和发送器可以使用双级缓冲传送数据,并且SCI接收器和发送器 有各自独立的中断和使能位。为了保证数据的完整,SCI模块对接收到的数据进行间断,极性,

2、超限和帧错误的检测。SCI采用硬件对通信数据进行极性和数据格式检查,通过对16位的波特率控制寄存器进行编程,可以配置不同的 SCI通信速率。SCI的数据格式:StartLSB234567MSBADD DAIAParityStop1Stop2ADD DAIA:仅在地址模式下使用。作为区分数据和地址的附加位。可以使用SCI通信控制寄存器(SCICCR)配置SCI通信采用的 数据格式。因为接收器使用帧同步,外部发送和接收器不需要使用串 行同步时钟,时钟由器件本身提供。SCI接收器的缓冲器有 SCIRXBUF和SCIRXEMU两个。这两个 寄存器的内容相同,读SCIRXEMU寄存器不会对RXRDY清零

3、,而 读SCIRXBUF寄存器将对 RXRDY清零。1.普通模式信号接收。标志位RXENA (SCICTL1,位0)变高,使能接收器接收数据。数据到达 SCIRXD 引脚后,检测起始位。数据从 RXSHF 寄存器移位到接收缓冲器( SCIRXBUF ) ,产生一个中断申请,标志位 RXRDY (SCIRXST,位6)变高表示已接收一个新字符。程序读 SCIRXBUF 寄存器,标志位RXRDY 自动被清除。数据的下一个字节达到 SCIRXD 引脚时检测启动位, 然后清除。位 RXENA 变低,禁止接收器接收数据。继续向 RXSHF 转载数据,但不移入到接收缓冲寄存器。2.普通模式发送信号TXEN

4、A (SCICTL1 ,位 1)置位,使能发送器工作;写 SCITXBUF 寄存器,从而发送器不再为空, TXRDY 变低;发送器将数据装载到 TXSHF 中,此时 TXRDY 为高,发送器可接收第二个字节,并触发中断;在 TXRDY 变高后,向 SCITXBUF 写入第二个字节, TXRDY将重新变低;发送器完成第一帧数据的发送, SCITXBUF 中第二个字节被装载到 TXSHF 中;TXENA 置低,禁止发送器工作;第二帧数据发送完毕。SCI FIFO 功能所谓的FIFO就是先进先出的意思。SCI工作在FIFO模式下一般 是因为所传输的信息并不是以一个帧为单位, 而是以多个帧组成的一 个

5、包为信息单位的。在中断中,你读 FIFO接收寄存器读到的数据是 首先接收到的数据,再读一次的话读到的是接收到的第二个数据。而16深度的话就是最多能保存最近的16个接收数据,如果接收数据超 过16个的话会产生相应的溢出。普通模式发送数据即以查询等待的方式在发送一个字节的过程中会占用一个周期中的1ms时间(这是波特率为9600bps时候的情 况),要等待一个字节完全的发送出去才能够进行其它模块的工作, 这样的话是非常耗用时间和 DSP的资源利用率的,而且其它模块的 时间根本得不到保证。而FIFO模式中发送数据的方式则基本不占用 系统的周期等待时间,直接往 Buf里面写数据就会自动的往外发送。使用F

6、IFO可以一次性写入多个数据,如果使用 16级,要是发送160 个数据只需要发送10次就可以发送完成。 对于FIFO堆栈深度的设 定只影响中断产生事件的频率。FIFO深度是指有多少数据存入到 FIFO中时会产生中断请求事 件,FIFO的深度设定时当然要大于所定义的数据格式的位数,数据 位数一定的情况下,深度越大所发生的中断请求频率越低。FIFO队列接收有一个缺点就是,接收的数据包格式的帧数不能 改变,如果是5个字节就必须都是5个字节。如果一会是5个字节, 一会是3个字节。那3个字节的数据包会和下一个数据包的前两个字 节产生一次中断,由于不同数据包的信息不同这样软件不易处理。空闲线方式多处理器通

7、信-块与块之间有一段比较长的空闲时间,这段时间要明显长于快内帧与帧之间的空闲时间,在某一个数据块中,第一帧代表地址信息,后面的帧为数据信息。也就是说,地址信息还是数据信息是通过帧与帧之间的空闲间隔来判断的。当帧与帧之间的空闲间隔超过10个位的时候,就表示新的数据块开始,而且其第一帧为地址信息。空闲线模式中数据格式里没有额外的地址位。TX -I&x8 tut FIFORXFFIEfJARXERRIWTENATXSHFE1 SCtFFENA RXINTRK旧 KINfATXBUFTXIWTENATXRDY flagSCI FIFO中断标志和使能逻辑位 TXINT程序:1.初始化程序: void I

8、nitSci(Uint16 num,Uint16 bps)volatile struct SCI_REGS *Scireg;/ 定义结构体变量Uint16 BRR_val;Uint16 data=0;if(num=0) Scireg=&ScibRegs;/设置num 变量来确定使用哪个 SCI 模块else Scireg=&ScicRegs;Scireg-SCICCR.all =0x0007; 字节长度为 8位, 选择空闲线模式。屏蔽自测模式Scireg-SCICTL1.all =0x0003; 接收使能,发送使能/RxErrInt : SCI 接收中断使能位; 非 SLEEP; TXWAKE

9、 : 1:发送模式唤醒, 空闲线模式或地址位模式 0: 不唤醒, 在空闲线模式下,向该位写 1 然后写数据到 SCITXBUF 产生一个 11位数据长度的空闲时间。BRR_val = (37500000/bps/8)-1;/设置波特率BRR= ( LSPCLK/SCI 异步波特率/8) -1;Scireg-SCIHBAUD=(BRR_val8);Scireg-SCILBAUD=(BRR_val);Scireg-SCICTL2.all =0x0003;/使能 RXRDY/BRKDT 中断,使能 TXRDY 中断;Scireg-SCICTL2.bit.RXBKINTENA=1; /接收缓冲 /抑制

10、中断使能 Scireg-SCICTL2.bit.TXINTENA =0;/屏蔽TXRDY 中断Scireg-SCICTL1.all =0x0023;0010 0011/接收使能,发送使能,非睡眠状态,软件复位无效while(Scireg-SCIRXST.bit.RXRDY = 1)/SCI 接收就绪标志位1:新数据可读,0:没有新数据可读data = Scireg-SCIRXBUF.all;/数据接收缓冲寄存器赋值给data;2. 发送数据程序void UartSndByte(Uint16 num,Uint16 data) /单字节查询发送if(num=0) /num 用来判断哪个SCI 模块

11、使能while(ScibRegs.SCICTL2.bit.TXRDY=0);/等待发送缓冲寄存器准备就绪ScibRegs.SCITXBUF=data;while(ScibRegs.SCICTL2.bit.TXRDY=0);else if(num=1)while(ScicRegs.SCICTL2.bit.TXRDY=0);ScicRegs.SCITXBUF=data;while(ScicRegs.SCICTL2.bit.TXRDY=0);3.接收数据程序Uint16 UartRcvByte(Uint16 num)/单字节查询接收Uint16 data=0;if(num=0) /num 用来判断哪个SCI 模块使能while(ScibRegs.SCIRXST.bit.RXRDY != 1);/等待接收缓冲寄 存器准备就绪data = ScibRegs.SCIRXBUF.all;else if(num=1)while(ScicRegs.SCIRXST.bit.RXRDY != 1);data = ScicRegs.SCIRXBUF.all;return data;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号