mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-15 17:02:53 +08:00
209 lines
6.5 KiB
C
209 lines
6.5 KiB
C
/*!
|
|
* @file apm32f0xx_cec.h
|
|
*
|
|
* @brief This file contains all the functions prototypes for the CEC firmware library
|
|
*
|
|
* @version V1.0.1
|
|
*
|
|
* @date 2021-07-01
|
|
*
|
|
*/
|
|
|
|
#ifndef __CEC_H
|
|
#define __CEC_H
|
|
|
|
#include "apm32f0xx.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** @addtogroup Peripherals_Library Standard Peripheral Library
|
|
@{
|
|
*/
|
|
|
|
/** @addtogroup CEC_Driver CEC Driver
|
|
@{
|
|
*/
|
|
|
|
/** @addtogroup CEC_Enumerations Enumerations
|
|
@{
|
|
*/
|
|
|
|
/**
|
|
* @brief CEC_Signal_Free_Time
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_SINGANL_FREETIME_STANDARD = 0x00,
|
|
CEC_SINGANL_FREETIME_1T = 0x01, //!< 0.5 nominal data bit periods
|
|
CEC_SINGANL_FREETIME_2T = 0x02, //!< 1.5 nominal data bit periods
|
|
CEC_SINGANL_FREETIME_3T = 0x03, //!< 2.5 nominal data bit periods
|
|
CEC_SINGANL_FREETIME_4T = 0x04, //!< 3.5 nominal data bit periods
|
|
CEC_SINGANL_FREETIME_5T = 0x05, //!< 4.5 nominal data bit periods
|
|
CEC_SINGANL_FREETIME_6T = 0x06, //!< 5.5 nominal data bit periods
|
|
CEC_SINGANL_FREETIME_7T = 0x07, //!< 6.5 nominal data bit periods
|
|
}CEC_SIGNAL_FREETIME_T;
|
|
|
|
/**
|
|
* @brief CEC_RxTolerance
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_RX_TOLERANCE_STANDARD = 0x00, //!< Standard tolerance margin
|
|
CEC_RX_TOLERANCE_EXTENDED = 0x01 //!< Extended Tolerance
|
|
}CEC_RX_TOLERANCE_T;
|
|
|
|
/**
|
|
* @brief CEC_Stop_Reception
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_STOP_RECEPTION_OFF, //!< CEC Stop Reception Off
|
|
CEC_STOP_RECEPTION_ON //!< CEC Stop Reception On
|
|
}CEC_STOP_RECEPTION_T;
|
|
|
|
/**
|
|
* @brief CEC_Bit_Rising_Error_Generation
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_BIT_RISING_ERR_OFF, //!< BRE detection does not generate an Error-Bit on the CEC line
|
|
CEC_BIT_RISING_ERR_ON //!< BRE detection generates an Error-Bit on the CEC line (if BRESTP is set)
|
|
}CEC_BIT_RISING_ERR_T;
|
|
|
|
/**
|
|
* @brief CEC_Long_Bit_Error_Generation
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_LONG_PERIOD_ERR_OFF, //!< LBPE detection does not generate an Error-Bit on the CEC line
|
|
CEC_LONG_PERIOD_ERR_ON //!< LBPE detection generates an Error-Bit on the CEC line
|
|
}CEC_LONG_PERIOD_ERR_T;
|
|
|
|
/**
|
|
* @brief CEC_BDR_No_Gen
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_BROADCAST_NO_ERR_OFF, //!< Broadcast Bit Rising Error generation turned Off
|
|
CEC_BROADCAST_NO_ERR_ON //!< Broadcast Bit Rising Error generation turned On
|
|
}CEC_BROADCAST_NO_ERR_T;
|
|
|
|
/**
|
|
* @brief CEC_SFT_Option
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_SIGNAL_FREETIME_OPTION_OFF, //!< SFTCFG timer starts when TXSOM is set by software
|
|
CEC_SIGNAL_FREETIME_OPTION_ON //!< SFTCFG timer starts automatically at the end of message transmission/reception
|
|
}CEC_SIGNAL_FREETIME_OPTION_T;
|
|
|
|
|
|
/**
|
|
* @brief CEC_Interrupt_Configuration_definition
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_INT_RXBR = ((uint32_t)0x00000001), //!< Rx-Byte Received Interrupt
|
|
CEC_INT_RXEND = ((uint32_t)0x00000002), //!< End Of Reception Interrupt
|
|
CEC_INT_RXOVR = ((uint32_t)0x00000004), //!< Rx-Buffer Overrun Interrupt
|
|
CEC_INT_BRE = ((uint32_t)0x00000008), //!< Bit Rising Error Interrupt
|
|
CEC_INT_SBPE = ((uint32_t)0x00000010), //!< Short Bit Period Error Interrupt
|
|
CEC_INT_LBPE = ((uint32_t)0x00000020), //!< Long Bit Period Error Interrupt
|
|
CEC_INT_RXACKE = ((uint32_t)0x00000040), //!< Rx-Missing Acknowledge Error Interrupt
|
|
CEC_INT_ARBLST = ((uint32_t)0x00000080), //!< Arbitration Lost Interrupt
|
|
CEC_INT_TXBR = ((uint32_t)0x00000100), //!< Tx-Byte Request Interrupt
|
|
CEC_INT_TXEND = ((uint32_t)0x00000200), //!< Tx-End Of Message Interrupt
|
|
CEC_INT_TXUDR = ((uint32_t)0x00000400), //!< Tx-Underrun Interrupt
|
|
CEC_INT_TXERR = ((uint32_t)0x00000800), //!< Tx-Error Interrupt
|
|
CEC_INT_TXACKE = ((uint32_t)0x00001000), //!< Tx-Missing Acknowledge Error Interrupt
|
|
}CEC_INT_T;
|
|
|
|
/**
|
|
* @brief CEC_STS_register_flags_definition
|
|
*/
|
|
typedef enum
|
|
{
|
|
CEC_FLAG_RXBR = ((uint32_t)0x00000001), //!< Rx-Byte Received Flag
|
|
CEC_FLAG_RXEND = ((uint32_t)0x00000002), //!< End Of Reception Flag
|
|
CEC_FLAG_RXOVR = ((uint32_t)0x00000004), //!< Rx-Buffer Overrun Flag
|
|
CEC_FLAG_BRE = ((uint32_t)0x00000008), //!< Bit Rising Error Flag
|
|
CEC_FLAG_SBPE = ((uint32_t)0x00000010), //!< Short Bit Period Error Flag
|
|
CEC_FLAG_LBPE = ((uint32_t)0x00000020), //!< Long Bit Period Error Flag
|
|
CEC_FLAG_RXACKE = ((uint32_t)0x00000040), //!< Rx-Missing Acknowledge Error Flag
|
|
CEC_FLAG_ARBLST = ((uint32_t)0x00000080), //!< Arbitration Lost Flag
|
|
CEC_FLAG_TXBR = ((uint32_t)0x00000100), //!< Tx-Byte Request Flag
|
|
CEC_FLAG_TXEND = ((uint32_t)0x00000200), //!< Tx-End Of Message Flag
|
|
CEC_FLAG_TXUDR = ((uint32_t)0x00000400), //!< Tx-Underrun Flag
|
|
CEC_FLAG_TXERR = ((uint32_t)0x00000800), //!< Tx-Error Flag
|
|
CEC_FLAG_TXACKE = ((uint32_t)0x00001000), //!< Tx-Missing Acknowledge Error Flag
|
|
}CEC_FLAG_T;
|
|
|
|
/**@} end of group CEC_Enumerations*/
|
|
|
|
|
|
/** @addtogroup CEC_Structure Data Structure
|
|
@{
|
|
*/
|
|
|
|
/**
|
|
* @brief CEC Init structure definition
|
|
*/
|
|
typedef struct
|
|
{
|
|
CEC_SIGNAL_FREETIME_T signalFreeTime; //!< Signal Free Time
|
|
CEC_RX_TOLERANCE_T RxTolerance; //!< Rx-Tolerance
|
|
CEC_STOP_RECEPTION_T stopReception; //!< Rx-Stop on Bit Rising Error
|
|
CEC_BIT_RISING_ERR_T bitRisingError; //!< Generate Error-Bit on Bit Rising Error
|
|
CEC_LONG_PERIOD_ERR_T longPeriodError; //!< Generate Error-Bit on Long Bit Period Error
|
|
CEC_BROADCAST_NO_ERR_T broadcastrNoGen; //!< Avoid Error-Bit Generation in Broadcast
|
|
CEC_SIGNAL_FREETIME_OPTION_T signalFreeTimeOption;//!< Signal Free Time optional
|
|
}CEC_Config_T;
|
|
|
|
/**@} end of group CEC_Structure*/
|
|
|
|
|
|
/** @addtogroup CEC_Fuctions Fuctions
|
|
@{
|
|
*/
|
|
|
|
/** CEC reset and configuration */
|
|
void CEC_Reset(void);
|
|
void CEC_Config(CEC_Config_T* cecConfig);
|
|
void CEC_ConfigStructInit(CEC_Config_T* cecConfig);
|
|
void CEC_Enable(void);
|
|
void CEC_Disable(void);
|
|
void CEC_EnableListenMode(void);
|
|
void CEC_DisableListenMode(void);
|
|
void CEC_ConfigOwnAddress(uint8_t ownAddress);
|
|
void CEC_ClearQwnAddress(void);
|
|
|
|
/** Transmit and receive */
|
|
void CEC_TxData(uint8_t Data);
|
|
uint8_t CEC_RxData(void);
|
|
|
|
/** Config Message */
|
|
void CEC_StartNewMessage(void);
|
|
void CEC_CompleteMessage(void);
|
|
|
|
/** Interrupt and Flag*/
|
|
void CEC_EnableInterrupt(uint32_t interrupt);
|
|
void CEC_DisableInterrupt(uint32_t interrupt);
|
|
uint8_t CEC_ReadStatusFlag(uint32_t flag);
|
|
void CEC_ClearStatusFlag(uint32_t flag);
|
|
uint8_t CEC_ReadIntFlag(uint16_t flag);
|
|
void CEC_ClearIntFlag(uint16_t flag);
|
|
|
|
/**@} end of group CEC_Fuctions*/
|
|
/**@} end of group CEC_Driver */
|
|
/**@} end of group Peripherals_Library*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __CEC_H */
|
|
|
|
|