(5) DSP28335--SCI

DSP 专栏收录该内容
28 篇文章 5 订阅

(5) DSP28335--SCI

 (2016-07-01 22:39:13)

 分类: DSP学习

对于28335---SCI编程例程

1  SCI模块初始化(主频100M)

在main函数的初始化外设中设置SCI模块,这里使用SCIA仅用于接收;

SCIC采用中断接收,定时发送;

 

//----------------------------------------------------------

使能SCI外设时钟

{

   SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1;   // SCI-A

   SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1;   // SCI-A

}

//-----------------------------------------------------------

 //设置SCI模块

void InitSCI()

{

SCIC

   ScicRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback 

                                  // No parity,8 char bits,

                                  // async mode, idle-line protocol

 

   ScicRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,

                                  // Disable RX ERR, SLEEP, TXWAKE

 

   ScicRegs.SCICTL2.bit.TXINTENA =1;//enable TXRDY isr

   ScicRegs.SCICTL2.bit.RXBKINTENA =1;//enable RXBKINTENA isr

  

   ScicRegs.SCIHBAUD = 0x0000;

   ScicRegs.SCILBAUD = 0x001a;       //25MHZ  115200bps

  

   ScicRegs.SCIFFTX.all=0xE000;

   ScicRegs.SCIFFRX.all=0x2028;//收取8个字符后进中断

   ScicRegs.SCIFFCT.all=0x00;

 

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

}

//----------------------------------------------------

{// GPIO28-29设置成SCIA

   GpioCtrlRegs.GPAPUD.bit.GPIO28=0;         //使能GPIO28内部上拉电阻

   GpioCtrlRegs.GPAPUD.bit.GPIO29=0;         //使能GPIO29内部上拉电阻

 

   GpioCtrlRegs.GPAQSEL2.bit.GPIO28=3;       //异步输入

 

   GpioCtrlRegs.GPAMUX2.bit.GPIO28=1;       //GPIO28=SCIRXDA

   GpioCtrlRegs.GPAMUX2.bit.GPIO29=1;       //GPIO29=SCITXDA

 

   //GPIO62设置成SCICRX

   GpioCtrlRegs.GPBPUD.bit.GPIO62=0;         //使能GPIO62内部上拉电阻

 

   GpioCtrlRegs.GPBQSEL2.bit.GPIO62=3;       //异步输入

 

   GpioCtrlRegs.GPBMUX2.bit.GPIO62=1;       //GPIO62=SCIRXDC

}

//----------------------------------------------------------------------

{

EALLOW;

PieVectTable.SCIRXINTC = &scicRxFifoIsr;

         EDIS;   // This is needed to disable write to EALLOW protected registers

IER |=M_INT8;

PieCtrlRegs.PIEIER8.bit.INTx5=1;     //PIE Group 8, INT5

 

}

//-----------------------------------------------------

 

中断函数接收数据

interrupt void scicRxFifoIsr(void)

{

   Uint16 j;

DINT;

for(j = 0; j < 8; j++)

{

  scicTempBuf[j] = ScicRegs.SCIRXBUF.all; // Read data  一帧数据包包含16个字节

}

scicRecIntFlag = 1; //接收中断标志

 

ScicRegs.SCIFFRX.bit.RXFFOVRCLR = 1;   // Clear Overflow flag

ScicRegs.SCIFFRX.bit.RXFFINTCLR = 1;   // Clear Interrupt flag

 

PieCtrlRegs.PIEACK.all |= 0x080;       // Issue PIE ack

EINT;

}

 

//----------------------------------------------

主循环中处理数据

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值