ST意法半导体
直播中

李之涵

7年用户 225经验值
私信 关注
[问答]

SPC564B74 eMIOS ICU限制为10ch?

你好,

在SPC5Studio V3.6和SPC564B74上。我想使用ICU eMIOS_0 ch。 9(PA [9],E0UC [9])但HAL层中的eMIOS ICU配置仅列出ch。 0到7和ch.24。它应该根据参考手册列出eMIOS_0上的ch.1到7和9到15以及eMIOS_1上的ch.9到15,对吗?
如果您确认问题,可否请告知应修改哪些文件?
请看下面的截图。
谢谢,
的Aurelien

以上来自于谷歌翻译


以下为原文




Hello,

On SPC5Studio V3.6 and SPC564B74. I would like to use ICU eMIOS_0 ch. 9 (PA[9], E0UC[9]) but eMIOS ICU config in HAL layers is only listing ch. 0 to 7 and ch.24. It should lists ch.1 to 7 and 9 to 15 on eMIOS_0 and ch.9 to 15 on eMIOS_1 according to reference manual, right?
If you confirm the issue, can you please advise on which files should be modified?
Please see screenshots below.
Thanks,
Aurélien

回帖(2)

刘鑫

2019-4-8 08:52:45
你好Aurelien,
 
对于ICU,eMIOS HAL的观点一直受限于从频道0到频道7和频道24。
从RM,您可以通过SAIC(单动作输入捕获)使用从通道0到通道31的ICU
 
对于PWM,从通道8到通道15的eMIOS HAL观点。
如果你想使用eMIOS ICU,我建议你更新icu_lld.c。
(参见下文)
 
 
 
 
 
 
 
 
 
 
 
 
 
并为通道8和通道9添加匹配处理程序
 
 
 
 
 
 
 
 最好的祝福
 
 二万

以上来自于谷歌翻译


以下为原文







Hello Aurelien ,

for ICU , eMIOS HAL point of view has been limited from Channel 0 to Channel 7 and Channel 24.
from the RM, you can use ICU from channel 0 to Channel 31 by SAIC (Single Action Input Capture)

for PWM , eMIOS HAL point of view from Channel 8 to Channel 15.
if you want to use eMIOS ICU , i advice you to update icu_lld.c.
(cf below)




  • #if SPC5_ICU_USE_EMIOS0_CH8


  •   


  • /* Driver initialization.*/


  •   


  • icuObjectInit(&ICUD9);


  •   


  • ICUD9.emiosp = &EMIOS_0;


  •   


  • ICUD9.ch_number = 9U;


  •   


  • ICUD8.clock = SPC5_EMIOS0_CLK;



  • #endif /* SPC5_ICU_USE_EMIOS0_CH7 */





  • #if SPC5_ICU_USE_EMIOS0_CH0


  •    


  • if

  • (&ICUD1 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH0 */



  • #if SPC5_ICU_USE_EMIOS0_CH1


  •    


  • if

  • (&ICUD2 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH1 */



  • #if SPC5_ICU_USE_EMIOS0_CH2


  •    


  • if

  • (&ICUD3 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH2 */



  • #if SPC5_ICU_USE_EMIOS0_CH3


  •    


  • if

  • (&ICUD4 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH3 */



  • #if SPC5_ICU_USE_EMIOS0_CH4


  •    


  • if

  • (&ICUD5 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH4 */



  • #if SPC5_ICU_USE_EMIOS0_CH5


  •    


  • if

  • (&ICUD6 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH5 */



  • #if SPC5_ICU_USE_EMIOS0_CH6


  •    


  • if

  • (&ICUD7 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH6 */



  • #if SPC5_ICU_USE_EMIOS0_CH7


  •    


  • if

  • (&ICUD8 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH7 */



  • #if SPC5_ICU_USE_EMIOS0_CH24


  •    


  • if

  • (&ICUD9 == icup)


  •       


  • increase_emios0_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS0_CH24 */



  • #if SPC5_ICU_USE_EMIOS1_CH24


  •    


  • if

  • (&ICUD10 == icup)


  •       


  • increase_emios1_active_channels();



  • #endif /* SPC5_ICU_USE_EMIOS1_CH24 */


and add the matching handler for channel 8 and channel 9




  • /**





  • * @brief   eMIOS0 Channels 6 and 7 interrupt handler.





  • * @note    It is assumed that the various sources are only activated if the





  • *          associated callback pointer is not equal to @p NULL in order to not





  • *          perform an extra check in a potentially critical interrupt handler.





  • *





  • * @isr





  • */



  • OSAL_IRQ_HANDLER(SPC5_EMIOS0_GFR_F6F7_HANDLER) {




  •   


  • OSAL_IRQ_PROLOGUE();





  • #if SPC5_ICU_USE_EMIOS0_CH6


  •   


  • icu_lld_serve_interrupt(&ICUD7);



  • #endif





  • #if SPC5_ICU_USE_EMIOS0_CH7


  •   


  • icu_lld_serve_interrupt(&ICUD8);



  • #endif




  •   


  • OSAL_IRQ_EPILOGUE();



  • }



  • #endif /* SPC5_ICU_USE_EMIOS0_CH6 || SPC5_ICU_USE_EMIOS0_CH7 */



Best regards

                Erwan
举报

李之涵

2019-4-8 09:02:30
好的,但我仍然需要修改mcuconf.h来声明:
 
 #define SPC5_ICU_USE_EMIOS0_CH9是的
 并且每个代码生成都会覆盖此文件。

以上来自于谷歌翻译


以下为原文




Ok, but I will still have to modify mcuconf.h to declare:

#define SPC5_ICU_USE_EMIOS0_CH9             TRUE
and this files is overwritten at each code generation.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分