1、芯片型号规格

2、原理图

使用jlink,SWD模式下需要将CLK、TMS、VDD、GND、RESET 五根线都接起来,否则无法下载调试调试

接线图如下:

3、Keil 工具编译下载

3.1 配置如下:

3.2 调试出问题,不建议使用Keil进行调试

原因:Keil仅支持正版Jlink 调试

4、Jlink Flash下载配置

暂时无法在飞书文档外展示此内容

5、Ozone调试配置

6、hardfault 分析

TLE9891_2QTW61 FOC DEMO移植过程中Hardfault问题分析

将elf文件数据解析成asm文件查看汇编数据 ,可用于分析异常寄存器数据

C:\ghs\comp_202314\gdump.exe -ytext -ysec app.elf > app.asm

=======================================================
Exception No:[5] BusFault Occurred!
The Exception info is:
Current Exception EXC_RETURN: 0x0
xPSR: 0x100022B
PC: 0x1200D9CE
LR: 0x1200B3DF
R0: 0x180018F8
R1: 0x18003F48
R2: 0xC
R3: 0x1A5
R4: 0x18003F48
R5: 0x1
R6: 0x1A5
R7: 0x18007EA0
R8: 0x0
R9: 0x0
R10: 0x0
R11: 0x0
R12: 0x1800221C
SP : 0x180029A0
Enter Exception from Undefined Mode!

BusFault Status Reg: BFSR = 0x8200
=======================================================
 

7、can波特率

波特率计算可以根据公式推导:

/* bit time =Tsync+Tseg1+Tseg2 =(1+15+4)*tq =20*(7+1)/80MHZ= 20*100ns  baud rate =1/bittime =500 kHz*/

/* sampling point = (Tsync+Tseg1)/(Tsync+Tseg1+Tseg2)=(1+15)/(1+15+4)=80% */

/* fcan=80MHz, tq=100ns, TSEG1=1500ns, TSEG2=400ns */

        CANNODE->CAN_NBTR0.bit.BRP = 0x07;
        CANNODE->CAN_NBTR0.bit.SJW = 0x3;
        CANNODE->CAN_NBTR0.bit.TSEG1 = 0xE;
        CANNODE->CAN_NBTR0.bit.TSEG2 = 0x3;
        CANNODE->CAN_NBTR0.bit.DIV8 = 0;

总线采样是由can控制器自动完成的,

busoff恢复需要128次连续11个隐性位,由can控制器自动清除标识位,但can任然处于关闭状态,需求重新初始化模块

8、can通信问题验证

1、使用Ozone调试器调试程序,上位机监测can通信异常rec计数达到128,调试程序无法进入can发送中断程序。

初步原因:发送报文数据全是FF数据,程序初始化后导致数据发送的异常

处理结果:修改发送数据FF为AA,重新编译后调试,程序正常运行。

最终调查发现是can线路接触不好导致的,重新接线后功能正常。

过段时间又异常了,待查。。。。

重新编译烧写后,使用Ozone可正常调试。

感觉是寄存器数据被擦写了恢复了正常。待验证

2、正常报文,但发送时间卡住:

3、正常报文:

可以解释这个ret接收错误计数问题,因为没有收到ack。

9、can时钟配置

从上图可知can波特率依赖的时钟源来自fa,fa来自CLKINA和CLKINB其中一个。下图是时钟AB选择配置,如下:

体配置代码如下:

void MultiCAN_init(void)
{
  /* Load global MultiCAN+ registers */
  /* enable CANNODE module */
  CANNODE-> CLC.reg = 0;

  /* configure fractional divider fcan = fa */
  CANNODE->FDR.bit.DM= 0x01;//1:divider mode
  CANNODE->FDR.bit.STEP = 0x3FF;// 0x3ff = 1023  when DM=1,fcan = fa*1/(1024-1023)=fa

  /* select clock for fa = CLKINB (from PLL1)  */
  /* CLKSEL =2 */
  CANNODE->MCR.bit.CLKSEL = 0x02;
}

10、can receive input select

11、config compare

12、中断号顺序

12、Uart

13、memory

14、CSA

15、ADC 采样

SDADC:

CSA:

16、ADC 异常问题分析:

1、VDDEXT 采样数据异常,PMU修改Enable VDDEXT

2、NTC温度采样异常

ADC1_startSequence 和ADC1_startSequence 同时采样 导致异常

17、资源使用情况

17、can控制器操作模式

18、OS 系统时钟配置

一类中断由OS接管生成的代码,优先级由OS进行配置,采样systick作为中断源

配置系统时钟为58MHz,

配置系统时钟装载值58000,产生1ms中断

cpu_clk配置:

Idle任务10ms周期调度

19、OS ISR配置

中断优先级值越小,优先级越大

/*
 *   ---------------------------------------------------------------------------
 *   Copyright (c) 2023-present, Inc. All rights reserved.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 *   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 *   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 *   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 *   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 *   POSSIBILITY OF SUCH DAMAGE.
 *
 *   ---------------------------------------------------------------------------
 */
/*-----------------------------------------------------------------------------
 * File Name        : Os_Hal_Vec.S
 * Generated by     : OS V01
 * Date             : 2025-11-28 13:48:39
 * Project          : app
 * Soc              : tle9891
 * Specification(S) : AUTOSAR Classic Platform R21-11
 *-----------------------------------------------------------------------------*/



#define _ASMLANGUAGE
.global Os_IsrRun
.global _tx_thread_system_state

#include "tx_isr_entry.inc"

