3287|3

6802

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

TMS320F28335——SCI串口 [复制链接]

一、IO配置

 

  以SCIA为例:使用的是GPIO35--SCITXDA    GPIOA36--SCIRXDA

  使用寄存器:

  GPBPUD :设置上拉  GPIO32-GPIO63   对应位0 使能上拉

  GPBQSEL1:

  GPBMUX1:IO模式选择

  代码如下:

    GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0;    // Enable pull-up for GPIO28 (SCIRXDA)//使能内部上拉
    GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0;       // Enable pull-up for GPIO29 (SCITXDA)//使能内部上拉
    GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;  // Asynch input GPIO28 (SCIRXDA) //设置为异步输入模式

    GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1;   // Configure GPIO28 for SCIRXDA operation  //配置为外设模式
    GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1;   // Configure GPIO29 for SCITXDA operation//配置为外设模式
 设置FIFO寄存器:

  

复制代码
void scia_fifo_init()
{
    SciaRegs.SCIFFTX.all=0xE040;//使能FIFO;清除发送中断标志位;禁止FIFO发送中断;
                                //发送中断级别定义为0;
    SciaRegs.SCIFFRX.all=0x204f;//清除FIFO溢出标志位;清除溢出接受中断标志位;禁止
                                //FF接受中断;接受中断级别为16;
    SciaRegs.SCIFFCT.all=0x0;//SCITXBUF到移位寄存器传送不延迟

}
复制代码
设置SCI相关寄存器:  寄存器描述见http://www.ti.com/lit/ug/sprufz5a/sprufz5a.pdf

复制代码
void scia_echoback_init()
{
    // Note: Clocks were turned on to the SCIA peripheral
    // in the InitSysCtrl() function

     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.all =0x0003;
    SciaRegs.SCICTL2.bit.TXINTENA =1;//开启接收中断
    SciaRegs.SCICTL2.bit.RXBKINTENA =1;//开启发送中断
    #if (CPU_FRQ_150MHZ)
          SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.
          SciaRegs.SCILBAUD    =0x00E7;
    #endif
    #if (CPU_FRQ_100MHZ)
      SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 20MHz.
      SciaRegs.SCILBAUD    =0x0044;
    #endif
    SciaRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset
}
复制代码
波特率计算方式:

发生一个字节:

  

void scia_xmit(int a)
{
    while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;

}
 使用SICA  发送,串口中断接收:

  配置参数如下:

  

复制代码
static void Init_SCI_A(Uint32 Baud)
{
    //Init  IO
    Uint16 BRR=0;
    EALLOW;
     GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0;    // Enable pull-up for GPIO28 (SCIRXDA)
     GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0;       // Enable pull-up for GPIO29 (SCITXDA)
     GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;  // Asynch input GPIO28 (SCIRXDA)
     GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1;   // Configure GPIO28 for SCIRXDA operation
     GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1;   // Configure GPIO29 for SCITXDA operation
    EDIS;

    //set RX  interrput function
    EALLOW;
    PieVectTable.SCIRXINTA = &SciaRxIsr;
    EDIS;

   //set SCIA register
   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 =0;//close TX interrput
   SciaRegs.SCICTL2.bit.RXBKINTENA =1;
    //set Baud BRR= LSPCLK/(Baud*8)-1
   BRR = SCI_LSPCLK/(Baud*8)-1;
   SciaRegs.SCIHBAUD    = (BRR>>8);  // 9600 baud @LSPCLK = 37.5MHz.
   SciaRegs.SCILBAUD    = (BRR&0x00ff);
//   SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.
//   SciaRegs.SCILBAUD    =0x00E7;
   SciaRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset

   EALLOW;
   //set SCI interrput Group
    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;   // Enable the PIE block
    PieCtrlRegs.PIEIER9.bit.INTx1=1;     // PIE Group 9, int1  enable SCIA_RX
    //PieCtrlRegs.PIEIER9.bit.INTx2=1;     // PIE Group 9, INT2  enable SCIA_TX
   EDIS;
}
复制代码
  发送数据代码:

  

复制代码
//send one byte data
static void scia_xmit(int a)
{
    while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;
}

//send string
void scia_msg(char * msg)
{
    int i;
    i = 0;
    while(msg != '\0')
    {
        scia_xmit(msg);
        i++;
    }
}

image.png (45.65 KB, 下载次数: 0)

image.png

最新回复

SCI也是串口么 和UART一样么   详情 回复 发表于 2020-1-6 13:41
点赞 关注
 

回复
举报

2618

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

不错的分享,谢谢

 
 

回复

7219

帖子

192

TA的资源

五彩晶圆(高级)

板凳
 

SCI也是串口么 和UART一样么

点评

SCI(Serial Communication Interface)意为“串行通信接口”,是相对于并行通信的,是串行通信技术的一种总称,最早由Motolora公司提出的。 UART(Universal Asynchronous Receiver & Transmitter)即通  详情 回复 发表于 2020-1-6 16:21
 
 
 

回复

6802

帖子

0

TA的资源

五彩晶圆(高级)

4
 
常见泽1 发表于 2020-1-6 13:41 SCI也是串口么 和UART一样么

SCI(Serial Communication Interface)意为“串行通信接口”,是相对于并行通信的,是串行通信技术的一种总称,最早由Motolora公司提出的。
UART(Universal Asynchronous Receiver & Transmitter)即通用异步收发器,是串行通信的一种协议,它规定串行通信的波特率、起始/停止位、数据位、校验位等格式,以及各种异步握手信号。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表