1021|1

2937

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

【瑞萨RA4E1评估板】EXIT中断测试及抗干扰测试 [复制链接]

瑞萨在NEC时代芯片的抗干扰方面性能就出众,本次对RA4E1抗干扰进行测试,干扰通常在输入较多时更容易发生。所以本次同时测试的还有GPIO的中断输入测试。板子上的按钮SW1是连接到P205引脚上的,但是这个引脚没有直接的IRQ通道,但是连接了到了IRQ1-DS上面。

 使用FSP工具生成项目IRQ_FSP_Project,

首先:

修改系统的调试接口为SWD

 需要指定SWD的引脚,

增加驱动:

加入r_sci_uart和r_icu两个驱动。uart用来显示,icu用来设置IRQ1-DS中断。

 需要设置sci为通道9,用来连接接口的uart引脚。指定sci_uart的回调函数user_uart_callback()

设置irq中断,这里使用了IRQ1-DS中断,选择好之后pin 205的设置就完成了。

 

pin 205自动完成

 接下来设置IRQ中断驱动,

 因为pin 205的引脚使用了IRQ1-DS所以这里使用channel为1,指定回调函数irq_ep_callback(),设备中断名称:g_external_irq后面程序要引用。

设置完成之后,生成项目驱动。使用keil打开项目,主要的程序都在hal_entry.c文件中。加入两个设备的驱动回调函数。user_uart_callback()和irq_ep_callback()

#define USER_SW_IRQ_NUMBER        (0x01)

volatile bool uart_send_complete_flag = false;
volatile bool g_sw_press = false;

/*******************************************/


/* Callback function */
void user_uart_callback(uart_callback_args_t *p_args)
{
    /* TODO: add your own code here */
    switch(p_args->event)
    {
        case UART_EVENT_TX_COMPLETE:
            uart_send_complete_flag =true;
            break;
        default:
            break;
    }

}

/* Callback function */
void irq_ep_callback(external_irq_callback_args_t *p_args)
{
    /* TODO: add your own code here */
 /* Make sure it's the right interrupt*/
    if(USER_SW_IRQ_NUMBER == p_args->channel)
    {
        g_sw_press = true;
    }

}

在hal_entry()函数中加入中断初始化代码。

/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
	
	  fsp_err_t  err = FSP_SUCCESS;
    //icu_init();
	  //icu_enable();
	  err = R_ICU_ExternalIrqOpen(&g_external_irq_ctrl, &g_external_irq_cfg);
	  err = R_ICU_ExternalIrqEnable(&g_external_irq_ctrl);

    err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);

    for(;;){

        if(g_sw_press)
        {
					unsigned char buff[]="RA4E1 IRQ\n\r";
					size_t buff_len = strlen(buff);
					err = R_SCI_UART_Write(&g_uart9_ctrl, buff, buff_len);
					if(FSP_SUCCESS != err) __BKPT();
						while(uart_send_complete_flag == false){}
					uart_send_complete_flag = false;
                    g_sw_press = false; 
				}
			  err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_HIGH);
        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_08, BSP_IO_LEVEL_LOW);
        R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);
        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_LOW);
        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_08, BSP_IO_LEVEL_HIGH);
        R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);

    }
	
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

完成后,运行调试。

 每按一次按键打印“RA4E1 IRQ”

干扰进行测试

 因手头没有什么好的,干扰发生源,所以就使用了一个用废了的电子打火机作为干扰源。我把铁皮的部分去掉,测试的时候不停的在芯片上打火,看看芯片的反应。

经过多次打火,板子没有受到干扰。

本次测试主要参考了icu_fpb_ra4e1_ep测试程序。干扰测试比较简易,但是这种方法我测试或其它的芯片,多次测试后还是偶尔会受到干扰地,所以这种方法还是有一定的测试效果地。当然干扰测试不一定是芯片单一的要素,很可能会受到板子整体的影响。但是出现问题还是需要注意地。

最新回复

打火机!冲击检测必备   详情 回复 发表于 2023-7-18 20:28
点赞 关注

回复
举报

7640

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

打火机!冲击检测必备

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表