iLLD_TC27xC  1.0
IfxHssl.h
Go to the documentation of this file.
1 /**
2  * \file IfxHssl.h
3  * \brief HSSL basic functionality
4  * \ingroup IfxLld_Hssl
5  *
6  * \version iLLD_0_1_0_10
7  * \copyright Copyright (c) 2013 Infineon Technologies AG. All rights reserved.
8  *
9  *
10  * IMPORTANT NOTICE
11  *
12  *
13  * Infineon Technologies AG (Infineon) is supplying this file for use
14  * exclusively with Infineon's microcontroller products. This file can be freely
15  * distributed within development tools that are supporting such microcontroller
16  * products.
17  *
18  * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
19  * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
20  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
21  * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
22  * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
23  *
24  *
25  * \defgroup IfxLld_Hssl HSSL
26  * \ingroup IfxLld
27  * \defgroup IfxLld_Hssl_Std Standard Driver
28  * \ingroup IfxLld_Hssl
29  * \defgroup IfxLld_Hssl_Std_Enumerations Enumerations
30  * \ingroup IfxLld_Hssl_Std
31  * \defgroup IfxLld_Hssl_Std_ModuleFunctions Module Functions
32  * \ingroup IfxLld_Hssl_Std
33  */
34 
35 #ifndef IFXHSSL_H
36 #define IFXHSSL_H 1
37 
38 /******************************************************************************/
39 /*----------------------------------Includes----------------------------------*/
40 /******************************************************************************/
41 
42 #include "_Impl/IfxHssl_cfg.h"
43 
44 /******************************************************************************/
45 /*--------------------------------Enumerations--------------------------------*/
46 /******************************************************************************/
47 
48 /** \addtogroup IfxLld_Hssl_Std_Enumerations
49  * \{ */
50 /** \brief channel selection
51  */
52 typedef enum
53 {
54  IfxHssl_ChannelId_0, /**< \brief Channel 0 */
55  IfxHssl_ChannelId_1, /**< \brief Channel 1 */
56  IfxHssl_ChannelId_2, /**< \brief Channel 2 */
57  IfxHssl_ChannelId_3, /**< \brief Channel 3 */
59 
60 /** \brief SysClk / Reference Clock Frequency rate
61  * Definition in Ifx_HSCT.INIT.B.SRCF
62  */
63 typedef enum
64 {
65  IfxHssl_ClockFrequencyRate_20Mhz = 0, /**< \brief SysClk/ RefClk is 20 MHz (Divider 1/1) */
66  IfxHssl_ClockFrequencyRate_10Mhz = 1 /**< \brief SysClk/ RefClk is 10 MHz (Divider 1/2) */
68 
69 /** \brief communication command selection
70  * Definition in Ifx_HSSL.I.ICON.B.RWT
71  */
72 typedef enum
73 {
74  IfxHssl_Command_noAction = 0, /**< \brief command no action */
75  IfxHssl_Command_readFrame = 1, /**< \brief command read frame */
76  IfxHssl_Command_writeFrame = 2, /**< \brief command write frame */
77  IfxHssl_Command_triggerFrame = 3 /**< \brief command trigger frame */
79 
80 /** \brief predefined control command payload values
81  */
82 typedef enum
83 {
84  IfxHssl_ControlCommand_ping = 0, /**< \brief ping (send by master. Slave sends back a fixed 32-bit payload result.) */
85  IfxHssl_ControlCommand_highSpeedClockStart = 2, /**< \brief slave interface clock multiplier start (in preparation for high speed mode) */
86  IfxHssl_ControlCommand_highSpeedClockStop = 4, /**< \brief slave interface clock multiplier stop (after fallback from high speed mode) */
87  IfxHssl_ControlCommand_lowSpeedTransmission = 8, /**< \brief select low speed mode for transfers from the Master to the Slave */
88  IfxHssl_ControlCommand_highSpeedTransmission = 16, /**< \brief select high speed mode for transfers from the Master to the Slave */
89  IfxHssl_ControlCommand_lowSpeedReception = 32, /**< \brief select low speed mode for transfers from the Slave to the Master */
90  IfxHssl_ControlCommand_mediumSpeedReception = 64, /**< \brief select medium speed mode for transfers from the Slave to the master */
91  IfxHssl_ControlCommand_highSpeedReception = 128, /**< \brief select high speed mode for transfers from the Slave to the master */
92  IfxHssl_ControlCommand_enableReception = 49, /**< \brief enable Slave interface transmitter */
93  IfxHssl_ControlCommand_disableReception = 50, /**< \brief disable Slave interface transmitter */
94  IfxHssl_ControlCommand_turnOnClockTestMode = 52, /**< \brief turn on clock test mode */
95  IfxHssl_ControlCommand_turnOffClockTestMode = 56, /**< \brief turn off clock test mode */
96  IfxHssl_ControlCommand_turnOnPayloadLoopback = 255 /**< \brief turn on payload loopback */
98 
99 /** \brief Defines the length of the data in bits of the write and read command.
100  * Definition in Ifx_HSSL.I.ICON.B.DATLEN
101  */
102 typedef enum
103 {
104  IfxHssl_DataLength_8bit = 0, /**< \brief 8 bit */
105  IfxHssl_DataLength_16bit = 1, /**< \brief 16 bit */
106  IfxHssl_DataLength_32bit = 2 /**< \brief 32 bit */
108 
109 /** \brief interface mode (master IF /slave IF)
110  * Definition in Ifx_HSCT.INIT.B.IFM
111  */
112 typedef enum
113 {
114  IfxHssl_InterfaceMode_master = 0, /**< \brief master IF mode */
115  IfxHssl_InterfaceMode_slave = 1 /**< \brief slave IF mode */
117 
118 /** \brief master mode receive speed
119  * Definition in Ifx_HSCT.IFCTRL.B.MRXSPEED
120  */
121 typedef enum
122 {
123  IfxHssl_MasterModeRxSpeed_lowSpeed = 0, /**< \brief low speed */
124  IfxHssl_MasterModeRxSpeed_mediumSpeed = 1, /**< \brief medium speed */
125  IfxHssl_MasterModeRxSpeed_highSpeed = 2 /**< \brief high speed */
127 
128 /** \brief master mode transmit speed
129  * Definition in Ifx_HSCT.IFCTRL.B.MTXSPEED
130  */
131 typedef enum
132 {
133  IfxHssl_MasterModeTxSpeed_lowSpeed = 0, /**< \brief low speed */
134  IfxHssl_MasterModeTxSpeed_highSpeed = 2 /**< \brief high speed */
136 
137 /** \brief PLL reference clock
138  * Definition in Ifx_HSCT.CONFIGPHY.B.OSCCLKEN
139  */
140 typedef enum
141 {
142  IfxHssl_PllReferenceClock_hsctSystemClockInput = 0, /**< \brief hsct system clock input (HSCT SysClk_i) */
143  IfxHssl_PllReferenceClock_oscillatorInput = 1 /**< \brief oscillator input */
145 
146 /** \brief streaming mode ( single / continuous )
147  * Definition in Ifx_HSSL.CFG.B.SMT/SMR
148  */
149 typedef enum
150 {
151  IfxHssl_StreamingMode_continuous = 0, /**< \brief streaming mode continuous (with two memory blocks) */
152  IfxHssl_StreamingMode_single = 1 /**< \brief streaming mode single (with one memory block) */
154 
155 /** \} */
156 
157 /** \addtogroup IfxLld_Hssl_Std_ModuleFunctions
158  * \{ */
159 
160 /******************************************************************************/
161 /*-------------------------Global Function Prototypes-------------------------*/
162 /******************************************************************************/
163 
164 /** \brief Enables hsct module
165  * \param hsct pointer to HSCT registers
166  * \return None
167  */
168 IFX_EXTERN void IfxHssl_enableHsctModule(Ifx_HSCT *hsct);
169 
170 /** \brief Enables the hssl module
171  * \param hssl pointer to HSSl registers
172  * \return None
173  */
174 IFX_EXTERN void IfxHssl_enableHsslModule(Ifx_HSSL *hssl);
175 
176 /** \} */
177 
178 #endif /* IFXHSSL_H */