ZHCAC41 February 2023 TMS320F280025C
触发位使 CPU 可以启用或禁用逻辑块中的逻辑或触发特定操作。例如,可以实施接收器启用位,以便在运行时选择性地启用或禁用 CLB 中的接收逻辑。这些触发位可使用 CLB_GP_REG 寄存器来实施。
CLB_GP_REG 位可以直接连接到八个 CLB 逻辑块输入。CPU 可以设置 CLB_GP_REG 中的任何位来触发 CLB 逻辑中的操作。例如,可以实施接收器启用/禁用位,以便在运行时启用或禁用 CLB 中的接收逻辑。以下代码块中显示了启用/禁用位实施的示例。代码块使用 C2000ware driverlib。
#define GPREG_ENABLE_RCVR 3U
void CCSI_HAL_enableClbReceiver()
{
uint32_t gpRegVal = CLB_getGPREG(CCSI1_RX_TILE_BASE);
// First check that receiver is in IDLE state
while(HWREG(CCSI1_RX_TILE_BASE + CLB_LOGICCTL + CLB_O_DBG_OUT) &
(CLB_DBG_OUT_FSM0_S1 | CLB_DBG_OUT_FSM0_S0)) {}
// Enable receiver
gpRegVal |= (1U << GPREG_ENABLE_RCVR);
CLB_setGPREG(CCSI1_RX_TILE_BASE, gpRegVal);
}
void CCSI_HAL_disableClbReceiver()
{
uint32_t gpRegVal = CLB_getGPREG(CCSI1_RX_TILE_BASE);
// First check that receiver is in IDLE state
while(HWREG(CCSI1_RX_TILE_BASE + CLB_LOGICCTL + CLB_O_DBG_OUT) &
(CLB_DBG_OUT_FSM0_S1 | CLB_DBG_OUT_FSM0_S0)) {}
// Disable receiver
gpRegVal &= ~(1U << GPREG_ENABLE_RCVR);
CLB_setGPREG(CCSI1_RX_TILE_BASE, gpRegVal);
}