2879|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

【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;
}

点赞 关注
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表