📄 tdma55.h.bak
字号:
//tdma55.h
#ifndef _TDMA55_H
#define _TDMA55_H
#ifdef _TDMA55_C
#undef EXTERNAL
#define EXTERNAL
#else
#undef EXTERNAL
#define EXTERNAL extern
#endif
//-*********************DMA 同步事件定义**********-//
#define FS_MCSI1_TX 1
#define FS_MCSI1_RX 2
#define FS_MCSI2_TX 3
#define FS_MCSI2_RX 4
#define FS_MPUIO2 5
#define FS_MPUIO4 6
#define FS_FREE 7
#define FS_McBSP1_TX 8
#define FS_McBSP1_RX 9
#define FS_McBSP3_TX 10
#define FS_McBSP3_RX 11
#define FS_UART1_TX 12
#define FS_UART1_RX 13
#define FS_UART2_TX 14
#define FS_UART2_RX 15
#define FS_FREE1 16
#define FS_FREE2 17
#define FS_UART3_TX 18
#define FS_UART3_RX 19
//-***********************************************//
/*bit5: bit0
block_ie last_ie frame_ie half_ie drop_ie tout_ie
*/
#define DMA_INT_BLOCK (1<<5)
#define DMA_INT_LAST_FRAME (1<<4)
#define DMA_INT_FRAME (1<<3)
#define DMA_INT_HALF_FRAME (1<<2)
#define DMA_INT_DAT_DROP (1<<1)
#define DMA_INT_TIME_OUT (1<<0)
#define DMA8BIT DMA_DMACSDP_DATATYPE_8BIT
#define DMA16BIT DMA_DMACSDP_DATATYPE_16BIT
#define DMA32BIT DMA_DMACSDP_DATATYPE_32BIT
#define FS_FRAME 0 //同步触发时一次读1帧
#define FS_ELEMENT 1 //同步触发时1次读1个element
#ifndef _DMA_DMACSFI_OFFSET //如果csl中没有定义如下地址宏
#define _DMA_DMACSFI_OFFSET 0x0a
#define _DMA_DMACSEI_OFFSET 0x0b
#define _DMA_DMACDFI_OFFSET 0x0e
#define _DMA_DMACDEI_OFFSET 0x0f
#define _DMA_DMACSEI_ADDR(n) (((n) * _DMA_CHAN_SZ) + _DMA_BASE_ADDR + _DMA_DMACSEI_OFFSET)
#define _DMA_DMACSFI_ADDR(n) (((n) * _DMA_CHAN_SZ) + _DMA_BASE_ADDR + _DMA_DMACSFI_OFFSET)
#define _DMA_DMACDEI_ADDR(n) (((n) * _DMA_CHAN_SZ) + _DMA_BASE_ADDR + _DMA_DMACDEI_OFFSET)
#define _DMA_DMACDFI_ADDR(n) (((n) * _DMA_CHAN_SZ) + _DMA_BASE_ADDR + _DMA_DMACDFI_OFFSET)
#endif //_DMA_DMACSFI_OFFSET
#define _DMA_GLOBAL_REG_BASE 0x0e00
//#define _DMA_DMAGCR_ADDR (_DMA_GLOBAL_REG_BASE+0)
#define _DMA_DMAGTCR_ADDR (_DMA_GLOBAL_REG_BASE+1)
#define _DMA_DMAGSCR_ADDR (_DMA_GLOBAL_REG_BASE+2)
EXTERNAL void GlobalInitDma(void);
//dma设置为不支持"空闲时idle"功能
EXTERNAL void DmaAutoInit(DMA_Handle hDma,Uint16 on_off);
//on_off=1 on;0 off
EXTERNAL void DmaRepeat(DMA_Handle hDma,Uint16 on_off);
//on_off=1 on;0 off
EXTERNAL void DmaFlushFifo(DMA_Handle hDma,Uint16 on_off);
//on_off=1 on;0 off
EXTERNAL void DmaEndProg(DMA_Handle hDma,Uint16 yes_no);
EXTERNAL Uint16 DmaRunning(DMA_Handle hDma);
EXTERNAL void DmaStart(DMA_Handle hDma);
EXTERNAL void DmaStop(DMA_Handle hDma);
EXTERNAL DMA_Handle InitDma(Uint16 dev_no,Uint16 prio,Uint16 sync_int,
Uint16 frm_len,Uint16 elem_len,Uint16 dat_type);
//dev_no表示dma设备号
//auto:表示参数是否自动reload
//prio:1表示高优先级,0表示低优先级
//sync_int:表示同步触发中断号(eventId).0表示无同步触发中断
//本函数将src、dst地址自动增加方式设置为:src、dst独自依赖于csei/csfi、cdei/cdfi
//dat_type:表示8比特、16比特、还是32比特
//缺省设置仅在1个block传完后才中断
EXTERNAL void DmaSetSrcMem(DMA_Handle hDma,void* src,Uint16 inc_mode,Uint16 burst_on_off);
EXTERNAL void DmaSetDstMem(DMA_Handle hDma,void* dst_adr,Uint16 dat_type,Uint16 burst_on_off);
EXTERNAL void DmaFastSetSrcMem(DMA_Handle hDma,void* src);
//不检查地址空间位置,直接设置
EXTERNAL void DmaFastSetDstMem(DMA_Handle hDma,void* src);
//不检查地址空间位置,直接设置
EXTERNAL void DmaFs(DMA_Handle hDma,Uint16 fs_mode);
/*fs_mode:
#define FS_FRAME 0 //同步触发时一次读1帧
#define FS_ELEMENT 1 //同步触发时1次读1个element
*/
EXTERNAL void DmaSetSrcMcBsp();
EXTERNAL void DmaSetDstMcBsp();
EXTERNAL void DmaSetSrcMcsi();
EXTERNAL void DmaSetDstMcsi();
EXTERNAL void DmaSetNtxtDmaParaMem(void);
EXTERNAL void DmaSetNtxtDmaParaTipb(void);
EXTERNAL void DmaSetInt(DMA_Handle hdma,Uint16 intmode,void (*func)(void) ,Uint16 prio);
//func:表示中断服务程序入口
//prio:优先级
//intmode表示是blk中断、frame中断,0.5frame中断等,各比特域定义如下.
/*bit5: bit0
block_ie last_ie frame_ie half_ie drop_ie tout_ie
#define DMA_INT_BLOCK (1<<5)
#define DMA_INT_LAST_FRAME (1<<4)
#define DMA_INT_FRAME (1<<3)
#define DMA_INT_HALF_FRAME (1<<2)
#define DMA_INT_DAT_DROP (1<<1)
#define DMA_INT_TIME_OUT (1<<0)
*/
EXTERNAL void DmaIsr(void); //测试用的一个中断服务程序
//-*********************************************************-//
#endif //_TDMA55_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -