RA MCU

介绍

瑞萨RA系列都有内置的温度传感器,可以通过下面几个简单步骤就能测量并获取工作温度信息和工作电压信息。由于无需外围添加任何器件,此方法能够快捷便利而且在节省成本的情况下获取芯片的工作温度,温度值的误差范围在+/-1.5℃内。

但由于芯片测试的校准温度参考值(@125℃)是在Vcc=3.3V所做,如果MCU是运作在其它工作电压范围的情况下,则需要借助芯片的Internal Voltage Sensor采集到的数据来做计算修正。

主要内容

本例程采用评估板EK-RA2E1,基于测试需要,工作电压修改为5V。开发环境采用e2studio,使用FSP做底层驱动配置。

EK-RA2E1评估套件可通过通过瑞萨电子的灵活软件包(FSP)和e2studio IDE,帮助用户轻松评估RA2E1 MCU产品组的特性,并开发嵌入式系统应用程序。用户可利用丰富的板载功能以及自选的热门生态系统插件来将丰富创意变为现实。

运行快速入门示例项目

1. EK-RA2E1板具有预先编程过的快速入门示例项目(EK-RA2E1示例项目包中提供源代码)。

2. 用户可使用连接至5V电源的micro USB设备电缆,通过USB调试端口(J10)启动EK-RA2E1板。白色电源LED指示灯将会亮起。

3. 快速入门示例项目将开始运行,蓝色用户LED灯将开始闪烁。

4. 请参见EK-RA2E1快速入门指南,了解快速入门示例项目的其他功能。

开发嵌入式应用程序

1. 修改快速入门示例项目–请参见EK-RA2E1快速入门指南,了解导入、修改和构建快速入门示例项目的相关说明。

2. 从其他众多的示例项目(由EK-RA2E1示例项目包提供)当中的一个开始–用户可从多个示例项目中进行选择,了解RA2E1 MCU产品组的各种外围设备。这些示例项目能够成为您在开发自定义应用程序的道路上的完美起点。

构建自定义硬件

1. 通过构建多功能原型开始–用户可对具备自选生态系统插件的EK-RA2E1板加以利用。

2. 构建自定义硬件–用户可参考EK-RA2E1设计包中提供的设计和制造信息来开发自定义硬件。

EK-RA2E1

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra2e1-evaluation-kit-ra2e1-mcu-group 

工作原理和温度值计算方法

1、FSP ADC配置

由于Temperature sensor & Internal voltage sensor是无法同时做扫描采样,ADC采样通道配置需要借助软件来做通道采集切换。FSP则无需做任何通道配置。例程配置使用单次采样。

7.png

2、ADC启动后,首先通过通道配置ADC_MASK_VOLT做ADC Internal Voltage Sensor信号采集。并通过函数R_ADC_ScanCfg()来配置当前通道,采集到数据后,通过计算方式获得当前Vcc的工作电压。

8.png

3、然后切换到通道配置为ADC_MASK_SENSORS,并做Temperature Sensor信号采集。

9.png

4、通过访问固定地址获取芯片在125度出厂校准温度参考值数据(V1)。

此值是在特定条件下提供的,Ta=Tj=125℃,Avcc=3.3V。

10.png

5、通过电压转换来将芯片校准温度参考值换算到当前电压下,然后通过线性的斜率计算方法得到当前电压下的目前温度值。附图代码中已经将RA2E1的Temperature Slope参数进行了消約。

11.png

12.png

来源:瑞萨嵌入式小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 30

CRC(Cyclic Redundancy Check),即循环冗余校验码。CRC是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

常用CRC有以下多种:

1.jpg

网络上关于CRC基础原理的内容比较多,可以搜索关键词“循环冗余校验”进行查询。

瑞萨RA MCU中有硬件CRC计算单元,采用固定的多项式发生器来计算8位或者32位数据的CRC校验值,对数据传输或数据存储的一致性、完整性进行验证。这篇文章重点介绍RA MCU中的CRC模块和使用方法。

RA MCU中的CRC 计算单元规格如下:

2.jpg

注1. 该函数不能划分CRC计算中使用的数据。以8位或32位为单位写入数据。

CRC 计算单元框图如下:

3.png

那么接下来就是如何使用了,打开工程中的configuration.xlm文件,在Stacks窗口中,可以通过“New Stack → Monitoring → CRC (r_crc)”添加该模块。该模块的属性窗口如下:

4.jpg

在应用程序中使用CRC模块的基本例程如下:

void crc_example ()
{
    uint32_t length;
    uint32_t uint8_calculated_value;
    length = sizeof(g_data_8bit) / sizeof(g_data_8bit[0]);
    crc_input_t example_input =
    {
        .p_input_buffer = g_data_8bit,
        .num_bytes = length,
        .crc_seed = 0,
    };
    /* Open CRC module with 8 bit polynomial */
    R_CRC_Open(&crc_ctrl, &g_crc_test_cfg);
    /* 8-bit CRC calculation */
    R_CRC_Calculate(&crc_ctrl, &example_input, &uint8_calculated_value);
}

● CRC监听功能注

另外CRC单元还具有监听功能  ,可以监视指定 I/O 寄存器地址的读取和写入,并自动对寄存器地址读取和写入的数据进行CRC计算。不是对数据块调用 R_CRC_Calculate,而是调用 R_CRC_SnoopEnable 来开始监视读/写,并使用 R_CRC_CalculatedValueGet 来获取当前CRC。

请注意,监听模式仅适用于SCI上的发送/接收操作。

注:并非所有RA MCU的CRC单元都有监听功能,RA2A1、RA2L1、RA2E1、RA2E2、RA4M1

、RA4W1、RA6M1、RA6M2、RA6M3、RA6T1、RA6T2的CRC单元有监听功能,而RA4M2、RA4M3、RA4T1、RA4E1、RA4E2、RA6M4、RA6M5、RA6T3、RA6E1、RA6E2的CRC单元没有监听功能,具体请参考各MCU的硬件手册。

以下参考代码展示了CRC监听操作:

