久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

TMS320F2812外設例程系列之McBsp

作者:佚名   來源:不詳   點擊數(shù):  更新時間:2014年08月16日   【字體:

 

 
//#####################################################################
//文件:  Example_281xMCBSP_FFDLB_int.c
//功能:  設置McBSP為內(nèi)部自循環(huán)模式,發(fā)送數(shù)據(jù),接收數(shù)據(jù),并比較發(fā)送與接收的數(shù)據(jù)
//發(fā)送數(shù)據(jù)如下:
//00 01 02 03 04 05 06 07
//01 02 03 04 05 06 07 08
//02 03 04 05 06 07 08 09
//....
//FE FF 00 01 02 03 04 05
//FF 00 01 02 03 04 05 06
//etc..
//觀測變量:
//                sdata
//                rdata
//                rdata_point
//#####################################################################
#include "DSP281x_Device.h"     //頭文件
#include "DSP281x_Examples.h"  
//函數(shù)聲明
interrupt void mcbspTxFifoIsr(void);
interrupt void mcbspRxFifoIsr(void);
void mcbsp_init(void);
void error(void);
//全局變量
Uint16 sdata[8];               //發(fā)送數(shù)據(jù)
Uint16 rdata[8];               //接收數(shù)據(jù)
Uint16 rdata_point; 
//主程序
void main(void)
{
    Uint16 i;
  //步驟1.初始化系統(tǒng)控制(PLL, 看門狗,使能外設時鐘)
    InitSysCtrl();
  //步驟2.初始化 GPIO
  //InitGpio();  //本例中略過
  //只需配置McBSP功能GPIO
    InitMcbspGpio();               //配置GPIO為McBSP引腳
  //步驟3.清除所有中斷并初始化PIE向量表
  //關CPU所有中斷
    DINT;
  //初始化PIE控制
    InitPieCtrl();
  //禁止CPU所有中斷并清除所有中斷標志位
    IER = 0x0000;
    IFR = 0x0000;
  //初始化 PIE 中斷向量表
    InitPieVectTable();
    EALLOW;
    PieVectTable.MRINTA= &mcbspRxFifoIsr;
    PieVectTable.MXINTA=&mcbspTxFifoIsr;
    EDIS;  
  //步驟4.初始化所有外設
  //InitPeripherals();     //本例中不需要
    mcbsp_init();           //只需初始化McBSP
  //步驟5. 用戶代碼段, 使能中斷
  //初始化發(fā)送數(shù)據(jù)緩沖器
    for(i=0; i<8; i++)
    {
        sdata[i]=i;
    }
    rdata_point = 0;
  //使能本例所需中斷
    PieCtrlRegs.PIECRTL.bit.ENPIE = 1;   //使能 PIE 模塊
    PieCtrlRegs.PIEIER6.bit.INTx5=1;       //使能 PIE Group 6, INT 5
    PieCtrlRegs.PIEIER6.bit.INTx6=1;       //使能 PIE Group 6, INT 6
    IER=0x20;                             //使能 CPU INT6
    EINT;                                 //使能全局中斷 
  //步驟6. 空循環(huán)
    for(;;);
}
void error(void)
{
    asm("     ESTOP0"); // 測試失敗! 停止!
    for (;;);
}
//McBSP 初始化函數(shù)
void mcbsp_init()
{
  //復位 McBSP
    McbspaRegs.SPCR2.bit.FRST=0;     //幀同步信號產(chǎn)生器復位   
  McbspaRegs.SPCR2.bit.GRST=0;     //復位采樣率發(fā)生器
    McbspaRegs.SPCR2.bit.XRST=0;     //發(fā)送器復位
    McbspaRegs.SPCR1.bit.RRST=0;     //接收器復位
  //初始化 McBSP 寄存器組 
  //McBSP register 配置為數(shù)字自循環(huán)模式
    McbspaRegs.SPCR2.all=0x0000;       //發(fā)送器禁止
    McbspaRegs.SPCR1.all=0x8000;       //接收器禁止
    McbspaRegs.RCR2.all=0x0001;       
  //接收幀位單相位幀,每幀一個串行字,每個串行字位8位,無壓縮擴展模式,1位數(shù)據(jù)延時
    McbspaRegs.RCR1.all=0x0;     //接收幀長度為每幀一個串行字,每個串行字位8位
    McbspaRegs.XCR2.all=0x0001;     
  //發(fā)送幀位單相位幀,每幀一個串行字,每個串行字位8位,無壓縮擴展模式,1位數(shù)據(jù)延時
    McbspaRegs.XCR1.all=0x0;     //發(fā)送幀長度為每幀一個串行字,每個串行字位8位
    McbspaRegs.SRGR2.all=0x3140;      
    McbspaRegs.SRGR1.all=0x010f;     //配置采樣率生成器
    McbspaRegs.MCR2.all=0x0;
    McbspaRegs.MCR1.all=0x0;
    McbspaRegs.PCR.all=0x00a00;
    McbspaRegs.MFFTX.all=0x4028;
    McbspaRegs.MFFRX.all=0x0028;
    McbspaRegs.MFFCT.all=0x0000;
    McbspaRegs.MFFINT.all=0x0000;
    McbspaRegs.MFFST.all=0x000;
  //使能 FIFO
    McbspaRegs.MFFTX.bit.TXFIFO_RESET=1;
    McbspaRegs.MFFRX.bit.RXFIFO_RESET=1;
  //使能采樣率生成器
    McbspaRegs.SPCR2.bit.GRST=1;
    delay_loop();
  //使能接收/發(fā)送單元
    McbspaRegs.SPCR2.bit.XRST=1;
    McbspaRegs.SPCR1.bit.RRST=1;
  //幀同步信號產(chǎn)生器復位
    McbspaRegs.SPCR2.bit.FRST=1;
}
//McBSP發(fā)送中斷服務程序
interrupt void mcbspTxFifoIsr(void)
{
  Uint16 i;
    for(i=0; i<8; i++)
    {
        McbspaRegs.DXR1.all=sdata[i];
    }
  //下一個要發(fā)送的數(shù)據(jù)
    for(i=0; i<8; i++)
    {
        sdata[i] = sdata[i]+1;
        sdata[i] = sdata[i] & 0x00FF;
    }
    McbspaRegs.MFFTX.bit.TXFFINT_CLEAR=1;
    PieCtrlRegs.PIEACK.all|=0x20;             //發(fā)送PIE應答信號
}
//McBSP 接收中斷服務程序
interrupt void mcbspRxFifoIsr(void)
{
  Uint16 i;
    for(i=0; i<8; i++)
    {
        rdata[i]=McbspaRegs.DRR1.all;
    }
    for(i=0; i<8; i++)
    {
      if (rdata[i] != ( (rdata_point+i) & 0x00FF) ) error();
    }
    rdata_point = (rdata_point+1) & 0x00FF;
    McbspaRegs.MFFRX.bit.RXFFOVF_CLEAR=1;     //清除溢出標志位
    McbspaRegs.MFFRX.bit.RXFFINT_CLEAR=1;     //清除中斷標志位
    PieCtrlRegs.PIEACK.all|=0x20;             //發(fā)送PIE應答信號
}
 
