EDMA SEED 例程
模块化
/******************************************************
* program: EDMA_pingpong_Int **
* Description: how to Init EDMA pingpong transfer **
* Author: hanyj **
********************************************************/
/**************************************************
****** 定义通道和通道参数结构 *****
***************************************************/
/********** 定义通道 three EDMA channel handle*/
EDMA_Handle hEdma; /* Handle for the EDMA channel */
EDMA_Handle hEdmaPing; /* Handle for the ping EDMA reload parameters */
EDMA_Handle hEdmaPong; /* Handle for the pong EDMA reload parameters */
/* 定义并初始化三个通道参数结构 three EDMA channel Param structure */
EDMA_Config cfgEdma{}; /* EDMA configuration structure */
EDMA_Config cfgEdmaPing{} ;
EDMA_Config cfgEdmaPong{} ;
/**************************************************
****** 通道初始化 *****
***************************************************/
/***********通道初始化步骤1 打开事件对应的通道 ********************** */
/* 1.Lets open up the EDMA channel associated with timer #1. */ //打开某个事件对应的通道
hEdma = EDMA_open(EDMA_CHA_TINT1, EDMA_OPEN_RESET);
// 2.定义两个 link 通道:将hEdmaPing 和 hEdmaPong 与任意两个link 通道表关联
hEdmaPing = EDMA_allocTable(-1);
hEdmaPong = EDMA_allocTable(-1);
/*************** 通道初始化步骤2 配置通道********************************/
/* 三个通道参数的rld段初始化,实质将通道进行了link初始化 */
/* Let's initialize the link fields of the configuration structures */
cfgEdmaPing.rld = EDMA_RLD_RMK(0,hEdmaPing);
cfgEdmaPong.rld = EDMA_RLD_RMK(0,hEdmaPong);
cfgEdma.rld = EDMA_RLD_RMK(0,hEdmaPong);
/********* 配置通道 **********************/
/* Now let's program up the EDMA channel with the configuration structure */ //配置该通道
EDMA_config(hEdma, &cfgEdma);
EDMA_config(hEdmaPing, &cfgEdmaPing);
EDMA_config(hEdmaPong, &cfgEdmaPong);
/**************** 使能 **********************************/
/* Enable the EDMA channel */
EDMA_enableChannel(hEdma);
/********************** 以上三个EDMA通道都已顺利完成初始化***********************/
/***************************************************
****** 由于用到中断,接下来设置EDMA中断 *****
***************************************************/
/************** step1 interupt_int*********************/
setupInterruptsEDMA();
/*子函数代码*/
/************************************************************************/
void setupInterruptsEDMA(void)
{
IRQ_setVecs(vectors); /* point to the IRQ vector table */
IRQ_nmiEnable();
IRQ_globalEnable();
IRQ_map(IRQ_EVT_EDMAINT, 8);
IRQ_reset(IRQ_EVT_EDMAINT);
} /* End of SetInterruptsEdma() */
/**********************step2 ENABLE EDMA Interupt*********************************/
//CPU可以响应该中断
IRQ_enable(IRQ_EVT_EDMAINT);
//EDMA可以产生中断
EDMA_intDisable(TCCINTNUM); // CIER disable
EDMA_intClear(TCCINTNUM); // CIPR
EDMA_intEnable(TCCINTNUM); // CIER enable
/***************************************************
****** 开始传输,等待事件触发EDMA传输 *****
***************************************************/
/****** 此处为定时器事件***********************/
TIMER_start(hTimer);
while(transferCount <= TRANSFER_CNT); /* waiting for interrupts */
/***************************************************
****** 每次EDMA传输结束,进EDMA中断 *****
***************************************************/
interrupt void
c_int08(void)
{
/* 步骤1:清除挂起中断,以免嵌套中断*/
/*Clear the pending interrupt from the EDMA interrupt pending register */
EDMA_intClear(TCCINTNUM);
/*Exit from the program if certain no of transfres are done*/
if (transferCount >= TRANSFER_CNT)
{
TIMER_pause(hTimer);
stopEdma();
TIMER_close(hTimer);
printf ("/nDone.....");
exit(0);
}
/* 步骤2:pingponglink*/
/* Based on if we ping'ed or pong'ed, we need to set the EDMA channel */
/* link address for the NEXT frame. */
if (pingpong){
/* Now filled pong so set link to ping */
EDMA_link(hEdma,hEdmaPing);
}else{
/* Now filled ping so set link to pong */
EDMA_link(hEdma,hEdmaPong);
}
/* 步骤3:处理*/
processbuff(0);
pingpong = (pingpong + 1) & 1;
return;
} /* end c_int08 */
/***************************************************
****** 适当条件下,结束EDMA传输 *****
***************************************************/
void stopEdma(void) {
/*Disable interrupts, close EDMA channel before exit of the program*/
IRQ_disable(IRQ_EVT_EDMAINT); //after IRQ_enable;
EDMA_intDisable(TCCINTNUM); // CIER
EDMA_intClear(TCCINTNUM); //CIPR
EDMA_RSET(CCER,0x00000000); //CCER_RST
EDMA_disableChannel(hEdma); //after EDMA_enable EER
EDMA_close(hEdma); // afer EDMA_open ER
EDMA_resetAll();
EDMA_RSET(CIPR,0xFFFFFFFF);
EDMA_RSET(ECR,0xFFFFFFFF);
}
EDMA SEED 例程相关推荐
- C6000 EDMA 使用心得总结
转载自左超的CSDN博客http://blog.csdn.net/henhen2002/article/details/4464166 几天调下来,总感觉TI的文档语焉不详.不过想想也对,250页的文 ...
- 一天上手Aurora 8B/10B IP核(4)----从Streaming接口的官方例程学起
Xilinx的技术生态做的非常好,基本上所有常用的IP核都有官方例程(example design)供开发者学习,咱不用白不用,今儿咱就一起白嫖他一手----从官方例程开始学习如何具体使用这个IP核. ...
- 【OpenCV 例程 300篇】221.加密马赛克图像处理与解密复原
『youcans 的 OpenCV 例程200篇 - 总目录』 [youcans 的 OpenCV 例程 300篇]221.加密马赛克图像处理与解密复原 9. 图像的马赛克处理 马赛克效果是广泛使用的 ...
- 一天上手Aurora 8B/10B IP核(5)----从Framing接口的官方例程学起
文章目录 写在前面 1.IP核定制与官方例程的生成 1.1.第一页配置:物理层以及链路层信息选择 1.2.第二页配置:对应GT收发器的物理位置选择 1.3.第三页配置:共享逻辑的位置 1.4.官方例程 ...
- OMAPL138 + SPARTAN6 DSP+ARM+FPGA开发例程
目 录 本例程基于信迈OMAPL138+SPARTAN6评估板开发. 开发板准备 16 查看仿真器驱动是否正常安装 17 程序加载和烧写 19 基于仿真器的程序加载和烧写 19 设置工程配置文件信息 ...
- 【学习分享】0、创龙 TMS320C6748开发例程使用手册
如果需要从头开始进行本使用手册的阅读,欢迎阅读本博其他文章(见置顶或文章结尾) 由广州创龙自主研发的SOM-TL6748核心板是基于TI TMS320C6748定点/浮点DSP核心板,55mm*33m ...
- - TMS320C6748———EDMA简介及配置
一.EDMA模块介绍 TMS320C6748是一款高性能DSP,非常适合用来跑大数据量的算法,而这样的算法往往需要保证实时性,那么这么大规模的数据怎么进行运算能够让程序跑的最快,我们知道DSP中运算最 ...
- OpenCV例程赏析
OpenCV例程赏析 ①SITF特征检测匹配(目标查找)例程:-\opencv\sources\samples\python2\find_obj.py(asift.py) #!/usr/bin/env ...
- 清新脱俗的TensorFlow CIFAR10例程的代码重构——更简明更快的数据读取、loss accuracy实时输出
如果你苦于Tensorflow官方例程的冗长和数据读取的繁杂,那么这篇博客就是你需要看的啦~ Motivation 这段时间学习TensorFlow走了很多弯路,刚开始的MNIST例程还是比较容易啃的 ...
最新文章
- Python求解最速降线问题
- python安装numpy-python安装numpy和pandas的方法步骤
- 某CrackMe算法分析
- java消息幂等性实现_探讨一下实现幂等性的几种方式
- 【C++】构建哈希表
- 怎么实现阴影效果呢?
- Servlet和JSP中的文件上传示例
- 年度回顾 | 2019 年的 Apache Flink
- 如何清理电脑c盘_【电脑】第一期干货:如何正确清理C盘?
- Oracle :备份 、还原数据库
- C++冒泡排序(包含初级、正宗及改进三种实现)
- 【Java8 新特性 3】java8 supplier
- 实验六 卷积神经网络(4)ResNet18实现MNIST
- Windows下文本文件编码转换
- Only the Paranoid Survive
- 3蛋白wb_干货分享:三个蛋白组学数据库的应用
- 携程平台增长部总经理王绩强:原生互联网企业正在经历一场数字升级丨数据猿专访...
- layui复选框默认选中
- 外贸业务员如何开发出更多的有效客户?
- 计算机公式乘法字处理,字符串乘法
热门文章
- 数学里的 e 为什么叫做自然底数?
- 【微信退款】同一订单第二次无法退款
- 15V转5V稳压芯片选型表
- 杭州python培训兄弟连
- GPS/BDS:星历表、历书、GPS三种启动方式
- H3C_交换机_Vlan配置
- 破解教程 第十一课 crackme破解教程(用trw2000追注册码)=====破解经典句式篇
- 情人节程序员用HTML网页表白【烟花代码】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 李开复自传披露离职原因
- unit自动驾驶怎么使用_微软模拟飞行10如何自动驾驶?