?? init_dc_all.c
字號:
/***********************************************************************************
* FILE:init_all.c *
* TMS320LF2407A TEST BED CODE *
* ZHEJIANG TIANHUANG TECHNOLOGY INDUSTRIAL CO.,Ltd *
* 07/28/2006 Vesion 1.0 *
* Jzming *
***********************************************************************************/
#include "TYPEDEFS.H"
#include "F2407_c.H"
#include "CONSTANT.H"
#include "self_define.h"
#include <stdio.h>
#include <math.h>
void sytem_init();
void adc_init();
void io_init();
void spi_init();
void ev_init();
void sci_init();
void cap_init();
extern int temp;
/* ------------------------------------------------------------ */
/* 系統初始化 */
/* ------------------------------------------------------------ */
void sytem_init()
{
temp=0x7C0;
asm(" setc INTM");
asm(" setc SXM");
asm(" clrc OVM");
asm(" clrc CNF");
asm(" out _temp,0ffffh");
*IMR = 0x0012; //INT2
*IFR = 0xFFFF;
*SCSR1 = 0x00FC; //system clk=40M
// *SCSR2 = (*SCSR2)|0x40;
*WDCR = 0x6F;
// KICK_DOG; //Disable the watchdog
// *WSGR = 0x0000; //禁止所有等待狀態
}
/* ----------------------------------------------------------- */
/* A/D采樣初始化 */
/* ----------------------------------------------------------- */
void adc_init()
{
*ADCTRL1 = 0x4000; //Reset The Adc
*ADCTRL1 = 0x3020; //Free Run, Run/Stop mode, Low Pri
*MAX_CONV = 0x0004; //Setup for 5 conversions
*CHSELSEQ1 = 0x3210; //Convert Channels 0,1,2,3;0=ib,1=ia,2=signal,3=vdc
*CHSELSEQ2 = 0x7654; //Convert Channels 4,5,6,7
*ADCTRL2 = 0x4000; //復位通道指針。
}
/* --------------------------------------------------------- */
/* I/O口初始化
I/O口設置, 輸出口:IOPF4(RAM_CE)、IOPF5(RAM_OE)、IOPB4(BUCK CONTROL)
輸入口:IOPF6(RAM_BUSY)
保護動作:XINT1(ITRIP)
捕獲單元:編碼器(XINT2、QEP3、QEP4)、霍爾信號(CAP1、CAP2、CAP3)
PWM設置: 電機全橋控制-PWM1-PWM6
/* --------------------------------------------------------- */
void io_init()
{
*MCRA = 0xFFFF; //PWM1-6,SCI,CAP1-3,T1PWM
*MCRB = 0xFF9F; //spi,can, spiste--IOPC5
*MCRC = 0xFFFF; //CLKOUT,PWM7--PWM12,CAP4--6,
*PADATDIR = 0x0000;
*PBDATDIR = 0x0000;
*PCDATDIR = 0x0000; //沒有必要置1,SET IOPC5--OUT 1
*PDDATDIR = 0x0000;
*PEDATDIR = 0x0000;
*PFDATDIR = 0x0000; //F4,F5--OUTPUT. F6--INPUT
}
/* ----------------------------------------------------------- */
/* SPI 接口初始化 */
/* ----------------------------------------------------------- */
void spi_init()
{
*SPICCR = 0x000f; //設置數據長度為16位,復位SPI
*SPICTL = 0x000e; //主工作模式,正常的SPI時鐘方式,允許發送
*SPIBRR = 0x007f; //Set up the SPI to 250k speed.
*SPICCR = 0x008f; //啟動SPI時鐘.
}
/* ---------------------------------------------------------- */
/* EVA & EVB 初始化 */
/* ---------------------------------------------------------- */
void ev_init()
{
*EVAIMRA = 0x0280; //開T1周期
*EVAIMRB = 0x0000;
*EVAIMRC = 0x0007; //
*EVAIFRA = 0xFFFF; //清中斷標志
*EVAIFRB = 0xFFFF;
*EVAIFRC = 0xFFFF;
*GPTCONA = 0x0041; //低有效,同相驅動
*T1PR = 0x03E8; //T1周期50微秒
*T1CNT = 0x0000;
*ACTRA = 0x0999; //上橋低有效,下橋高有效,這里必須這樣設置
*DBTCONA = 0x0FE8; //DEADTIME=16*4*25nS=1.6uS
*COMCONA = 0x8A00;
*T1CMPR = 0x0; //0.6
*T1CON = 0x0802; //Disable timer,X
*CMPR1 = 0x01F4; //占空比為0,值250,雙極性
*CMPR2 = 0x01F4;
*CMPR3 = 0x01F4;
*T2CON = 0x1870; //連續增,CAP1--3
*T2PR = 0xFFFF;
*T2CNT = 0x0000;
// *EVBIMRA = 0x0000;
// *EVBIMRB = 0x0000;
// *EVBIMRC = 0x0000;
// *EVBIFRA = 0xFFFF;
// *EVBIFRB = 0xFFFF;
// *EVBIFRC = 0xFFFF;
// *GPTCONB = 0x0000;
*T4CON = 0x1870; //定向增減記數,qep
*T4PR = 0xFFFF;
*T4CNT = 0x0;
*CAPCONB = 0x0000; //Enable QEP
}
/* ---------------------------------------------------------- */
/* CAP 初始化
/* ---------------------------------------------------------- */
void cap_init()
{
*CAPCONA=0x30ff; //使能捕獲單元,選T2,捕獲雙沿
//清捕獲寄存器單元
*CAP1FBOT=*CAP1FBOT;
*CAP1FBOT=*CAP1FBOT;
*CAP2FBOT=*CAP2FBOT;
*CAP2FBOT=*CAP2FBOT;
*CAP3FBOT=*CAP3FBOT;
*CAP3FBOT=*CAP3FBOT;
*CAPFIFOA=0x1500; //防止出現丟脈沖的現象
*CAPCONB=0; //使能捕獲單元4,5,選T4,捕獲上升沿
}
/* ---------------------------------------------------------- */
/* SCI 串口初始化 */
/* ---------------------------------------------------------- */
void sci_init()
{
*SCICCR = 0x0007; //不使能奇偶校驗
*SCICTL1 = 0x0003; //使能接收和發送,
*SCICTL2 = 0x0002; //使能接收中斷
*SCIHBAUD = 0x0002;
*SCILBAUD = 0x0007; //9600,system clk=40M
*SCICTL1 = 0x0023;
*SCIPRI = 0x0020; //LOW
}
/* ---------------------------------------------------------- */
/* XINT 外部中斷初始化 */
/* ---------------------------------------------------------- */
void xint_init()
{
*XINT1CR = 0x0000;
*XINT2CR = 0x0000;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -