⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imu_gw.h.bak

📁 c6713的源代码
💻 BAK
字号:
/*
 *  IMU *.h 包括了DSP6713 ADS8364 TLV2548 16L784功能
 *  All rights reserved. HT17@ht17.com
 */
#include <stdio.h>
#include <stdlib.h>
#include <csl.h>
#include <csl_cache.h>
#include <csl_pll.h>
#include <csl_timer.h>
#include <time.h>
#include <csl_emif.h>


/**************************************************************
 XR16L784说明部分
 **************************************************************/
//register
#define   XR16L_BASE_ADDR		      0XB0000000	 /*XR16L784基地址*/

#define   XR16L_CH0_REG_ADDR_OFFSET	  0x00000000
#define   XR16L_CH1_REG_ADDR_OFFSET	  0x00000010
#define   XR16L_CH2_REG_ADDR_OFFSET	  0x00000020
#define   XR16L_CH3_REG_ADDR_OFFSET	  0x00000030

#define   XR16L_CH_LENGTH			  0x00000010

#define   XR16L_CH_RHR_OFFSET			0
#define   XR16L_CH_THR_OFFSET			0
#define   XR16L_CH_DLL_OFFSET			0
#define   XR16L_CH_DLM_OFFSET		    0X1
#define   XR16L_CH_IER_OFFSET			0X1
#define   XR16L_CH_ISR_OFFSET			0X2
#define   XR16L_CH_FCR_OFFSET			0X2
#define   XR16L_CH_LCR_OFFSET			0X3
#define   XR16L_CH_MCR_OFFSET			0X4
#define   XR16L_CH_LSR_OFFSET			0X5
#define   XR16L_CH_RS485_OFFSET		    0X6
#define   XR16L_CH_SPR_OFFSET			0X7
#define   XR16L_CH_FCTR_OFFSET		    0X8
#define   XR16L_CH_EFR_OFFSET			0X9
#define   XR16L_CH_TXCNT_OFFSET		    0XA
#define   XR16L_CH_TXTRG_OFFSET		    0XA
#define   XR16L_CH_RXCNT_OFFSET		    0XB
#define   XR16L_CH_RXTRG_OFFSET		    0XB

#define   XR16L_INT0_REG_OFFSET		    0X80
#define   XR16L_INT1_REG_OFFSET		    0X81
#define   XR16L_INT2_REG_OFFSET		    0X82
#define   XR16L_TIMECTRL_REG_OFFSET	    0X84
#define   XR16L_TIMER_REG_OFFSET		0X85
#define   XR16L_TIMERLSB_REG_OFFSET	    0X86
#define   XR16L_TIMERMSB_REG_OFFSET	    0X87
#define   XR16L_X8MODE_REG_OFFSET		0X88
#define   XR16L_REG1_REG_OFFSET		    0X89
#define   XR16L_RESET_REG_OFFSET		0X8A
#define   XR16L_SLEEP_REG_OFFSET		0X8B
#define   XR16L_DREV_REG_OFFSET		    0X8C
#define   XR16L_DVID_REG_OFFSET		    0X8D
#define   XR16L_REG2_REG_OFFSET		    0X8E



/**************************************************************
 TLV2548说明部分
 **************************************************************/
/* Define McBSP0 Registers */
#define   McBSP0_DRR           0x18c0000   /* Address of data receive reg.         */
#define   McBSP0_DXR           0x18c0004   /* Address of data transmit reg.        */
#define   McBSP0_SPCR          0x18c0008   /* Address of serial port contl. reg.   */
#define   McBSP0_RCR           0x18c000C   /* Address of receive control reg.      */
#define   McBSP0_XCR           0x18c0010   /* Address of transmit control reg.     */
#define   McBSP0_SRGR          0x18c0014   /* Address of sample rate generator     */
#define   McBSP0_MCR           0x18c0018   /* Address of multichannel reg.         */
#define   McBSP0_RCER          0x18c001C   /* Address of receive channel enable.   */
#define   McBSP0_XCER          0x18c0020   /* Address of transmit channel enable.  */
#define   McBSP0_PCR           0x18c0024   /* Address of pin control reg.          */

#define   PI				   3.1415926
#define   IO_PORT			   0x90080000  /* I/O port Address,top byte valid data */
#define   INTERNAL_MEM_SIZE    (0x4000)>>2
#define   EXTERNAL_MEM_SIZE    (0x400000)>>2
#define   FLASH_SIZE		   0x20000 
#define   POST_SIZE		       0x10000 
#define   FLASH_WRITE_SIZE     0x80 
#define   INTERNAL_MEM_START   0xc000
#define   EXTERNAL_MEM_START   0x80000000
#define   FLASH_START		   0x90000000
#define   POST_END		       0x90010000 
#define   FLASH_ADR1		   0x90005555
#define   FLASH_ADR2		   0x90002AAA
#define   FLASH_KEY1		   0xAA
#define   FLASH_KEY2		   0x55
#define   FLASH_KEY3		   0xA0
#define   ALL_A			       0xaaaaaaaa
#define   ALL_5			       0x55555555
#define   CE1_8			       0xffffff03  /* reg to set CE1 as 8bit async */
#define   CE1_32			   0xffffff23  /* reg to set CE1 as 32bit async */