void crc_snoop_example ()
{
    /* Open CRC module with 8 bit polynomial */
    R_CRC_Open(&crc_ctrl, &g_crc_test_cfg);
    /* Open SCI Driver */
    /* Configure Snoop address and enable snoop mode */
    R_CRC_SnoopEnable(&crc_ctrl, 0);
    /* Perfrom SCI read/Write operation depending on the SCI snoop address configure */
    /* Read CRC value */
    R_CRC_CalculatedValueGet(&crc_ctrl, &g_crc_buff);
}

在使用CRC32多项式函数时,CRC模块会产生与流行的在线CRC32计算器相同的结果,但请务必记住一些要点:

● 在线CRC32计算器允许输入任意数量的字节。而FSP CRC32 API函数使用32位。这意味着在线计算时必须“填充”为32位。

● 在线CRC32计算器通常会先对输出取反,然后再将其呈现为结果。如果需要,由应用程序决定是否包含此步骤。

● 在线CRC32计算器和R_CRC模块API(CRC32 多项式)都需要使用种子值 0xFFFFFFFF。

● 确保R_CRC CRC32的位方向设置为LSB,并且选择了CRC32而不是CRC32C。

● 一些在线CRC工具将最终结果与0xFFFFFFFF进行异或。

瑞萨RA MCU全系列产品都具有CRC外设(注意,是全系列都有), 对CRC的计算提供硬件支持,为应用程序节省了代码空间。

更多内容,点击下方链接进入瑞萨中文论坛查看:

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/

来源:瑞萨嵌入式小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 45

在瑞萨RA系列MCU产品中,目前RA4E2、RA4T1、RA6E2、RA6T2和RA6T3搭载了CANFD Lite(硬件手册中成为CANFD_B)模块,相关的详细IP介绍,请参见之前的文章<RA MCU CAN和CANFD IP介绍>

本篇将为您介绍如何使用FSP配置CANFD Lite模块,请注意与RA6M5搭载的CANFD模块的配置略有区别,这里不详细讲述。

首先,简单介绍一下FSP。瑞萨的Flexibility Software Package(FSP)是一种嵌入式软件和开发工具包,提供了集成的软件平台,帮助开发者快速设计、开发和部署嵌入式系统。FSP提供了一系列软件组件、设备驱动程序、操作系统抽象层和中间件,以及与瑞萨微控制器相配套的开发工具。通过使用FSP,开发者可以减少开发时间和成本,快速构建高度可靠、高性能的嵌入式系统。

FSP具有以下特点和优势:

● 灵活性和可扩展性:FSP支持瑞萨广泛的微控制器产品系列,使开发者能够选择适合其需求的合适解决方案。

● 高度集成的软件平台:FSP提供了一整套软件组件,包括设备驱动程序、操作系统抽象层和中间件,简化了系统开发流程。

● 快速上手和开发:FSP提供了丰富的示例代码、开发工具和文档,使开发者能够快速开始开发工作,并加速产品上市时间。

● 兼容性和维护性:FSP基于开放标准,并与瑞萨的先进开发工具集成,可以轻松集成第三方软件和工具,同时享受瑞萨长期的技术支持和维护。

通过FSP的图形化界面可以设置RA CANFD Lite模块的引脚和功能,使用FSP生成的函数可以执行CANFD Lite模块的初始化,发送&接收数据,这样可以加快项目完成,缩短用户开发时间。

而使用FSP如何设置RA CANFD Lite功能,将从以下几个方面进行说明:

1、添加CANFD Lite模块

在e2 studio双击工程中的configuraion.xml文件,在Stacks选项卡中,点击New Stack,选择CANFD Lite (r_canfdlite)。

1.png

2、设置时钟

CANFD时钟默认为禁用状态。选择Clocks选项卡,将CANFDCLK设置为40MHz:

● 将PLL(锁相环)分频器改为Div / 2

● 将PLL乘法器改为Mul x16.0

● 将CANFDCLK改为Src: PLL

● 将CANFDCLK分频器改为Div /4

2.png

3、设置引脚

选择Pins Tab,点击CANFD0,Pin Group Selection选择Mixed的情况下,Operation Mode选择Enabled,CRX0自动选择P102、CTX0自动选择P103,也可以通过右侧的下拉箭头根据用户需要选择其他可用引脚。

3.png

4、设置CANFD Lite模块属性

