TMS320F28335项目开发记录10_28335之SCI模块

28335之SCI模块

1.介绍

TMS320F28335内部有三个SCI模块,SCIA、SCIB、SCIC。

每一个SCI模块都有一个接收器和发送器,SCI的接收器和发送器各有一个16级的FIFO(First In First Out先入先出)队列,它们都还有自己独立的使能位和中断位;可以工作在半双工或全双工模式;

串行通信的三种方式:

2.SCI深入

A. GPIO的管脚对应如下:

SCIA对应GPIO28/29和GPIO35/36两组可选

  SCIB有四组管脚可以选择,分别是 O9/11,GPIO14/15,GPIO18/19,GPIO22/23;

  SCIC对应的是GPIO62/63。

在编程初始化时,需要先将对应的GPIO管脚配置为SCI模式,才能使得这些管脚具有SCI功能;

B. SCI通信中带有格式信息的数据字符叫帧,下面是典型的数据帧格式

C. 下面介绍一下SCI波特率设置寄存器SCIHBAUD和SCILBAUD,0-15是高字节与低字节连在一起,构成16位波特率设置寄存器BRR。

BRR = SCIHBAUD + SCILBAUD

如果1<= BRR <=65535,那么SCI波特率=LSPCLK / ( (BRR+1) * 8 ),由此,可以带入你需要的波特率,既可以得到BRR的值;

如果BRR = 0,那么SCI波特率=LSPCLK/ 16

D. SCI模块发送和接受数据的原理:

3.SCI串口编程

A.先初始化IO管脚 (以SCI-A为例,SCI-B、SCI-C的初始化方法一样,就是照着改对应的管脚就行)

void InitSciaGpio()    //初始化SCIA的GPIO管脚为例子
{
   EALLOW;
//根据硬件设计决定采用GPIO28/29和GPIO35/36中的哪一组。这里以35/36为例
//定义管脚为上拉
    GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0;
    GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0;    

//定义管脚为异步输入
    GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3; 

//配置管脚为SCI功能管脚
    GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1;
    GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1;   

    EDIS;
}

B.SCI初始化配置

void scia_init()
{
    SciaRegs.SCICCR.all =0x0007;   // 1 stop bit, No loopback
                                   // No parity,8 char bits,
                                   // async mode, idle-line protocol

    SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
                                   // Disable RX ERR, SLEEP, TXWAKE

    SciaRegs.SCICTL2.bit.TXINTENA =1; //发送中断使能
    SciaRegs.SCICTL2.bit.RXBKINTENA =1;//接收中断使能

    SciaRegs.SCIHBAUD    =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
    SciaRegs.SCILBAUD    =0x00E7;

    SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}

C.接着进行中断的配置

EALLOW;    // This is needed to write to EALLOW protected registers
   PieVectTable.SCIRXINTA = &sciaRxIsr;
   PieVectTable.SCITXINTA = &sciaTxIsr;
   PieVectTable.SCIRXINTB = &scibRxIsr;
   PieVectTable.SCITXINTB = &scibTxIsr;
EDIS;   // This is needed to disable write to EALLOW protected registers

D.上面是将SCIA和SCIB的中断服务程序连到PIE的中断表中,发生中断就会跑到你的ISR去了,下面是开中断:

 PieCtrlRegs.PIECTRL.bit.ENPIE = 1;   // Enable the PIE block
   PieCtrlRegs.PIEIER9.bit.INTx1=1;     // PIE Group 9, int1
   PieCtrlRegs.PIEIER9.bit.INTx2=1;     // PIE Group 9, INT2
   PieCtrlRegs.PIEIER9.bit.INTx3=1;     // PIE Group 9, INT3
   PieCtrlRegs.PIEIER9.bit.INTx4=1;     // PIE Group 9, INT4
   IER = 0x100;    // Enable CPU INT
   EINT;

这样串口基本就OK了。

下面是一个完整的SCI例程,echoback例子:

时间: 2024-10-15 09:24:19

TMS320F28335项目开发记录10_28335之SCI模块的相关文章

TMS320F28335项目开发记录1_CCS的使用介绍

CCS使用介绍 一.前言 本系列文章记录本人实际项目开发时对ti的DSP28335,以及CCS开发环境等的学习与记录,相对于2812来说,28335的资料还是比較少的,只是原理是相通的,28335说白了就是比2812多一些外设,寄存器等东西: 28335对于学习DSP的人来说,也算是一款入门级芯片.本人也是学习没多久就拿来做项目了,用到什么学什么,感觉事实上DSP没有想象中的难,无非就是和单片机一样.配置一些寄存器,驱动一些外设进行开发等,而DSP之所以难.难在它的算法部分,有了好的算法,DSP

