完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
参考STM32MP157-DK2做的核心板,但是将I2C4修改成连接PD12,PD13,使用GPIOD没有使用GPIOZ。在MPC端通过 echo mem > /sys/power/state进入低功耗,MCU的固件运行时没有问题,MCU的固件不启动或停止时进入低功耗会在32秒后被看门狗重启。我追踪发现是suspend时以下位置I2C配置出问题了:driver_suspend()stpmic1_lp_copy_reg()stpmic1_register_read()stm32_i2c_read_write_membyte()hi2c->i2c_state = write ? I2C_STATE_BUSY_TX : I2C_STATE_BUSY_RX;hi2c->i2c_err = I2C_ERROR_NONE;i2c_transfer_config(hi2c, dev_addr, I2C_MEMADD_SIZE_8BIT,write ? I2C_RELOAD_MODE : I2C_SOFTEND_MODE,I2C_GENERATE_START_WRITE);timeout_ref = timeout_init_us(I2C_TIMEOUT_BUSY_US);if (i2c_wait_txis(hi2c, timeout_ref))goto bail;我的MCU的固件代码中有__HAL_RCC_GPIOD_CLK_ENABLE();这个GPIOD时钟使能的处理,当我不做GPIOD时钟使能时,MCU的固件运行时进入低功耗也会出这个问题。
从现状看像是GPIOD时钟没使能导致的问题。但是我取了寄存器RCC_MP_AHB4ENSETR的值查看,发现GPIODEN位是1,难道MPC端使能GPIOD时钟还有什么其他操作吗?而且通过echo -n stop > /sys/class/remoteproc/remoteproc0/state停止MCU的固件之后会出问题,难道这样还会把使能的GPIOD时钟关闭吗? |
|
相关推荐
1个回答
|
|
基于您所提供的信息,似乎是在进入低功耗模式时,I2C4配置出现了问题,导致不能进入低功耗模式。以下是一些可能的解决方案:
1. 确保I2C4的引脚映射和配置正确。检查引脚连接和配置是否与您的硬件设计和目标配置一致。 2. 确保使用的GPIO引脚在进入低功耗模式时被正确地配置为输入或输出状态。 3. 检查您的固件是否正确地关闭I2C4功能和总线,以便在进入低功耗模式时不会产生冲突。您可以在进入低功耗模式之前,显式地关闭I2C4功能。 4. 检查是否有其他外设或模块使用了I2C4,可能会与进入低功耗模式产生冲突。如果有其他外设使用了I2C4,您可能需要在进入低功耗模式之前,必要地将其关闭。 5. 对照参考设计和标准应用程序示例,检查您的代码是否正确地处理低功耗模式的进入和退出过程。您可以参考STM32的技术文档和软件库来了解正确的低功耗模式配置和操作。 最后,如果问题仍然存在,您可能需要更详细地调试和分析代码,以确定具体造成无法进入低功耗模式的原因。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
702 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1099 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1573 浏览 1 评论
532 浏览 0 评论
1065 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 13:37 , Processed in 0.900884 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号