当前位置:文档之家› 飞思卡尔小车程序dma

飞思卡尔小车程序dma

#include "dma.h"
#include "isr.h"

//全局变量
extern u8 image[hang_max][lie_max];
extern u8 *image_Ptr;

void dma_init(){
SIM_SCGC6|=SIM_SCGC6_DMAMUX_MASK;//打开DMA多路复用器时钟
SIM_SCGC7|=SIM_SCGC7_DMA_MASK;//打开DMA模块时钟
DMAMUX_CHCFG0=DMAMUX_CHCFG_SOURCE(41);//DMA通道0对应41号DMA请求,即ADC1,参阅Chip Configuration
DMA_TCD0_SADDR = (uint32_t)&(ADC_R_REG(ADC1_BASE_PTR, 0));

DMA_TCD0_SOFF = 0;//每次传送源地址不变
DMA_TCD0_CITER_ELINKNO=DMA_CITER_ELINKNO_CITER(lie_max);//当前主循环次数,采集点数
DMA_TCD0_BITER_ELINKNO=DMA_BITER_ELINKNO_BITER(lie_max);//起始主循环次数,采集点数
DMA_TCD0_ATTR = DMA_ATTR_SSIZE(0) | DMA_ATTR_DSIZE(0);//源数据宽度8bit,目的数据宽度8bit
DMA_TCD0_NBYTES_MLNO = DMA_NBYTES_MLNO_NBYTES(1);//每次读取一字节
DMA_TCD0_SLAST = 0;//主循环结束后源地址0回写tcd
DMA_TCD0_DLASTSGA = 0;
DMA_TCD0_DADDR=(uint32)image;//设置目的地址,image数组第一个元素
DMA_TCD0_DOFF=1;//每次写目的地址加1
DMA_TCD0_CSR= DMA_CSR_DREQ_MASK;//DMA通道0主循环结束后停止硬件请求
//DMA_TCD0_CSR|=DMA_CSR_INTMAJOR_MASK;//使能DMA0中断
DMAMUX_CHCFG0|=DMAMUX_CHCFG_ENBL_MASK;//DMA通道0使能
}

相关主题
文本预览
相关文档 最新文档