#define   ADC_SIZE		       200
#define	  INT_EXT6			   0x0040
// Software controlled operation of the TLV2548
#define   channel0		       0x0000
#define   channel1		       0x1000
#define   channel2		       0x2000
#define   channel3		       0x3000
#define   channel4		       0x4000
#define   channel5		       0x5000
#define   channel6		       0x6000
#define   channel7		       0x7000
#define   read_CFR   	       0x9000
#define   write_CFR   	       0xAC80  //internal reference 2V,short sampling,SCLK,single shot,INT


/**************************************************************
 ADS8364说明部分
 **************************************************************/

// Set clock speed and sample size
#define   CONVCLK_PERIOD	   5000 
#define   ADC_SAMPLE_SIZE	   200

#define   TIMER1_CTRL   0x01980000
#define   TIMER1_PRD    0x01980004
#define   TIMER1_COUNT  0x01980008

#define   ADD_Mode		1

// Software controlled operation of the ADS8364
#define   CR1 			       0x0080
#define   A0				   0x00
#define   A1				   0x01
#define   B0				   0x02
#define   B1				   0x03
#define   C0				   0x04
#define   C1				   0x05
#define   CYCLE			       0x06
#define   FIFO			       0x07
#define   Add			       0x08 
#define   Binary			   0x10
#define   Twos			       0x00
 
#define   CMD1	               (CR1 | CYCLE | Twos)  

#define   CR0 			       0x000F
#define   GBL_Reset		       0x07
#define   HoldA			       0x0B
#define   HoldB			       0x0D
#define   HoldC			       0x0E
#define   CMD0	               (CR0 & HoldA & HoldB & HoldC )

// ADC Address
#define   ADC_Base	           0xa0000020
#define   _A0		           0xa0000020		    // Channel A0	
#define   _A1		           0xa0000024		    // Channel A1	
#define   _B0		           0xa0000028			// Channel A1	
#define   _B1		           0xa000002C			// Channel B1	
#define   _C0		           0xa0000030			// Channel C0   
#define   _C1		           0xa0000034			// Channel C1	
#define   _CYCLE		       0xa0000038			// Cycle Mode	
#define   _FIFO		           0xa000003C		    // FIFO Mode	

#define   CTL_BASE	           0x3F00
#define   ADD			       0x02
#define   HOLDA 		       0x01
#define   HOLDB 		       0x08
#define   HOLDC 		       0x04
#define   RESET	 	           0x20
#define   RELEASE_HOLD         0x0D
#define   INIT_SOFT            0x2D



/**************************************************************
 DSP6713说明部分
 **************************************************************/
/*sdram*/
#define   SDRAM_ADDR		   0x80000000
#define   SDRAM_LENGTH         0x00800000 

#define   FLASH_BASE           0x90000000
#define   FLASH_CTL555         (FLASH_BASE + (0x555 << 1)) 
#define   FLASH_CTL2AA         (FLASH_BASE + (0x2aa << 1)) 
#define   FLASH_CTLAAA         (FLASH_BASE + (0xaaa << 1))

#define   PLL_BASE_ADDR        0x01b7c000
#define   PLL_PID_IMU          (PLL_BASE_ADDR + 0x000 )
#define   PLL_CSR_IMU          (PLL_BASE_ADDR + 0x100 )
#define   PLL_MULT_IMU         (PLL_BASE_ADDR + 0x110 )
#define   PLL_DIV0_IMU         (PLL_BASE_ADDR + 0x114 )
#define   PLL_DIV1_IMU         (PLL_BASE_ADDR + 0x118 )
#define   PLL_DIV2_IMU         (PLL_BASE_ADDR + 0x11C )
#define   PLL_DIV3_IMU         (PLL_BASE_ADDR + 0x120 )
#define   PLL_OSCDIV1_IMU      (PLL_BASE_ADDR + 0x124 )

#define   CSR_PLLEN            0x00000001
#define   CSR_PLLPWRDN         0x00000002
#define   CSR_PLLRST           0x00000008 
#define   CSR_PLLSTABLE        0x00000040

#define   DIV_ENABLE           0x00008000



/********************************************************/
/*功能函数											    */
/********************************************************/

/*XR16L784*/
void XR16L_SendData( Uint8 chan, Uint8* pdata, Uint32 datanum);
void Initialize_XR16LChip();
void Initialize_XR16L_Chan(Uint8 chan);
interrupt void ext4_isr();

/*TLV2548*/
void DSP_init();
void enable_interrupt(unsigned int mask);
static void PllDelay( int Count );
void pll_set();
void Delay( int Count );
void McBSP0_init();
unsigned short McBSP0_rrdy();
void McBSP0_write(unsigned short cmd);
unsigned short McBSP0_read();
void ADC_init();
void ADC_read(unsigned short channel);
interrupt void ext6_isr();
interrupt void dummy_isr();

/*ADS8364*/
void dsp_init();
void init_timer0();
void delay();
void software_init_ADC();
void software_cfig(unsigned short cmd1);
void software_cnvt(unsigned short cmd0, unsigned short reset);
void software_read();
interrupt void ext5_isr();

/*DSP6713*/
void sdram_test(void);
void pll_set(void);
void flash_test(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -