mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-22 17:12:55 +08:00
124 lines
4.4 KiB
C
124 lines
4.4 KiB
C
/*
|
|
* Copyright 2022 MindMotion Microelectronics Co., Ltd.
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef __HAL_MDS_H__
|
|
#define __HAL_MDS_H__
|
|
|
|
#include "hal_common.h"
|
|
#include "hal_mds_remap.h"
|
|
/*!
|
|
* @addtogroup MDS
|
|
* @{
|
|
*/
|
|
|
|
/*!
|
|
* @brief MDS driver version number.
|
|
*/
|
|
#define MDS_DRIVER_VERSION 0u /*!< mds_0. */
|
|
|
|
/*!
|
|
* @brief MDS TriggerInMode type.
|
|
*
|
|
* Use the Trigger in mode, selecting the edge detection mode for the trigger source.
|
|
*/
|
|
typedef enum
|
|
{
|
|
MDS_TriggerInMode_RisingEdge = 0u, /*!< Select Rising edge detection. */
|
|
MDS_TriggerInMode_FallingEdge = 1u, /*!< Select Falling edge detection. */
|
|
MDS_TriggerInMode_BothEdges = 2u, /*!< Select Rising and Falling edge detection. */
|
|
}MDS_TriggerInMode_Type;
|
|
|
|
/*!
|
|
* @brief MDS CluLogic type.
|
|
*
|
|
* Select the operation logic of the Clu.
|
|
*/
|
|
typedef enum
|
|
{
|
|
MDS_CluLogic_OR_OR = 0u, /*!< The operation logic selects the OR-OR logic, and the four input logics are in0|in1|in2|in3. */
|
|
MDS_CluLogic_AND_OR = 1u, /*!< The operation logic selects the AND-OR logic, and the four input logics are (in0&in1)|(in2&in3). */
|
|
MDS_CluLogic_OR_XOR = 2u, /*!< The operation logic selects the OR-XOR logic, and the four input logics are (in0|in1)^(in2|in3). */
|
|
MDS_CluLogic_AND_AND = 3u, /*!< The operation logic selects the OR-OR logic, and the four input logics are in0&in1&in2&in3. */
|
|
}MDS_CluLogic_Type;
|
|
|
|
/*!
|
|
* @brief This type of structure instance is used to keep the settings
|
|
* when calling the @ref MDS_EnableTriggerClu() or @ref MDS_EnableConnClu() to configure using the Clu out as the trigger source.
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t CluInSource[MDS_CLU_IN_LEN]; /*!< Select the trigger and connection source for each of Clu in, TRIGGER_IN_SOURCE_LEN is the max input length. */
|
|
uint32_t CluInSourceInvertMask; /*!< Select trigger or connect the source after taking the inverse as input to the clu. */
|
|
uint32_t CluInSourceTriggerEdgeMask; /*!< Select the clu in source trigger edge detection mode. */
|
|
MDS_CluLogic_Type CluLogic; /*!< Select the Clu operation logic. */
|
|
} MDS_CluConf_Type;
|
|
|
|
/*!
|
|
* @brief Enable the trigger mode without clu output as connection source in.
|
|
* the hal_mds_remap.h define the mds(mindswitch) in or out, the trigger in correspond to trigger out.
|
|
*
|
|
* @param MDSx MDS instance.
|
|
* @param out the trigger source, see to hal_mds_remap.h.
|
|
* @param in the trigger target, see to hal_mds_remap.h.
|
|
* @param trigger_mode select the trigger in edge detection mode.
|
|
* @return None.
|
|
*/
|
|
void MDS_EnableTrigger(MDS_Type * MDSx, uint32_t out, uint32_t in, MDS_TriggerInMode_Type trigger_mode);
|
|
|
|
/*!
|
|
* @brief Enable software trigger as the trigger source in.
|
|
* when using the software trigger as the trigger source, enable it and it can only finish once trigger.
|
|
*
|
|
* @param MDSx MDS instance.
|
|
* @param enable true is enable the software trigger as the trigger source, false is not enable.
|
|
* @return None.
|
|
*/
|
|
void MDS_DoSwTrigger(MDS_Type * MDSx);
|
|
|
|
/*!
|
|
* @brief Enable the connection mode without clu output as connection source in.
|
|
* the hal_mds_remap.h define the mds(mindswitch) in or out, the connection in correspond to conntion out.
|
|
*
|
|
* @param MDSx MDS instance.
|
|
* @param out the connection target, see to hal_mds_remap.h.
|
|
* @param in the input of connection, see to hal_mds_remap.h.
|
|
* @return None.
|
|
*/
|
|
void MDS_EnableConn(MDS_Type * MDSx, uint32_t out, uint32_t in);
|
|
|
|
/*!
|
|
* @brief Enable the clu output as the trigger source in.
|
|
* the hal_mds_remap.h define the mds(mindswitch) in or out, the connection in correspond to conntion out.
|
|
*
|
|
* @param MDSx MDS instance.
|
|
* @param conf configure the clu parameter, @ref MDS_CluConf_Type.
|
|
* @param out select the trigger out, see to hal_mds_remap.h.
|
|
* @param in select which clu in, see to hal_mds_remap.h.
|
|
* @return None.
|
|
*/
|
|
void MDS_EnableTriggerClu(MDS_Type * MDSx, uint32_t out, uint32_t in, MDS_CluConf_Type * conf);
|
|
|
|
/*!
|
|
* @brief Enable the clu output as the connection source in.
|
|
* the hal_mds_remap.h define the mds(mindswitch) in or out, the connection in correspond to conntion out.
|
|
*
|
|
* @param MDSx MDS instance.
|
|
* @param conf configure the clu parameter, @ref MDS_CluConf_Type.
|
|
* @param out select the connection out, see to hal_mds_remap.h.
|
|
* @param in select which clu in, see to hal_mds_remap.h.
|
|
* @return None.
|
|
*/
|
|
void MDS_EnableConnClu(MDS_Type * MDSx, uint32_t out, uint32_t in, MDS_CluConf_Type * conf);
|
|
|
|
|
|
/*!
|
|
*@}
|
|
*/
|
|
|
|
#endif /*__HAL_MDS_H__. */
|