切回Stacks选项卡,选择CANFD lite,转至Properties窗口(确保当前为FSP配置透视图的情况下,点击右上方:

4.png

打开Properties窗口。

或者通过Window→Show View→Other

5.png

搜索找到Properties窗口

6.png

4.1 设置标称比特率(Nominal Rate)和FD数据比特率(FD Data Rate)

可以选择自动生成比特率或者手动设置比特率

请注意,如果选择自动生成比特率,“Use manual settings”一项需要设置为No。

7.png

4.2 修改AFL数量

由于RA6E2只有Channel 0,所以需要将“Channel 1 Rule Count”一项改为0。

另外,RA6E2的CANFD Lite模块最多允许32个AFL条目。

8.png

4.3 设置使用的TX Mailbox 0(TX MB0)

例如通过TX Mailbox 0(TX MB0)发送数据,则勾选“TX MB0”一项。

9.png

4.4 设置发送优先级

发送优先级有可以选择CAN ID优先(Message ID)或者消息缓冲区编号优先(Buffer Number)。

10.png

4.5 设置接收MB的数量和大小

11.png

4.6 设置接收FIFO的中断模式、中断阈值、大小和深度

12.png

请注意,RX MB和FIFO位于有限的RAM区域中,所以在设置RX MB和FIFO时,大小和深度的最大值取决于可用的RAM区域。从FSP v4.3.0开始,如果超出CANFD RAM区域,FSP会提示错误。

4.7 设置Callback函数名和优先级

13.png

4.8 设置通道和全局错误中断,根据用户实际需要进行勾选

14.png

5、添加AFL

RA CANFD使用AFL条目来过滤接收到的消息,AFL 的主要参数如下:

15.jpg

例如想接收到以下要求的数据,那么在hal_entry.c文件中hal_entry()函数前需要复制以下const来设置AFL:

● Classical CAN Bus

● Standard ID (11 bits)

● RX MB 0 (to receive messages IDs 0x40 or 0x41)

const canfd_afl_entry_t p_canfd0_afl[CANFD_CFG_AFL_CH0_RULE_NUM] ={ {     .id =     {         .id         = 0x40,         .frame_type = CAN_FRAME_TYPE_DATA,         .id_mode    = CAN_ID_MODE_STANDARD,     },     .mask =     {         .mask_id         = 0x7FE,         .mask_frame_type = 0,         .mask_id_mode    = 1,     },     .destination =     {         .minimum_dlc = CANFD_MINIMUM_DLC_0,         .rx_buffer   = CANFD_RX_MB_0,     }, },};

6、CANFD相关API

16.jpg

7、用户代码中添加初始化函数、发送函数、接收函数和Callback函数

7.1 添加几个变量声明和一个宏定义

/* Flags to be set in Callback function */
bool b_canfd_tx_complete = false;
bool b_canfd_rx_complete = false;
bool b_canfd_err_status = false;

/* CANFD RX and TX variables */
can_frame_t g_can_tx_frame;
can_frame_t g_can_rx_frame;
can_frame_t g_can_rx_frame_fifo;

uint8_t tx_data[64];
#define DATA_LENGTH                  (8)

7.2 添加初始化函数

/* Initialize CANFD Lite driver*/    
R_CANFD_Open(&g_canfd0_ctrl, &g_canfd0_cfg);

7.3 添加发送函数

for( uint16_t i = 0; i < DATA_LENGTH; i++)        
{            
    tx_data[i]          = (uint8_t) (i + 1);        
}        
memcpy((uint8_t*)&g_can_tx_frame.data[0], (uint8_t*)&tx_data[0], DATA_LENGTH);        
g_can_tx_frame.id               = 0x60;        
g_can_tx_frame.id_mode          = CAN_ID_MODE_STANDARD;        
g_can_tx_frame.type             = CAN_FRAME_TYPE_DATA;        
g_can_tx_frame.data_length_code = 64;//8;        
g_can_tx_frame.options          = CANFD_FRAME_OPTION_FD | CANFD_FRAME_OPTION_BRS;//0;        
g_can_tx_frame.options          = 0;

/* Write some data to the transmit frame */        
R_CANFD_Write(&g_canfd0_ctrl, 0, &g_can_tx_frame);

7.4 当使用RX MB接收数据时,添加以下代码

/* Get the status information for CAN transmission */        
R_CANFD_InfoGet(&g_canfd0_ctrl, &can_rx_info);

/* Check if the data is received in FIFO */        
if((can_rx_info.rx_mb_status & (1<<0)) == (1<<0))        
{            
    /* Read the input frame received */            
    R_CANFD_Read(&g_canfd0_ctrl, 0, &g_can_rx_frame);        
}

7.5 添加Callback函数

使用FIFO接收时,需要在Callback中读取接收到的数据。

/* Callback function */
void canfd0_callback(can_callback_args_t *p_args)
{    
    /* TODO: add your own code here */    
    switch (p_args->event)    
    {        
        case CAN_EVENT_TX_COMPLETE:        
        {            
            b_canfd_tx_complete = true;        //set flag bit            
            break;        
        }       
        case CAN_EVENT_RX_COMPLETE: // Currently driver don't support this. This is unreachable code for now.        
        {            
            b_canfd_rx_complete = true;            
            memcpy(&g_can_rx_frame, &p_args->frame, sizeof(can_frame_t));            
            break;        
        }        
        case CAN_EVENT_ERR_WARNING:             //error warning event        
        case CAN_EVENT_ERR_PASSIVE:             //error passive event        
        case CAN_EVENT_ERR_BUS_OFF:             //error Bus Off event        
        case CAN_EVENT_BUS_RECOVERY:            //Bus recovery error event        
        case CAN_EVENT_MAILBOX_MESSAGE_LOST:    //overwrite/overrun error event        
        case CAN_EVENT_ERR_BUS_LOCK:            // Bus lock detected (32 consecutive dominant bits).        
        case CAN_EVENT_ERR_CHANNEL:             // Channel error has occurred.        
        case CAN_EVENT_TX_ABORTED:              // Transmit abort event.        
        case CAN_EVENT_ERR_GLOBAL:              // Global error has occurred.        
        case CAN_EVENT_FIFO_MESSAGE_LOST:      // Transmit FIFO is empty.        
        case CAN_EVENT_TX_FIFO_EMPTY:           // Transmit FIFO is empty.        
        {            
            b_canfd_err_status = true;          //set flag bit            
            break;        
        }    
    }
}

通过以上内容,我们可以看到,瑞萨的FSP为嵌入式系统开发者提供了一种快速、灵活和可靠的软件开发平台,帮助使用者快速将创意转化为端产品,并满足不同市场的需求。

来源:瑞萨嵌入式小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 34

众所周知,模数转换,即Analog-to-Digital Converter,常称ADC,是指将连续变量的模拟信号转换为离散的数字信号的器件。主要用于对模拟信号进行数字采集,以进行数据处理。通常情况下,在转换完成时读取转换结果。而ADC中的窗口比较功能,会检测ADC结果是否低于或高于特定阈值,当转换结果在某一个范围时可以触发中断,几乎无需软件干预。该配置非常实用,它可以监视信号是否按照要求保持在特定范围内,或者在电池电量不足/过充时发出信号。

本文以RA4M2为例介绍如何设置ADC窗口比较功能。

RA MCU中一般都会包括12位逐次逼近型A/D转换器(ADC12)单元,最多可选择13路模拟量输入通道、温度传感器输出、内部参考电压进行转换。

同时,ADC12还提供比较功能(窗口A和窗口B)。比较功能分别指定窗口A和窗口B的参考值上限和的参考值下限,当所选通道的A/D转换值满足比较条件时输出中断。窗口A和窗口B的主要区别在于它们的中断输出信号不同以及对窗口B只能选择一个通道的限制。

这里以窗口A为例进行介绍。窗口A有以下4种比较模式。

• 结果低于阈值

• 结果高于阈值

• 结果在窗口内

• 结果在窗口外

窗口A比较功能相关的寄存器有ADCMPCR、ADCMPLR0/1和ADCMPDR0/1寄存器,详情请参考RA硬件手册。

1.png

2.png

3.png

4.png

5.png

ADC数据与可设置的高低阈值进行比较,并可为AD数据在设定的门限值内、外、高或低自动生成比较中断。需要设置三个选项位置,接下来我们将逐个介绍各种情况下属性设置和用户代码。

1、A/D转换结果高于门限值时产生窗口比较A中断(ADC120_CMPAI)

6.png

若想实现上面的比较功能,请按照下图中所示,在FSP中设置ADC属性。

(1)Input → Window Compare → Window A

Enable:选择Enabled

Lower Reference:请在这里设定阈值

(2) Input → Window Compare

Window Mode:选择Disabled

7.png

当AD转换结果 > ADCMPDR0(Lower Reference 设定值时)时,产生Compare中断。

2、A/D转换结果低于门限值时产生窗口比较A中断(ADC120_CMPAI)

8.png

若想实现上图的比较功能,请按照下图中所示,在FSP中设置ADC属性。

(1)Input → Window Compare → Window A

Enable:选择Enabled

Lower Reference:请在这里设定阈值

(2) Input → Window Compare

Window Mode:选择Disabled

(3)代码中将CMPLCHA0位置为“0”

R_ADC0->ADCMPLR_b->CMPLCHA0 = 0;

9.png

当AD转换结果 < ADCMPDR0(Lower Reference 设定值时),产生Compare中断。

3、A/D转换结果在门限值内

10.png

若想实现上图的比较功能,请按照下图中所示,在FSP中设置ADC属性。

(1)Input → Window Compare → Window A

Enable:选择Enabled

Lower Reference、Upper Reference:请在这里设定阈值

(2) Input → Window Compare

Window Mode:选择Enabled

11.png

当ADCMPDR0(Lower Reference设定值时)< AD转换结果< ADCMPDR1(Upper Reference设定值时)时,产生Compare中断。

4、A/D转换结果在门限值外

12.png

若想实现上图的比较功能,请按照下图中所示,在FSP中设置ADC属性。

(1)Input → Window Compare → Window A

Enable:选择Enabled

Lower Reference、Upper Reference:请在这里设定阈值

(2) Input → Window Compare

Window Mode:选择Enabled

(3)代码中将CMPLCHA0位置为“0”

R_ADC0->ADCMPLR_b->CMPLCHA0 = 0;

13.png

当AD转换结果<ADCMPDR0(Lower Reference 设定值时)或者>ADCMPDR1(Upper Reference设定值时)时,产生Compare中断。

另外,使用窗口比较功能时请注意以下限制:

● 比较功能不能与自诊断功能或双触发模式一起使用。(比较功能不适用于ADRD、ADDBLDR、ADDBLDRA和ADDBLDRB。)

● 使用匹配/不匹配事件输出时请使用单次扫描模式。

● 当温度传感器输出时,窗口A选择内部参考电压,窗口B操作被禁用。

● 当温度传感器输出时,窗口B选择内部参考电压,窗口A操作被禁用。

● 禁止为窗口A和窗口B设置相同的通道。

● 设置参考电压值时,请将高电位参考电压值设置为大于或等于低电位参考电压值。

更多内容,您可点击下方链接进入瑞萨中文论坛查看:

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/

来源:瑞萨MCU小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 93

瑞萨RA MCU(Renesas RA Microcontroller Unit)是一种高性能且多功能的微控制器单元,由瑞萨电子公司推出。它是基于ARM Cortex-M内核的先进微控制器系列,专为满足广泛的嵌入式应用需求而设计。

RA MCU系列提供了广泛的产品线和内核选项,以满足不同级别、成本和性能要求。这些微控制器单元集成了丰富的外设和功能模块,包括模拟转换器、数字输入输出(GPIO)端口、通信接口(如UART、SPI、I2C)以及定时器等。这使得RA MCU具备了出色的通信能力、数据处理和控制性能,适用于各种行业和应用领域。

除了以上通信接口,RA中多款MCU还配备了CAN或者CANFD模块。RA MCU中的CAN(Controller Area Network)和CANFD(Controller Area Network with Flexible Data Rate)模块是用于实现高性能数据通信的重要功能。

CAN是一种广泛应用于汽车、工业控制和物联网等领域的串行通信协议。其特点是具有高可靠性、抗干扰能力强和可扩展性好。CAN通信使用两根差分信号线(CAN_H和CAN_L),以确保可靠地传输数据。RA MCU的CAN模块支持标准CAN协议,具备多个接收和发送FIFO缓冲区,用于存储收发的CAN帧。它还提供了灵活的过滤和接收模式选择功能,能够满足不同应用的数据传输要求。

而CANFD是对传统CAN协议的扩展,能够以更高的速率传输数据和更大的数据负载。CANFD模块可以在CAN和CANFD之间进行切换,以适应不同的通信需求。与CAN相比,CANFD具有更高的数据传输速率和更大的数据帧长度,提供了更大的灵活性和性能。RA MCU的CANFD模块支持CAN2.0B和CANFD的协议规范,能够在高速、高负载的应用场景下提供可靠的数据通信。它具备更大的接收和发送FIFO缓冲区,以适应更高速率、更大负载的数据传输。同时,CANFD模块还提供了更丰富的过滤和接收模式配置选项,以满足不同应用的需求。

RA MCU中的CAN和CANFD模块通过提供灵活而高性能的数据通信功能,使开发者能够轻松构建复杂的通信系统。无论是用于车载电子、工业自动化还是物联网设备,CAN和CANFD模块都是实现可靠数据传输的理想选择。

• 第一种:CAN模块

RA2L1、RA4M1、RA4M2、RA4M3、RA4E1、RA6M1、RA6M2、RA6M3、RA6M4、RA6T1和RA6E1中搭载这一IP,符合ISO 11898-1、CAN 2.0A、CAN 2.0B协议标准。

位速率

数据传输率可高达1 Mbps (fCAN≥8 MHz);

fCAN:CAN时钟源

Mailbox

32个Mailbox,2种模式

• 普通mailbox模式:32个mailbox,可独立配置用于发送或接收

• FIFOmailbox模式:24个mailbox,可独立配置用于发送或接收,其余Mailbox接收和发送4级FIFO

接收过滤器

8个独立接收Mask(每4个Mailbox有1个);

每个Mailbox可以独立启用或禁用Mask。

发送

支持数据帧和远程帧发送;

传输ID格式可选择仅标准ID、仅扩展ID或混合ID;

可编程一次性传输功能;

广播消息功能;

可根据消息ID或Mailbox号码选择优先模式;

支持发送请求中止,并在状态标志中确认中止完成;

每个Mailbox可独立启用或禁用传输完成中断;

接收

支持数据帧和远程帧接收;

接收ID格式可选择仅标准ID、仅扩展ID或混合ID;

可编程一次性接收功能;

可选择覆盖模式(覆盖未读消息)和溢出模式(保存未读消息);

每个Mailbox可独立启用或禁用接收完成中断。

中断功能

支持五种中断源:接收完成、发送完成、接收FIFO、发送FIFO和错误中断

CAN时钟源

PCLKB或CANMCLK

时间戳

使用16位计数器的时间戳功能;

参考时钟可选择1位、2位、4位和8位时间周期。

错误状态监测

CAN总线错误监测,包括填充错误、格式错误、ACK错误、15位CRC错误、位错误和ACK分隔符错误;

检测到错误状态的转换,包括错误警告、错误被动、总线关闭进入和总线关闭恢复;

支持读取错误计数器。

系统框图如下:

1.png

• 第二种:CANFD模块

RA6M5中搭载这一IP,符合CAN-FD ISO 11898-1 (2015) 协议标准。

位速率

仲裁阶段高达1 Mbps,数据阶段高达8 Mbps,每个CAN通道单独传输;

CAN通道数

2通道

工作时钟

外设时钟/APB时钟

50MHz(PCLKB);

RAM时钟:100 MHz (PCLKA)

数据链路层 (DLL) 时钟

最大值≤40 MHz

可选ID类型

型11位标准ID;

11位标准ID+18位扩展ID

可选帧类型

数据帧 (RTR = 0)(CAN和CAN-FD帧);

远程帧 (RTR = 1)(仅限CAN帧)

网关功能

CAN 2.0 ↔ CAN 2.0

CAN 2.0 ↔ CAN-FD网关(仅支持8字节有效载荷)

CAN-FD ↔ CAN-FD

消息缓冲区

最多16×2个接收消息缓冲区,在所有CAN通道之间共享;

每个通道16个发送消息缓冲区;

每个通道4个发送队列;

支持自动消息传输到传输队列

FIFO数量

8个接收FIFO缓冲区

多达3×2个FIFO可单独配置为:

• 接收FIFO

• 发送FIFO

• CAN ↔ CAN网关FIFO

增强的接收过滤

支持11位和29位CAN标识符;

每个条目的可编程29位CAN标识符接收过滤器Mask;

每个通道的可编程网关路由能力(最多8个路由目的地);

RTR和IDE屏蔽;

数据长度代码 (DLC) 过滤器;

消息缓冲区负载过载保护;

有效负载过滤器。

中断功能

可配置的全局RX FIFO中断:可单独配置每个FIFO、在接收到特定深度或每收到一条消息触发中断;

通道TX中断;

全局错误:数据链路校验、邮件丢失、FD有效负载溢出;

通道错误:总线错误、警告错误、被动错误、总线断开、总线断开恢复、超载、总线锁、仲裁损失、传输中止。

RAM

RAM ECC保护(2位错误检测,1位错误纠正)

掉电功能

每个CAN节点的模块启动停止功能(通道和全局睡眠模式)

TrustZone Filter

可设置一个安全属性,两个通道属性相同

系统框图如下:

2.png

• 第三种:CANFD Lite模块

RA4E2、RA4T1、RA6T2、RA6E2和RA6T3中搭载这一IP,符合CAN-FD ISO 11898-1 (2015)。

位速率

仲裁阶段高达1 Mbps,数据阶段高达5 Mbps

CAN通道数

1通道

工作时钟

外设时钟/APB时钟

最大值≤40 MHz

可选ID类型

11位标准ID;

11位标准ID+18位扩展ID

可选帧类型

数据帧 (RTR = 0)(CAN和CAN-FD 帧);

远程帧 (RTR=1)(仅限CAN帧)

消息缓冲区

最多32个接收消息缓冲区;

4个发送消息缓冲区;

1个发送队列;

支持自动消息传输到传输队列。

FIFO数量

2个接收FIFO缓冲区

1个COMMON FIFO可单独配置为:

• 接收FIFO

• 发送FIFO

增强的接收过滤

支持11位和29位CAN标识符;

每个条目的可编程29位CAN标识符接收过滤器Mask;

每个FIFO和接收消息缓冲区的可编程路由功能(最多2个路由目的地);

RTR和IDE屏蔽;

数据长度代码 (DLC) 过滤器;

消息缓冲区负载过载保护;

在通信期间更新接收过滤器列表 (AFL) 条目。

中断功能

可配置的全局RX FIFO中断:可单独配置每个FIFO、在接收到特定深度或每收到一条消息触发中断;

通道TX中断;

全局错误:数据链路校验、邮件丢失、FD有效负载溢出;

通道错误:总线错误、警告错误、被动错误、总线断开、总线断开恢复、超载、总线锁、仲裁损失、传输中止

RAM

RAM ECC保护(2位错误检测,1位错误纠正)

掉电功能

CAN节点的模块启动停止功能(通道和全局睡眠模式)

TrustZone Filter

可设置一种安全属性

系统框图如下:

3.png

目前RA MCU提供以上三种CAN&CANFD IP,请根据实际需求进行选择。如果需要在CAN总线上添加CAN节点,以上三种CAN&CAN IP均可;如果需要在CAN总线上添加CANFD节点,请选择CANFD或者CANFD Lite;如果需要用到2个通道,请选择RA6M5的CANFD。在选型或者使用过程中,若遇到问题,请联系瑞萨销售或者代理。

来源:瑞萨MCU小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 38

随着工业4.0和工业物联网的发展,机器人技术的需求变得越来越重要。同时,市场需要提供易于使用的架构,简化设计流程,并显著降低客户在各种应用中的设计风险。为了满足市场需求,瑞萨电子提供了基于MCU的micro-ROS解决方案。micro-ROS是一个使用ROS 2的机器人控制系统的开源项目,ROS 2是第二代ROS(机器人操作系统),用于微控制器上的各种机器人系统。

在本篇文章中,您将了解用于微型ROS实现工业机器手的最佳硬件和软件平台,这些平台可以使用RA6系列MCU上的解决方案简化设计过程。RA家族及其RA6系列MCU适用于需要以太网、CAN-FD、经得起未来考验的安全性、大尺寸嵌入式RAM以及运行闪存CoreMark®算法的低至107uA/MHz的低功耗物联网应用。更多详情,您可在后文“相关资料”中查看瑞萨RA系列网页网址。

在瑞萨电子与合作伙伴eProsima的共同努力下,我们开发了一个机械手演示系统,通过在RA6M5 MCU上的通信接口来控制机械臂,以展示基于MCU的机器人控制伺服电机的能力,如通过编程操作来抓取和改变物体位置的能力,以及通过游戏手柄与PC通信来进行手动操作的能力等。这个演示是使用商业OpenManipulator-X平台开发的。RA6M5产品页请点击https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra6m5-200mhz-arm-cortex-m33-trustzone-highest-integration-ethernet-and-can-fd?utm_source=WeChat&utm_medium=Organic&utm_campaign=WeChat访问查看。

通过RViz(ROS可视化GUI)可操作物体块,Rviz是机器人、传感器和算法的通用3D可视化环境,用于将物体块从A点移动到B点。

1.jpg

图1. 机器人手臂

2.jpg

图2. 机器人手臂+基于ROS的机器人身体控制器(JP177)

3.png

图3. 图形用户界面

RA6M5功能

  • 通过即插即用的USB,使用micro-ROS与ROS 2通信;

  • 机械手伺服的自动和引导控制;

  • 从伺服器中检索机械手位置并在RViz上显示;

  • 看门狗:检测通信问题,通过停止机械手运动措施来保证安全。

PC功能

  • 运行micro-ROS代理与开发板通信;

  • 使用常规ROS 2推送器来发送游戏手柄命令;

  • 显示RViz上的机械手运动。

我们使用基于ROS的机器人身体控制器作为MCU平台,在OpenManipulator-X中实现。瑞萨电子在成功产品组合网页上介绍了使用RA6M5的基于ROS的机器人本体控制器的综合系统级框图。基于ROS的机器人本体控制器在微控制器上实现ROS 2节点,并在通用框架中实现传统机器人与物联网传感器和设备之间的互操作性。在基于ROS的机器人本体控制器上,系统设计人员可以通过单线UART和RS-485控制多个伺服系统,这有助于降低各种应用程序初始设计的开发成本和时间,如物流和仓库的服务机器人、安全、农业和医疗保健等。

基于ROS的机器人本体控制器系统框图

4.png

EK-RA6M5(评估套件)是用于RA6M5的MCU评估套件,可用于一般评估,并且是micro-ROS组织官方支持的评估套件。该套件包含快速启动MCU评估所需的所有必要的硬件功能和预编程代码。在micro-ROS GitHub页面上,您可以在瑞萨电子e2 studio和其他开发平台下载支持RA6M5和RA6T2的micro-ROS软件包。具体请在文末查看micro-ROS解决方案支持资源的链接。

eProsima评论:此解决方案演示了一个简化的示例,说明如何将类似的方法应用于更大、更复杂的工业场景,如仓库或生产线。eProsima是一家专门提供针对机器人、物联网和汽车行业的中间件解决方案的公司。eProsima和瑞萨电子的合作将促进基于嵌入式设备的新型机器人应用的扩展。micro-ROS弥合了微控制器和ROS 2之间的差距,高性能RA系列的官方支持使客户能够在工业4.0和工业物联网领域进行经济高效的开发。

瑞萨电子于2023年3月14日至16日在德国纽伦堡举行的Embedded World 2023中参与展出,其中展示了工业机器手的演示。欲了解更多信息,请在文末访问micro-ROS Solution方案网站链接和eProsima RA家族和micro-ROS支持链接。我们还将提供专门用于电机解决方案的RA6T2解决方案。

相关新闻

新闻 | 瑞萨电子RA MCU集成micro-ROS框架,简化专业机器人开发

相关资料

前文中提到的相关产品/方案详情,您可点击下方链接访问查看:

micro-ROS

https://micro.ros.org/

eProsima

https://www.eprosima.com/index.php/products-all/third-party-solutions/renesas-ra-family

RA6M5

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra6m5-200mhz-arm-cortex-m33-trustzone-highest-integration-ethernet-and-can-fd

OpenManipulator-X

http://en.robotis.com/shop_en/item.php?it_id=905-0024-000

EK-RA6M5

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m5-evaluation-kit-ra6m5-mcu-group

micro-ROS解决方案支持资源

https://www.renesas.cn/cn/zh/application/key-technology/motor-control-robotics/micro-ros-solutions

eProsima RA家族和micro-ROS支持

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra-partners/eprosima-micro-ros-support

RA6T2

https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra6t2-240mhz-arm-cortex-m33-trustzone-high-real-time-engine-motor-control

更多资源

https://eprosima.com/index.php/company-all/news/309-robot-arm-demo-renesas-micro-ros

来源:瑞萨电子

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 57

新型RA4E2和RA6E2 MCU以紧凑的封装和丰富的外设选项带来高达200 MHz的性能

2023 年 3 月 14 日 - 全球半导体解决方案供应商瑞萨电子(TSE:6723)今日宣布,推出两个基于Arm® Cortex®-M33内核和Arm TrustZone®技术的新产品群——RA4E2和RA6E2,以扩大其32位RA微控制器(MCU)产品家族。全新100-MHz主频RA4E2产品群和200-MHz主频RA6E2产品群经过优化,实现一流的电源效率且完全不影响性能。新产品群还具有128KB和256KB闪存选项及40KB SRAM,集成了片上CAN FD、USB、QSPI、SSI和I3C接口等丰富的连接选项,并提供升级至RA产品家族其它成员的便捷途径。这些新产品将成为传感、游戏、可穿戴设备和电器等在小型封装中实现高性能应用的理想选择。

1.jpg

第二代RA入门级MCU在小型封装中带来高端性能

2.jpg

瑞萨RA MCU产品阵容

RA4E2和RA6E2作为RA产品家族中集成有CAN FD且最具成本效益的成员,提供小型封装选项,包括节省空间的4mm x 4mm 36引脚BGA和5mm x 5mm 32引脚QFN,满足对成本敏感和空间有限的应用需求。此外,新设备的低功耗节省了能源,使终端产品能够为更绿色的环境做出贡献。

所有RA器件都得到瑞萨灵活配置软件包(FSP)的支持,该软件包包含高效的驱动程序和中间件,以简化通信并提升外设功能。FSP的GUI简化加速了开发过程,其可以灵活地使用原有代码,并轻松支持向其它RA产品家族器件的兼容和扩展。使用FSP的设计人员还能够访问完整的Arm生态系统以及瑞萨的广泛合作伙伴网络,获得各种工具,帮助加快产品上市速度。

瑞萨电子物联网及基础设施事业本部高级副总裁Roger Wendelken表示:“瑞萨的RA产品家族不断为市场带来卓越的性能、功能、设计便捷性和价值,持续超越人们的期望。全新RA4E2和RA6E2产品群的推出,是众多用户采用RA产品家族作为其首选MCU系列的典型实例。我们坚信,这些产品将满足各类应用领域的需求,许多研发人员也将在未来的设计中选用RA产品家族。”

Yole Group计算与软件首席市场及技术分析师Tom Hackenberg表示:“微控制器已占据90%以上的处理器出货量,采用这些MCU的应用领域更是多种多样(注)。瑞萨通过RA产品家族的持续扩展,可以为更多市场的更多用户提供针对广泛特定应用的最优器件。”

RA4E2 MCU产品群

RA4E2产品群提供五种不同的选择,从32引脚到64引脚封装,小至4mm x 4mm的尺寸,以及128kB闪存和40kB SRAM。RA4E2器件具有出色的有源功耗性能,在以100MHz的速度从闪存执行时,功耗为82μA/MHz。此外还具备-40/105°C的扩展工作温度范围。RA4E2产品群是成本敏感型应用和其它需要高性能、低功耗,及小封装尺寸最佳组合系统的理想选择。

RA4E2产品群的关键特性

  • 100 MHz Arm Cortex-M33 CPU内核

  • 128kB集成闪存;40kB RAM

  • 支持宽温度范围:Ta = -40/105°C

  • 32引脚至64引脚封装选项

  • 低功耗操作:在100 MHz频率的运行模式下,功耗为82 µA / MHz

  • 集成通信选项,包括USB 2.0全速设备、SCI、SPI、I3C、HDMI CEC、SSI和CAN FD

  • 通过内部振荡器、丰富的GPIO、高阶模拟功能、低电压检测和内部复位功能降低系统成本

RA6E2 MCU产品群

RA6E2产品群MCU具有200 MHz的性能,其包括10款不同的器件,从32引脚到64引脚封装,小至4mm x 4mm尺寸,从128kB到256kB闪存,以及40kB SRAM。RA6E2器件具有优异的功耗特性,以及广泛的外设与连接选项,提供了性能和功能的独特组合。

RA6E2产品群的关键特性

  • 200 MHz Arm Cortex-M33 CPU内核

  • 128kB至256kB可选集成闪存;40kB RAM

  • 32引脚至64引脚封装选项

  • 低功耗操作:在200 MHz频率的运行模式下,功耗为80 µA / MHz

  • 集成通信选项,包括USB 2.0全速设备、SCI、SPI、I3C、HDMI CEC、SSI、QSPI和CAN FD

  • 集成定时器

  • 高阶模拟功能

成功产品组合

瑞萨将RA6E2 MCU和其产品组合中的其它兼容器件相结合,设计了一款完整的附加语音用户界面(VUI)解决方案。其作为模块化解决方案,可轻松添加至如智能恒温器或电器等任何需要语音用户界面的应用中。其中,RA6E2 MCU负责处理所有任务,因而不会给主机MCU带来负担。以上仅为瑞萨众多“成功产品组合”中的一款。“成功产品组合”作为经工程验证的完整系统架构,将相互兼容的瑞萨器件优化并组合,以降低用户设计风险。瑞萨现已基于其产品阵容中的各类产品,推出超过300款“成功产品组合”,使客户能够加速设计进程,更快地将其产品推向市场。更多信息,请访问:renesas.com/win

瑞萨MCU优势

作为全球卓越的MCU产品供应商,瑞萨电子的MCU近年来的平均年出货量超35亿颗,其中约50%用于汽车领域,其余则用于工业、物联网以及数据中心和通信基础设施等领域。瑞萨电子拥有广泛的8位、16位和32位产品组合,是业界优秀的16位及32位MCU供应商,所提供的产品具有出色的质量和效率,且性能卓越。同时,作为一家值得信赖的供应商,瑞萨电子拥有数十年的MCU设计经验,并以双源生产模式、业界先进的MCU工艺技术,以及由200多家生态系统合作伙伴组成的庞大体系为后盾。关于瑞萨电子MCU的更多信息,请访问:www.renesas.com/MCUs

Embedded World展会参展信息

瑞萨将于3月14日至16日在德国纽伦堡举行的2023年Embedded World展会1号厅234号展台展示全新RA4E2和RA6E2器件。

供货信息

所有新款RA4E2和RA6E2 MCU现均已上市。瑞萨还为两个MCU产品群分别提供单独的评估套件及快速原型开发板。更多信息,请访问:https://www.renesas.com/RA4E2 和 https://www.renesas.com/RA6E2

关于瑞萨电子

瑞萨电子(TSE: 6723) ,科技让生活更轻松,致力于打造更安全、更智能、可持续发展的未来。作为全球微控制器供应商,瑞萨电子融合了在嵌入式处理、模拟、电源及连接方面的专业知识,提供完整的半导体解决方案。成功产品组合加速汽车、工业、基础设施及物联网应用上市,赋能数十亿联网智能设备改善人们的工作和生活方式。更多信息,敬请访问renesas.com。关注瑞萨电子微信公众号,发现更多精彩内容。

围观 23

介绍

瑞萨Virtual EEPROM模块简称VEE模块,该VEE模块模拟基本的EEPROM功能,支持读和写操作两种常见的数据操作。在应用程序的整个生命周期内,保留存储扇区的擦除计数,擦除计数可以随时访问。驱动函数会自动做磨损均衡处理,延长Flash的使用寿命。

主要内容

以开发板EK-RA2E2为例,使用VEE模块存取数据:

1、创建新工程

1.png

2、工程创建完成后,通过FSP配置Virtual EEPROM

2.png

2.1 添加Virtual EEPROM Stack

选择配置标签页 Stack → New Stack → Storage → Virtual EEPROM on Flash(rm_vee_flash)

3.png

2.2 配置Virtual EEPROM Stack

在生成的Stack框图中,点击 Virtual EEPROM on Flash(rm_vee_flash),可以看到e2 studio左下角出现属性栏,按照如图所示配置。

3.png

2.3 配置g_flash0 flash(r_flash_lp)

点击框图中g_flash0 flash(r_flash_lp),并按下图所示,设置Flash Ready Interrupt Priority。此处工程设置为Priority 1,可根据实际需要调整。

4.png

按照上面步骤配置配置完成后,点击5.png  FSP就会生成工程Virtual EEPROM以及相关的初始化代码。

3、编写示例代码,验证Virtual EEPROM功能。

在工程中打开scr/hal_entry.c文件,void hal_entry(void) 函数由main函数调用,我们自己的代码由hal_entry调用,这样做符合瑞萨软件的架构,方便以后使用RTOS。

在hal_entry.c文件中添加下面的代码

6.png

7.png

然后在hal_entry函数调用上面的rm_vee_example函数

8.png


接下来就可以编译调试程序,当程序正常运行起来之后,就可以看到绿色LED灯亮起,说明存到Flash中的数据再读取出来,经过对比确认数据正确。也可以在调试状态下,将全局变量添加到观察窗口,单步调试,观察数据的变化。

程序运行前

9.png

程序运行起来之后

10.png

可以看到右侧相关变量的数值已经有改变

在后面附加了如何在调试过程中观察全局变量数值变化。

*附:观察全局变量的方式

选中要观察的数据名称,右击,选择添加监看表达式

11.png

12.png

可以在调试界面看到相关表达式的值,随着程序运行,可以在这里观察数值的变化。

13.png

结论

使用VEE模块,可以方便地使用Flash存取数据。不再需要自己去考虑数据存储的位置以及磨损均衡等问题,可以把精力专注于实现功能上。

来源:瑞萨MCU小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 58

对于物联网的应用或者产品版本管理等场合,芯片的信息读取是用户非常关心的问题。本文介绍了瑞萨RA家族单片机读取Unique ID、Part Number和Mask Version信息的方法。

我们可以使用如下三个地址中存储的内容来获得相关信息,其地址如下:

“关于RA

注:FMIFRT寄存器的地址为0x407F_B19C。

关于FMIFRT寄存器:

  • FMIFRT是一个只读寄存器,存储Unique ID寄存器、Part Number寄存器和MCU Version寄存器的基址。

  • 应该以32位单位读取FMIFRT。 

  • FMIFRT寄存器的地址为0x407F_B19C。

“关于RA

以下分别介绍如何通过程序代码读出Unique ID、Part Number和Mask Version,这里以RA2L1为例。

(1)Unique ID寄存器地址和读出方法

“关于RA

直接通过FSP的API“R_BSP_UniqueIdGet”就可以读出128位的Unique ID;

参考下面的命令:

const bsp_unique_id_t* unique_id = R_BSP_UniqueIdGet();

(2)Part Number寄存器地址和读出方法

“关于RA

FSP中没有读取Part Number的API,所以需要使用以下代码。

首先定义Part Number寄存器的地址和保存Part Number数组的结构体。

#define BSP_FEATURE_BSP_PART_NUMBER_POINTER                 (0x01001C10U)

typedef struct st_bsp_part_number

{

    union

    {

        uint32_t part_number_words[4];

        uint8_t  part_number_bytes[16];

    };

} bsp_part_number_t;

然后在用户代码中执行下面的命令,即可将Part Number读出。

const bsp_part_number_t* part_number = BSP_FEATURE_BSP_PART_NUMBER_POINTER;

(3)MCU Version寄存器地址和读出方法

“关于RA

FSP中也没有读取MCU Version的API,所以需要使用以下代码。

首先定义MCU Version寄存器的地址:

#define BSP_FEATURE_BSP_MASK_REVISIOM_POINTER               (0x01001C20U)

然后在用户代码中执行下面的命令,即可将MCU Version读出。

const uint8_t* mask_version = BSP_FEATURE_BSP_MASK_REVISIOM_POINTER;

调试状态下读出的结果如下(以RA2L1为例):

“关于RA

“关于RA

“关于RA

产品型号是用ASCII码编写的,这里以RA2L1为例做以下说明。

“关于RA

来源:瑞萨MCU小百科
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 187

介 绍

MCU设计中,很多时候客户需要在Flash指定地址存入指定数据,这里需要用到Flash的绝对定位,我们知道有些公司可以在keil使用char const buf[x] __attribute__ ((at(0x80000))) = {};实现,那么RA是否可以实现?

通过瑞萨官方编译工具e2 studio对.ld脚本文件修改,在Flash上划一小块出来,然后通过__attribute__实现。

具体步骤如下

1、首先在Flash上划一块出来,在e2 studio对.ld文件进行修改。工程路径如下图

“RA

2、fsp.ld文件中,memory选项,Add新的分区,这里直接指定起始地址和长度。

“RA

3、fsp.ld下,文本编辑,初始my_code(!rx),删除”!”

“RA

4、如下,编辑my_code

“RA

在文本编辑会自动创建代码如下:

“RA

5、为了避免可能出现的问题,最好修改Flash地址空间,因为到此时,my_code被包在Flash区,需要修改flash区地址。

首先,复制memory_regions.ld并改名到同一目录下,在fSP.ld文件文本编辑处include新复制的文件:

“RA

接下来,我们需要在memory_regions_my.ld修改Flash空间

“RA

同样,我们可以在此处设置my_code的起始地址和长度,在第2步新建的分区直接用起始地址和长度别名替代。

6、在主函数变量声明处,添加代码

const char buff[16] __attribute__((section(".my_code "))) = {"1234567890abcdef"};

buff长度需与分区大小相同,否则会报错。

Build需要使用release。

7、编译完成后,查看如下:

“RA

注:推荐大家使用e2 studio help contents:(非常好用!!!)

更多信息请扫描下方二维码查看:

来源:瑞萨MCU小百科(作者:James Xu)
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 212

页面

订阅 RSS - RA MCU