基于 SemiDrive E3640 GateWay MCAL3.1 GPIO 中断测试

一、 功能需求与测试环境

        在芯驰释放的 MCAL 功能安全认证版本 MCAL3.1,和 MCAL3.0 对比 GPIO 的中断代码发生了改变。为了更符合 Autosar 的代码规范,中断回调函数放在 EB 的 DIO 模块中去定义函数名。具体的实现放在测试代码中,而不是和 MCAL3.0 版本一样放在静态代码中。


图(1)

 


二、 代码分析

1.中断号的使用

        如图(2)所示 MCAL3.1 的 GPIO 中断目前只使用了 4 和 11,分别对应与 SF Domain 和 AP Domain。旧版的以 port  group 为一组的中断号使用方法在后面的补丁中可能也会加入。


图(2)

 
2.中断处理函数

       针对两个中断号,在 Dio.c 中实现了  DIO_SFIrqHandler()和 DIO_APIrqHandler()两个函数。如图(3)所示,这两个函数用来判断中断源来自 Safety domain 还是 AP domain,然后给  Dio_Ip_IrqHandler()传入不同的参数。



图(3)

 

  1. Dio_Ip_IrqHandler( ) 函数

      Dio_Ip_IrqHandler() 用于实际处理中断信号,包括读取相关寄存器判断中断具体来自哪一个 GPIO,然后将该 GPIO 的 ID 传给中断回调函数,在中断回调函数中做用户自定义的操作,回调关系参考图(4),最后清理中断。


图(4)

 

 

 三、 测试

  1. 配置

      本次测试中,选取 GPIO_H4 作为测试 GPIO,在 EB 的 Port 模块中,配置为 GPIO 模式,下降沿触发。详细如图(5)所示。




图(5)

 

      图(6)为在 DIO 模块中配置中断回调函数。

图(6)

  1. 测试程序

      测试程序的编写见图(7),需要在 dio_example.c 中加上对应的头文件,实现中断回调函数,注册中断。


图(7)


  1. 测试

       重新生成镜像,并烧写到开发板中,执行 dio test,然后给 GPIO_H4 一个下降沿信号,观察打印信息可以确认中断回调函数的正确执行。图(8)为打印信息。

图(8)

 

四、 参考文献:

  1. E3400_E3600_MCU_Technical_Reference_Manual_Rev00.12.pdf
  2. SemiDrive_E3_MCAL User Guide.pdf


        欢迎在博文下方留言评论,我们会及时回复您的问题。

如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com
     
        作者:Sim Guo / 郭夕峰


更多资讯,请扫码关注我们!:


★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论