RA2E1:ELC使用

添加ELC事件:ELC_EVENT_GPT4_CAPTURE_COMPARE_A后,触发:ELC_PERIPHERAL_IOPORT1,

请问如何通过ELC来控制IO输出高低电平,触发的IOPORT1事件如何与操作IOPOR的读写函数关联起来

  • 我的意思正是里面有句话不太理解,在Configuration的note中写道:

    However, when linking I/O Ports via the ELC the relevant I/O pins need to be configured as inputs or outputs.

    字面意思是如果我要链接的事件是IOPORT event,需要提前配置相关IO口输入或输出,但是既然我一开始就在pin配置好相关IO口,那这个动作在起始文件就已经把rasc里配置的所有IO初始化完成了,那么链接事件的作用仅仅是再配置一遍IO口吗,正如我上述提到,我需要的动作是ELC把定时器作为信号源来链接到IO口使其输出高低电平切换,因为在stack的IO界面,只有IOPORT event事件显示,且有信号源可选,但是IOPORT event事件到底是干啥的,该如何切换电平状态,我对此表示困惑。

  • 您好。根据手册中当ELC的事件触发后,EORR可以链接的模块操作来看,I/O ports可以根据(复位)或者EOSR(置位)进行相对应的输出,或者将Pin的状态所存到(EIDR)中(作为输入)。

    所以你需要了解

    EORR(复位)或者EOSR(置位)的意义,可以详细参考手册如下内容。即,ELC事件触发后,只能按照EORR或者EOSR的设置来改变端口的输出电平。

    必须注意,EORR和EOSR不能同时设定。设置例如下:(如设置P100,P101, P102的ELC触发输出电平)

        R_PORT1->EORR = 0x07;

    或者
        R_PORT1->EOSR = 0x07;

    一般来说,你在分享的FSP 关于Port的属性图中的设置已经OK了。初始化时候,仅需要启动和使能ELC和GPT即可。

    具体可以看如下链接中的例子。

    https://renesas.github.io/fsp/group___e_l_c.html

    想改变链接关系时,可以使用:

    err = R_ELC_LinkSet(&g_elc_ctrl, ELC_PERIPHERAL_IOPORT1, ELC_EVENT_GPT0_COUNTER_OVERFLOW);

    而你问到的这一句,

    However, when linking I/O Ports via the ELC the relevant I/O pins need to be configured as inputs or outputs.

    我想它的意义为:通过ELC链接的I/O端口,需要事先被设置为输入或者输出模式。换言之,就是这些端口只能工作在普通I/O模式,而不是其他的功能模式(比如串口,ADC等等)。

  • 切换电平可能做不到,只能在事件发生后去固定输出一个电平。

    如果想切换电平,可以使用DTC定期翻转端口的电平或是直接在某个定时器中断中通过软件来触发。