關閉窗口
主站蜘蛛池模板: 华丽的挑战在线观看 | 国产在线精品一区二区三区 | 国产成人精品久久二区二区91 | 伊人精品在线视频 | 精品欧美乱码久久久久久 | 日韩免费视频 | 国产精品1区 | 精品国产欧美 | 玖玖在线免费视频 | 国产亚洲精品精品国产亚洲综合 | 国产视频久久久 | 久久免费精品视频 | 天天拍天天操 | av在线一区二区三区 | 亚洲综合一区二区三区 | 日韩视频在线一区 | 热re99久久精品国99热观看 | 在线免费观看视频黄 | 在线看av网址 | 久久大陆 | 欧美精品video| 日韩精品一区二区三区第95 | 国产精品久久性 | 亚洲天堂二区 | 国产综合在线视频 | 久久久久久久一区 | 色爽女 | 成人av免费看 | 91精品久久久 | 亚洲欧美日韩中文字幕一区二区三区 | 国产做a爱片久久毛片 | 色天天综合| 成人一区二区电影 | 免费特级黄毛片 | 久久91精品国产 | 一区二区伦理电影 | 日韩精品成人免费观看视频 | 成人免费视频网站在线看 | 欧美日韩精品影院 | 九九热re | 99久久婷婷国产综合精品首页 |