在线时间1 小时
UID3440755
注册时间2017-11-16
NXP金币0
该用户从未签到
新手上路

- 积分
- 6
- 最后登录
- 2024-12-10
|
各位专家好:
最近在使用S32K144开发CAN 总线的休眠唤醒功能。有个问题需要各位解答:
目前我已经在S32K144中实现休眠唤醒功能。
休眠的逻辑大致简略如下: 30秒没有收到CAN消息,进入休眠操作,依次是关闭LPIT、关闭SPI外设、打开CAN0的PN(pretended networking)功能用于唤醒、使用库函数powerManagment进入stop2模式。此时看电源,电流会变小15mA以上。可以判断是进入了STOP2模式。
唤醒的逻辑大致简略如下:使用上位机给MCU发送满足条件的CAN消息,MCU产生can0_wake_up_irqn中断,在中断中依次操作有 使用powermanagment让MCU进入RUN模式、初始化RUN模式下的时钟、打开刚刚关闭的外设。此时完成唤醒。
问题如下:上述的代码逻辑是在p-flash的地址0开始运行的,在运行时,实现上述逻辑没问题,但在加入CAN Bootloader功能,并将APP段的地址修改到4000之后,再让MCU进入休眠,也是可以休眠的,但是再去唤醒,此时无法再产生can0_wake_up_irqn中断,从而导致无法唤醒。这会是什么原因?
另外,如果在代码的休眠操作中不关闭外设,只是使用powermanagment进入STOP2模式,进去后,还是有can消息发出来,有spi消息发出来,此时使用唤醒,还是没有产生can0_wake_up_irqn中断,但mcu会通过can mailbox中断开始运行,此时是不是代表mcu没有进入STOP2模式?因为NXP 官方的A5425手册里面会写到,在STOP2模式下,外设是OFF状态的。
下面是.ld文件的地址参数。
1. 使用下面的flash参数,可以实现休眠与唤醒功能 (无CAN bootloader功能)
/* Flash */
m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400
m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0007FBF0
2. 使用下面的flash参数,无法实现休眠与唤醒功能(有CAN bootloader功能)
/* Flash */
m_interrupts (RX) : ORIGIN = 0x00004000, LENGTH = 0x00000400
m_flash_config (RX) : ORIGIN = 0x00004400, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x00004410, LENGTH = 512K-0x00004410
最佳答案
去 http://community.nxp.com/community/s32/s32k 用英文问吧,
在这里,估计短时间内不会有解答。
|
|