TMS320F28335项目开发记录3_28335简介

28335特性介绍 高性能静态CMOS技术 高达150MHZ(6.67ns的周期时间):1.9V / 1.8内核 ,3.3V I/O设计 高性能32位CPU IEEE-754单精度浮点单元 哈佛总线结构 高速中断响应处理 使用C/C++ 和汇编语言 6通道的DMA(用于ADC.McBsp.ePWM.XINTF和SARAM) 16位或32位外部接口XINTF 片上存储器 256K*16 Flash     34K*16 SARAM 8K*16 Boot ROM(支持软件引导模式SCI.SPI.CA

TMS320F28335项目开发记录3_28335简单介绍

28335特性介绍 高性能静态CMOS技术 高达150MHZ(6.67ns的周期时间):1.9V / 1.8内核 ,3.3V I/O设计 高性能32位CPU IEEE-754单精度浮点单元 哈佛总线结构 快速中断响应处理 使用C/C++ 和汇编语言 6通道的DMA(用于ADC.McBsp.ePWM.XINTF和SARAM) 16位或32位外部接口XINTF 片上存储器 256K*16 Flash     34K*16 SARAM 8K*16 Boot ROM(支持软件引导模式SCI.SPI.CA

TMS320F28335项目开发记录4_28335之启动模式(串口烧写Flash)

TMS320F28335支持多种启动模式,如下: // $Boot_Table: // // GPIO87 GPIO86 GPIO85 GPIO84 // XA15 XA14 XA13 XA12 // PU PU PU PU // ========================================== // 1 1 1 1 Jump to Flash <- "boot to Flash" // 1 1 1 0 SCI-A boot // 1 1 0 1 SPI-A

TMS320F28335项目开发记录8_28335之GPIO引脚

GPIO(General-Purpose Input/Output)--通用输入/输出口: DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87) 对GPIO模块的设置主要通过三类寄存器来完成,分别是:控制寄存器.数据寄存器.中断寄存器. 1.控制寄存器 GPxCTRL;    // GPIO x Control Register (GPIO0 to 31) //设置采样窗周期T=2*GPXCTRL*Tsysclk: GPxQSE

TMS320F28335项目开发记录7_28335之时钟

TMS320F28335时钟 TMS320F28335上有一个基于PLL电路的片上时钟模块,如图1所示,为CPU及外设提供时钟有两种方式: 一种是用外部的时钟源,将其连接到X1引脚上或者XCLKIN引脚上,X2接地: 另一种是使用振荡器产生时钟,用30MHz的晶体和两个20PF的电容组成的电路分别连接到X1和X2引脚上,XCLKIN引脚接地. 我们常用第二种来产生时钟.此时钟将通过一个内部PLL锁相环电路,进行倍频.由于F28335的最大工作频率是150M,所以倍频值最大是5.其中倍频值由PLL

TMS320F28335项目开发记录6_28335之cmd文件详解

1.CMD文件的作用 CMD文件的作用就像仓库的货物摆放记录一样,为程序代码和数据分配指定的空间. 2.C语言生成的段 C语言生成的段大致分为两大类:初始化和未初始化,已初始化的段含有真正的指令和数据,未初始化段只是保留变量的地址空间. 已初始化段: .text--C语言编译生成的汇编指令代码存放于此 .cinit--存放初始化的全局和静态变量 .const--字符串常量和const定义的全局和静态变量 .econst--字符串常量和far const定义的全局和静态变量 .print--全局构

TMS320F28335项目开发记录11_28335之存储系统

TMS320F28335为哈佛结构的DSP,在逻辑上有4M×16位的程序空间和4M×16位的数据空间,但在物理上已将程序空间和数据空间统一成一个4M×16位的空间. TMS320F28335片上有256K×16位的FLASH,34K×16位的SRAM,8K×16位的BOOT ROM,2K×16位的OPT ROM. 1. TMS320F28335片上SARAM TMS320F28335片内共有34K×16位单周期单次访问随机存储器的SARAM,分成10个块,他们分别称为M0.M1.L0-L7. M

TMS320F28335项目开发记录9_28335之中断系统

28335中断系统 1.中断系统 在这里我们要十分清楚DSP的中断系统.C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI.定时器1和定时器2分别使用中断13和14.这样还有12个中断都直接连接到外设中断扩展模块PIE上.说的简单一点就是PIE通过12根线与28335核的12个中断线相连.而PIE的另外一侧有12*8根线分别连接到外设,如AD.SPI.EXINT等等. 这样PIE共管理12*8=96个外部中断.这12组大中断由28335核的中断寄存器IER来控制,即IER确