公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

嗨,

我想配置我的 UART 模块

使用我用 GPT 配置的 10US 时应发生 TX、

RX 应基于中断发生。

同样,当我测试 RX 时,在 IfxStm_isDeadLine(inline) 函数中被击中。

我想知道它为什么会被击中

Nareshkumar119_0-1713246225368.png

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/td-p/739985

0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好 @Nareshkumar119

乍一看没什么问题,但我不明白的是,为什么总是在每个初始函数中调用IfxCpu_enableInterrupts(),在 core0 主函数的末尾也是如此。

 

 

 

void init_ASCLIN_UART(void)
{
.
.
    IfxCpu_enableInterrupts();
}
void initGpt12Timer(void)
{
.
.
IfxCpu_enableInterrupts();
}
void core0_main(void)
{
 IfxCpu_enableInterrupts();
.
.
 init_ASCLIN_UART();                 /* Initialize the module                  */
    initGpt12Timer();
    g_flag1 = 1;
    IfxCpu_enableInterrupts();          /* Enable interrupts after initialization */
.
}

 

目前,我无法运行您的代码,因此无法判断它是否有效,但我可以提出一些建议

  • 删除所有额外的IfxCpu_enableInterrupts(),这是在每个新项目开始时自动添加的。
  • 仔细检查每个模块的优先级
#define INTPRIO_ASCLIN1_RX                  18
#define INTPRIO_ASCLIN1_TX                  19
#define ISR_PRIORITY_GPT12_TIMER             1
#define CAN_priority                        77
  • 尽量避免使用逻辑标志的全局变量,如果无法避免,请遵循一些基本规则
extern volatile uint8 g_flag1

注意:该变量放在 .c 而不是在.h

  • 首先尝试在一个核心中运行所有项目,一旦知道要做什么,再使用其他核心
 src=IfxGpt12_T2_getSrc(&MODULE_GPT120);                                                     /* Get the interrupt address     */
    IfxSrc_init(src, IfxSrc_Tos_cpu1, CAN_priority);                                          /* Initialize service request   */
    IfxSrc_enable(src); 

问候!:1

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/m-p/745543

在原帖中查看解决方案

0 点赞
7 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好 @Nareshkumar119

您使用的是英飞凌的开发板还是定制的开发板?您能分享一下 ASCLIN 配置吗?

问候!:1

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/m-p/740643

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好,David_R、

这是一块英飞凌的评估板,代码取自英飞凌软件仓库、

 

我的问题是,我想每隔 10us 发送一次数据,为此我使用了 GPT 定时器,我该如何配置?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/m-p/743846

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好@Nareshkumar119

my question is  i want to transmit the data with every 10us for that i am using GPT timer, how i have to configure for this,

我们有一个GPT 培训,还有一个源代码 示例,可以作为起点。

让我举个例子,我要制作一个毫秒延迟功能,第一步是配置模块的初始设置。

extern void gpt12_init(void){
 IfxGpt12_enableModule(&MODULE_GPT120);
 IfxGpt12_setGpt1BlockPrescaler(&MODULE_GPT120, 
 IfxGpt12_Gpt1BlockPrescaler_16);
 IfxGpt12_T2_setTimerPrescaler(&MODULE_GPT120, 
 IfxGpt12_TimerInputPrescaler_128);
 IfxGpt12_T2_setMode(&MODULE_GPT120, IfxGpt12_Mode_timer);
 /* Start timer T2 */
 IfxGpt12_T2_run(&MODULE_GPT120, IfxGpt12_TimerRun_start);
}

最后,延迟函数

extern void wait_ms(uint32 ms){
    sint32 Fsys = IfxStm_getFrequency(&MODULE_STM0);
    Ifx_TickTime waitms = (Fsys / (1000 / ms));
    wait(waitms);
}

注意:BSP 中自带了 wait(),因此不要忘记添加它

#include "Bsp.h"

 

问候!:1

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/m-p/744447

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

嗨,大卫,

我在这里附上了我的代码,请核对一下

我想用 TIMER 发送数据,用中断接收数据、

我在配置中做了什么

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/m-p/744902

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好 @Nareshkumar119

乍一看没什么问题,但我不明白的是,为什么总是在每个初始函数中调用IfxCpu_enableInterrupts(),在 core0 主函数的末尾也是如此。

 

 

 

void init_ASCLIN_UART(void)
{
.
.
    IfxCpu_enableInterrupts();
}
void initGpt12Timer(void)
{
.
.
IfxCpu_enableInterrupts();
}
void core0_main(void)
{
 IfxCpu_enableInterrupts();
.
.
 init_ASCLIN_UART();                 /* Initialize the module                  */
    initGpt12Timer();
    g_flag1 = 1;
    IfxCpu_enableInterrupts();          /* Enable interrupts after initialization */
.
}

 

目前,我无法运行您的代码,因此无法判断它是否有效,但我可以提出一些建议

  • 删除所有额外的IfxCpu_enableInterrupts(),这是在每个新项目开始时自动添加的。
  • 仔细检查每个模块的优先级
#define INTPRIO_ASCLIN1_RX                  18
#define INTPRIO_ASCLIN1_TX                  19
#define ISR_PRIORITY_GPT12_TIMER             1
#define CAN_priority                        77
  • 尽量避免使用逻辑标志的全局变量,如果无法避免,请遵循一些基本规则
extern volatile uint8 g_flag1

注意:该变量放在 .c 而不是在.h

  • 首先尝试在一个核心中运行所有项目,一旦知道要做什么,再使用其他核心
 src=IfxGpt12_T2_getSrc(&MODULE_GPT120);                                                     /* Get the interrupt address     */
    IfxSrc_init(src, IfxSrc_Tos_cpu1, CAN_priority);                                          /* Initialize service request   */
    IfxSrc_enable(src); 

问候!:1

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/m-p/745543

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

嗨,

我已经用我的想法解决了这个问题,它正在运行,谢谢你们的建议

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/UART-Configuration/m-p/745729

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager
100 likes received

你好 @Nareshkumar119

很高兴知道一切正常。

问候!:1

0 点赞