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

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

TMS320F2812外設例程系列之SPI

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

 

 
//#####################################################################
//文件:Example_281xSpi_FFDLB_int.c
//發送的數據流如下:
//0000 0001 0002 0003 0004 0005 0006 0007
//0001 0002 0003 0004 0005 0006 0007 0008
//0002 0003 0004 0005 0006 0007 0008 0009
//....
//FFFE FFFF 0000 0001 0002 0003 0004 0005
//FFFF 0000 0001 0002 0003 0004 0005 0006
//etc..
//觀測變量:
//     sdata[8]:要發送的數據
//     rdata[8]:接收的數據
//     rdata_point  
//#####################################################################
#include "DSP281x_Device.h"     //頭文件
#include "DSP281x_Examples.h"   
//功能函數原型
//interrupt void ISRTimer2(void);
interrupt void spiTxFifoIsr(void);
interrupt void spiRxFifoIsr(void);
void delay_loop(void);
void spi_fifo_init(void);
void error();
//全局變量
Uint16 sdata[8];     //發送數據緩沖器
Uint16 rdata[8];     //接收數據緩沖器
Uint16 rdata_point;   //跟蹤在數據流里檢測接收到的數據
//主程序
void main(void)
{
    Uint16 i;
  //Step 1. 初始化系統控制(PLL、看門狗、使能外設時鐘)
    InitSysCtrl();
  //Step 2. 初始化GPIO
  //InitGpio();    //本例中略過
  //在本程序中只需設置下列 GPIO 口為特殊功能口(SPI 口)
    EALLOW;
    GpioMuxRegs.GPFMUX.all=0x000F;   //配置 GPIOs 為 SPI 引腳
    //Port F MUX - x000 0000 0000 1111
    EDIS;
  //Step 3. 清除所有中斷、初始化 PIE 中斷向量表并禁止 CPU 中斷
    DINT;
    IER = 0x0000;
    IFR = 0x0000;
  //初始化 PIE 控制寄存器到默認狀態
    InitPieCtrl();
  //初始化 PIE 向量表使它們指向一些空的中斷服務子程序
    InitPieVectTable();
  //映射中斷向量
    EALLOW;
    PieVectTable.SPIRXINTA = &spiRxFifoIsr;
    PieVectTable.SPITXINTA = &spiTxFifoIsr;
  //Step 4. 初始化所有的外設
  //InitPeripherals();   //本例中省略
    spi_fifo_init();   //初始化SCI
  //Step 5. 用戶程序段,使能中斷
  //初始化發送數據緩沖器
    for(i=0; i<8; i++)
    {
      sdata[i] = i;
    }
    rdata_point = 0;
  //使能所需的中斷
    PieCtrlRegs.PIECRTL.bit.ENPIE = 1;   //使能 PIE 模塊
    PieCtrlRegs.PIEIER6.bit.INTx1=1;     //使能 PIE Group 6, INT 1
    PieCtrlRegs.PIEIER6.bit.INTx2=1;     //使能 PIE Group 6, INT 2
    IER=0x20;                             //使能 CPU INT6
    EINT;                                 //使能全局中斷
  //Step 6. 空循環
  for(;;);
}
//用戶定義程序段
void delay_loop()
{
    long      i;
    for (i = 0; i < 1000000; i++) {}
}
void error(void)
{
    asm("     ESTOP0");   //出現錯誤,測試失敗,停止!
    for (;;);
}
//SPI FIFO 初始化程序
void spi_fifo_init()
{
  //初始化 SPI FIFO 寄存器組
    SpiaRegs.SPICCR.bit.SPISWRESET=0; //復位SPI
    SpiaRegs.SPICCR.all=0x001F;       //16位數據位,自主循環模式
    SpiaRegs.SPICTL.all=0x0017;       //使能中斷,使能主從模式
    SpiaRegs.SPISTS.all=0x0000;
    SpiaRegs.SPIBRR=0x0063;           //波特率
    SpiaRegs.SPIFFTX.all=0xC028;       //使能FIFO, 設置TX FIFO level為8
    SpiaRegs.SPIFFRX.all=0x0028;       //設置RX FIFO level為8
    SpiaRegs.SPIFFCT.all=0x00;
    SpiaRegs.SPIPRI.all=0x0010;
    SpiaRegs.SPICCR.bit.SPISWRESET=1;   //使能SPI
    SpiaRegs.SPIFFTX.bit.TXFIFO=1;
    SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;
}
//SPI發送中斷服務程序
interrupt void spiTxFifoIsr(void)
{
  Uint16 i;
    for(i=0;i<8;i++)
    {
    SpiaRegs.SPITXBUF=sdata[i];       //發送數據
    }
for(i=0;i<8;i++)                         //每一次循環數據都加1 
{
    sdata[i]++;
    }
    SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1;   //清除中斷標志位
PieCtrlRegs.PIEACK.all|=0x20;  
}
//SPI 接收中斷服務程序
interrupt void spiRxFifoIsr(void)
{
    Uint16 i;
    for(i=0;i<8;i++)
    {
    rdata[i]=SpiaRegs.SPIRXBUF; //讀數據
}
for(i=0;i<8;i++)                     //檢測接收到的數據
{
    if(rdata[i] != rdata_point+i) error();
}
rdata_point++;
SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1;   //清除溢出標志位
SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1; //清除中斷標志位
PieCtrlRegs.PIEACK.all|=0x20;      
}
 
關閉窗口
主站蜘蛛池模板: 日本不卡一区二区三区在线观看 | 午夜视频免费在线观看 | 亚洲成人福利 | 国产激情免费视频 | 国产精品久久国产精品 | 亚洲男人的天堂网站 | 中文字幕乱码一区二区三区 | 日韩一区二区三区精品 | 亚洲免费网站 | 国产视频观看 | 国产精品国产成人国产三级 | 成人午夜影院 | 福利视频网址 | 精品国产乱码久久久久久牛牛 | 午夜看片 | 91av国产在线视频 | 国产一区二区三区四区五区加勒比 | 中文字幕一区在线观看视频 | 久久精品成人 | 国产综合久久 | 日韩一区二区在线视频 | 欧美一区二区三区四区五区无卡码 | 激情欧美一区二区三区中文字幕 | 在线一级片 | 中文字幕在线播放第一页 | 欧美精品一区三区 | 国产欧美日韩综合精品一区二区 | 欧美日韩在线综合 | 91精品国产91综合久久蜜臀 | 欧美日韩亚洲一区 | 欧美日韩国产一区 | 91精品国产一区二区三区香蕉 | 久久久久午夜 | 人人看人人爽 | 91av免费看| 日本不卡一区二区三区在线观看 | 欧美中文字幕一区二区三区亚洲 | 欧美日韩亚洲二区 | 99福利在线观看 | 久久久久国产一区二区三区 | 国产成人精品午夜 |