主题中讨论的其他器件: SysConfig、 CC1312R
大家好!
我使用 ti-rtos7和 simplelink_cc13xx_cc26xx_sdk_6_20_00_29 SDK 与 CC1312R7 MCU 配合使用。 所有代码均通过 IAR 8.50.9进行编译和刷写。
我正在尝试进入睡眠模式、但似乎没有进入。
此外、电流会保持不变、甚至会从0.48mA 增加到0.7mA。
对于 DIOS 配置、除了用于 TX 并定义为输出的 DIO3外、所有其他 DIO 都定义为具有上拉的输入、如下所示:
/* DIO1*/ /* CC_GP1_TP */ GPIO_CFG_INPUT | GPIO_CFG_IN_pu | GPIO_CFG_INT_DISABLE、
/* DIO2*/ /* Board_UART_RX */ GPIO_CFG_INPUT | GPIO_CFG_IN_pu | GPIO_CFG_INT_DISABLE、
*/ DIO3*// * Board_UART_TX */ GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH、
*/* DIO4*/ /* I2C_WP */ GPIO_CFG_INPUT | GPIO_CFG_IN_pu | GPIO_CFG_INT_DISABLE、
*/*DIO5*/
要激活睡眠模式、我们通过 DockLight 调用以下命令并获取一个 ACK 响应:
20/03/2023 17:16:24.779 [TX]- 06 A2 00 01 01 AA 0A.
20/03/2023 17:16:55.137 [RX]- 05 01 00 06 0A [ATE] ACK
该命令用于调用以下函数以进入待机模式、取消约束、关闭 UART 接口和进入睡眠模式。
void ATE_IO_Enter_Standby ( void )
{
// PowerCC26X2_MODULe.constraintCounts
Static Semaphore_Params semParams;
静态 semaphore_Struct semStruct;
Static Semaphore_handle SemHandle;
//创建互斥量
Semaphore_Params_init (&semParams);
semParams.mode = Semaphore_Mode_binary;
Semaphore_structure (&semStructurt、0、&semParams);
semHandle = semaphore_handle (&semStruct);
//生成 ACK
uint8_t HPR_ack [ sizeof (HPR_msg_header_t)+ sizeof (HPR_PAYLOAD_TYPE_e)+ sizeof (HPR_msg_PAYLOAD_ack_t)+ sizeof (HPR_msg_footer_t)];
HPR_ack_e response_description = HPR_ACK_MESSAGE_LEGAL;
HPR_PrepareAck ((HPR_msg_t_new*) HPR_ack、response_description);
HPR_PrepareMessage ((HPR_msg_t_new*) HPR_ack);
//在关闭之前将 ACK 打印到 UART
UART_WRITE (UART.DRIVER_Handle、HPR_ack、sizeof (HPR_ack));
//等待一个位...
for (int index = 0;index < 0xFFFF;++ index)
{
asm ("NOP");
}
//关闭 UART
uart_close (uart.driver_handle);
uint_fast32_t mask = Power_getConstraintMask ();
//执行约束清洁更坚固
if ( mask )
{
对于(int index = 0;index < PowerCC26X2_NUMCONSTRAINTS;++)
{ //使用检查掩码状态对所有限制逐个执行该操作
操作
{ // PowerCC26X2_MODULe.constraintCounts
if (mask &(1 << index)))
{ //启用掩码中正确的位后,释放
///约束,然后再次读取和检查掩码
power_releaseConstraint( index );
}
MASK = Power_getConstraintMask ();
}
while ( mask &(1 << index ));
}
}
if (!board_isClosedPin ( Board_UART_TX ))
{
Board_closePin ( Board_UART_TX );
}
if (!board_isClosedPin ( Board_UART_RX ))
{
Board_closePin ( Board_UART_RX );
}
Board_openPin (Board_UART_TX, PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_DIS );
Board_openPin (Board_UART_RX, PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_DIS );
睡眠(0xFFFFFFFF);
//输入互斥量
Semaphore_pend (semHandle、BIOS_wait_forever);
返回;
}
假设消除了所有功率限制、电流消耗没有下降和睡眠模式无法进入的原因可能是什么?
cc1312R7在发布版本中闪存、即使断开所有电缆(如 UART 和 J-Link)后仍保持电流消耗不变、仅保留电源。
请注意、据我所知、该函数过去是在 CC1312R1上调用的、似乎已经起作用。
谢谢你。
-埃伦


