【DSP】TMS320F28035 SCI例程(自发自收+查询)

#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File

void scia_loopback_init(void);
void scia_fifo_init(void);
void error();

Uint16 LoopCount;
Uint16 ErrorCount;
Uint16 SendChar;
Uint16 ReceivedChar;

void main(void)
{
    InitSysCtrl();

    InitSciGpio();//初始化SCI引脚

    DINT;
    IER = 0x0000;
    IFR = 0x0000;
    InitPieVectTable();

    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//使能PIE
    PieCtrlRegs.PIEACK.all = 0xFFFF;//写1清零,允许所有PIE都能被响应
    EINT;//开启总中断

    LoopCount = 0;
    ErrorCount = 0;

    scia_fifo_init();      // Initialize the SCI FIFO
    scia_loopback_init();  // Initalize SCI for digital loop back

    SendChar = 0;

    for(;;)
    {
       DELAY_US(1000000);

       //将要发送的数据存入SCITXBUF
       SciaRegs.SCITXBUF = SendChar;

       //等待发送完成
       while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { } // wait for RRDY/RXFFST =1 for 1 data available in FIFO

       //存储接收数据
       ReceivedChar = SciaRegs.SCIRXBUF.all;

       //自检
       if(ReceivedChar != SendChar) error();

       //发送的数据
       SendChar++;
       // Limit the character to 8-bits
       SendChar &= 0x00FF;

       LoopCount++;
    }

}


// Step 7. Insert all local Interrupt Service Routines (ISRs) and functions here:

void error()
{
      ErrorCount++;
}

// Test 1,SCIA  DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity
void scia_loopback_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.all =0x0003;
    SciaRegs.SCICTL2.bit.TXINTENA =1;
    SciaRegs.SCICTL2.bit.RXBKINTENA =1;
    SciaRegs.SCIHBAUD    =0x0000;
    SciaRegs.SCILBAUD    =0x000F;
    SciaRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back
    SciaRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset
}
// Initalize the SCI FIFO
void scia_fifo_init()
{
    SciaRegs.SCIFFTX.all=0xE040;
    SciaRegs.SCIFFRX.all=0x2044;
    SciaRegs.SCIFFCT.all=0x0;
}
  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值