IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 瑞萨e2studio(1)----DTC测试Data Transfer Controller&外部中断&Clock&低功耗模式 -> 正文阅读

[嵌入式]瑞萨e2studio(1)----DTC测试Data Transfer Controller&外部中断&Clock&低功耗模式

目录

概述:

目录

概述:

硬件准备:

新建工程:

?工程模板:

?保存工程路径:

芯片配置:

工程模板选择:

?

时钟资源配置:

LED指示灯和按钮配置:

?外部中断设置:

?LED设置:

LPM模式设置:

DTC模式配置:

编写测试代码:



概述:

本篇文章主要介绍如何使用e2studio对瑞萨单片机进行DTC功能测试,其中包含有外部中断,时钟树的配置,低功耗模式的简单应用。仅供入门使用,具体研究还需多看硬件设计手册。

A Data Transfer Controller (DTC) module is provided for transferring data when activated by an interrupt request.

当有中断发生时,会执行数据的搬运。

本文会持续更新,请关注。

硬件准备:

首先需要准备一个开发板,这里我准备的是芯片型号R7FA2E1A92DFM的开发板EK-RA2E1。128KB flash,16KB Sram,4KB Data flash。

新建工程:

在这里插入图片描述

?工程模板:

在这里插入图片描述

?保存工程路径:

芯片配置:

本文中使用R7FA2E1A92DFM来进行演示。

工程模板选择:

时钟资源配置:

面对任何一款MCU,它的时钟树非常大关键,初学者应该花点时间把时钟树先理清楚,再去做其他的任务。E2stduio提供了图型化时钟配置界面,非常方便理解。

?时钟默认配置,可以看到ICLK为系统时钟,为48MHz,外设时钟B为24MHz,外设时钟D是48MHz,在本例中不做修改。掌握时钟树对一款MCU的理解至关重要。

LED指示灯和按钮配置:

P913,P914 ,P915驱动3个LED灯,P004接按钮S1。

?外部中断设置:

在Pins标签栏选择INPUT->ICU0,选择中断IRQ03:P004。

在Stack标签栏中,选择new stac->Drive->Input->外部中断驱动 r_icu。

注意选择通道3,修改一下名字,我个人不喜欢,也可以不修改。在本例中我不关注中断回调函数相关的内容,我只是想重点关注的是LPM模式和DTC数据传输部分,所以在这里对回调函数默认为NULL,不做修改。

?LED设置:

P913,P914,P915 三个LED灯配置为输出模式就可以了。然后点击生成,

LPM模式设置:

在stack标签栏中,选择new stac->Drive->Power->低功耗 r_lpm。

注意这里面关键的选项,唤醒源一定要选择IRQ03,也就是上面的中断源。这样系统中低功耗模式下,才能被按钮3触发欢喜。

DTC模式配置:

在stack标签栏中,选择new stac->Drive->Transfer- 数据转移?r_dtc。

注意这里的配置,我理解的DTC就是不用CPU干预,就可以把数据从一个地址搬移到内存的另外一个地址,我现在想让数据从0x20004080转移到0x20004083。

值得注意到是,我在这个IDE中定义变量指定地址时,编译器并不理会我的指令,有知道的同学告诉我一下。

uint8_t P_Dest3 __attribute__((section(".ARM.__at_0x20004080"))) = 0xFF;//does't work

这个语句并不起作用,所以我为了测试,先去定义了4个变量,知道他们的地址,然后再测试的。这样做不合理,需要修改。

特别要注意的是,Interrupt Frequency选项,必须是After each transfer。不然中断无法唤醒,我也不知道为什么。?

编写测试代码:

这下面的程序实现的时,按钮按一下,休眠一次,把Dest的值搬运一次给Dest3。?

uint8_t P_Dest=0x06;
uint8_t P_Dest1=0x01;
uint8_t P_Dest2=0x01;
uint8_t P_Dest3=0xFF;

//uint8_t P_Dest3 __attribute__((section(".ARM.__at_0x20004080"))) = 0xFF;

void BlinkLed()
{
? ? g_transfer0.p_api->open(g_transfer0.p_ctrl,g_transfer0.p_cfg);
? ? g_transfer0.p_api->enable(g_transfer0.p_ctrl);
? ? g_transfer0.p_api->softwareStart(g_transfer0.p_ctrl,TRANSFER_START_MODE_REPEAT);
? ? P_Dest3=0xFF;
? ? g_lpm.p_api->open(g_lpm.p_ctrl,g_lpm.p_cfg);
? ? g_external_irq.p_api->open(g_external_irq.p_ctrl,g_external_irq.p_cfg);
? ? g_external_irq.p_api->enable(g_external_irq.p_ctrl);
? ? while(1)
? ? {
? ? ? ? R_BSP_SoftwareDelay(100,BSP_DELAY_UNITS_MILLISECONDS);
? ? ? ? g_ioport.p_api->pinWrite(&g_ioport_ctrl,BSP_IO_PORT_09_PIN_13,1);
? ? ? ? g_ioport.p_api->pinWrite(&g_ioport_ctrl,BSP_IO_PORT_09_PIN_14,0);
? ? ? ? g_ioport.p_api->pinWrite(&g_ioport_ctrl,BSP_IO_PORT_09_PIN_15,0);
? ? ? ? R_BSP_SoftwareDelay(100,BSP_DELAY_UNITS_MILLISECONDS);
? ? ? ? g_ioport.p_api->pinWrite(&g_ioport_ctrl,BSP_IO_PORT_09_PIN_13,0);
? ? ? ? g_ioport.p_api->pinWrite(&g_ioport_ctrl,BSP_IO_PORT_09_PIN_14,1);
? ? ? ? g_ioport.p_api->pinWrite(&g_ioport_ctrl,BSP_IO_PORT_09_PIN_15,1);
? ? ? ? g_lpm.p_api->lowPowerModeEnter(g_lpm.p_ctrl);
? ? ? ? P_Dest++;
? ? ? ? P_Dest1++;
? ? ? ? P_Dest2++;
? ? }
}

测试结果如下:可见,初始化时,PDest=6,PDest3=255。

只要按一PDest3就会和Pdest同步。在程序中并没有任何改变Pdest3的代码,Pdest3变量能变更的唯一原因就是DTC转移了数据。

我先记录到这儿,接下来继续完善。?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:43:26  更:2021-11-09 19:45:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:00:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码