.global __VECTOR_TABLE              /* Vector Table */
.global __STACK_TOP                 /* Top of Stack for Initial Stack Pointer */
.global Reset_Handler               /* Reset Handler */
.global __tx_NMIHandler             /* NMI Handler */
.global __tx_HardFaultHandler       /* Hard Fault Handler */
.global __tx_MemManageFaultHandler  /* Reserved */
.global __tx_BusFaultHandler        /* Bus Fault Handler */
.global __tx_UsageFaultHandler      /* Usage Fault Handler */
.global __tx_SVCallHandler          /* SVCall Handler */
.global __tx_DBGHandler             /* Debug Monitor Handler */
.global __tx_PendSVHandler          /* PendSV Handler */
.global _vectors                    /* Vector Table */

    .text
    .align 4

.global OsCounterCfg_System_Tick_Isr
  ISR_COUNTER_ENTRY_TYPE2 System_Tick_Isr
.global OsIsrCfg_Can_Error_Isr
  ISR_ENTRY_TYPE2 Can_Error_Isr
.global OsIsrCfg_Can_Receive_Isr
  ISR_ENTRY_TYPE2 Can_Receive_Isr
.global OsIsrCfg_Can_Transmit_Isr
  ISR_ENTRY_TYPE2 Can_Transmit_Isr
.global OsIsrCfg_uart_receive_Isr
  ISR_ENTRY_TYPE2 uart_receive_Isr
.global OsIsrCfg_Adc10_Isr
  ISR_ENTRY_TYPE1 Adc10_Isr
.global OsIsrCfg_Adc11_Isr
  ISR_ENTRY_TYPE1 Adc11_Isr
.global OsIsrCfg_Adc12_Isr
  ISR_ENTRY_TYPE1 Adc12_Isr
.global OsIsrCfg_Adc13_Isr
  ISR_ENTRY_TYPE1 Adc13_Isr
.global OsIsrCfg_Adc20_Isr
  ISR_ENTRY_TYPE2 Adc20_Isr
.global OsIsrCfg_Adc21_Isr
  ISR_ENTRY_TYPE2 Adc21_Isr
.global OsIsrCfg_GPT12_T3_Isr
  ISR_ENTRY_TYPE2 GPT12_T3_Isr


.section  ".intc_vector","ax"
.align 4
.thumb

__VECTOR_TABLE:
_vectors:
    .word __STACK_TOP               /* reserved 0 */
    .word Reset_Handler + 1         /* 1 Exception number */
    .word __tx_NMIHandler           /* 2 */
    .word __tx_HardFaultHandler     /* 3 */
    .word __tx_MemManageFaultHandler/* 4 */
    .word __tx_BusFaultHandler      /* 5 */
    .word __tx_UsageFaultHandler    /* 6 */
    .word 0x00                      /* reserved 7 */
    .word 0x00                      /* reserved 8 */
    .word 0x00                      /* reserved 9 */
    .word 0x00                      /* reserved 10 */
    .word __tx_SVCallHandler + 1    /* 11 */
    .word __tx_DBGHandler           /* 12 */
    .word 0x00                      /* reserved 13 */
    .word __tx_PendSVHandler        /* 14 */


    .word System_Tick_IsrEntry                  /* System_Tick_Isr, CATEGORY_2, 15 */
    .word Os_IsrUndefinedHandler /* reserved 16 */
    .word Os_IsrUndefinedHandler /* reserved 17 */
    .word Os_IsrUndefinedHandler /* reserved 18 */
    .word Os_IsrUndefinedHandler /* reserved 19 */
    .word Os_IsrUndefinedHandler /* reserved 20 */
    .word Os_IsrUndefinedHandler /* reserved 21 */
    .word Os_IsrUndefinedHandler /* reserved 22 */
    .word GPT12_T3_IsrEntry                  /* GPT12_T3_Isr, CATEGORY_2, 23 */
    .word Os_IsrUndefinedHandler /* reserved 24 */
    .word Os_IsrUndefinedHandler /* reserved 25 */
    .word Adc20_IsrEntry                  /* Adc20_Isr, CATEGORY_2, 26 */
    .word Adc21_IsrEntry                  /* Adc21_Isr, CATEGORY_2, 27 */
    .word Os_IsrUndefinedHandler /* reserved 28 */
    .word Os_IsrUndefinedHandler /* reserved 29 */
    .word Adc10_IsrEntry                  /* Adc10_Isr, CATEGORY_1, 30 */
    .word Adc11_IsrEntry                  /* Adc11_Isr, CATEGORY_1, 31 */
    .word Adc12_IsrEntry                  /* Adc12_Isr, CATEGORY_1, 32 */
    .word Adc13_IsrEntry                  /* Adc13_Isr, CATEGORY_1, 33 */
    .word Os_IsrUndefinedHandler /* reserved 34 */
    .word Os_IsrUndefinedHandler /* reserved 35 */
    .word Os_IsrUndefinedHandler /* reserved 36 */
    .word Os_IsrUndefinedHandler /* reserved 37 */
    .word uart_receive_IsrEntry                  /* uart_receive_Isr, CATEGORY_2, 38 */
    .word Os_IsrUndefinedHandler /* reserved 39 */
    .word Os_IsrUndefinedHandler /* reserved 40 */
    .word Os_IsrUndefinedHandler /* reserved 41 */
    .word Can_Transmit_IsrEntry                  /* Can_Transmit_Isr, CATEGORY_2, 42 */
    .word Can_Receive_IsrEntry                  /* Can_Receive_Isr, CATEGORY_2, 43 */
    .word Can_Error_IsrEntry                  /* Can_Error_Isr, CATEGORY_2, 44 */
    .word Os_IsrUndefinedHandler /* reserved 45 */
    .word Os_IsrUndefinedHandler /* reserved 46 */
    .word Os_IsrUndefinedHandler /* reserved 47 */

.size __VECTOR_TABLE, . - __VECTOR_TABLE

20、寄存器访问类型

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