![]() |
PDL for FM0+
Version1.0
Peripheral Driverl Library for FM0+
|
00001 /******************************************************************************* 00002 * Copyright (C) 2013 Spansion LLC. All Rights Reserved. 00003 * 00004 * This software is owned and published by: 00005 * Spansion LLC, 915 DeGuigne Dr. Sunnyvale, CA 94088-3453 ("Spansion"). 00006 * 00007 * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND 00008 * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. 00009 * 00010 * This software contains source code for use with Spansion 00011 * components. This software is licensed by Spansion to be adapted only 00012 * for use in systems utilizing Spansion components. Spansion shall not be 00013 * responsible for misuse or illegal use of this software for devices not 00014 * supported herein. Spansion is providing this software "AS IS" and will 00015 * not be responsible for issues arising from incorrect user implementation 00016 * of the software. 00017 * 00018 * SPANSION MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE, 00019 * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS), 00020 * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING, 00021 * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED 00022 * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED 00023 * WARRANTY OF NONINFRINGEMENT. 00024 * SPANSION SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, 00025 * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT 00026 * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, 00027 * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR 00028 * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT, 00029 * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, 00030 * SAVINGS OR PROFITS, 00031 * EVEN IF SPANSION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 00032 * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR 00033 * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED 00034 * FROM, THE SOFTWARE. 00035 * 00036 * This software may be replicated in part or whole for the licensed use, 00037 * with the restriction that this Disclaimer and Copyright notice must be 00038 * included with each copy of this software, whether used in part or whole, 00039 * at all times. 00040 */ 00041 /******************************************************************************/ 00052 /*---------------------------------------------------------------------------*/ 00053 /* include files */ 00054 /*---------------------------------------------------------------------------*/ 00055 #include "csv.h" 00056 00057 #if (defined(PDL_PERIPHERAL_CSV_ACTIVE)) 00058 /*---------------------------------------------------------------------------*/ 00059 /* local defines */ 00060 /*---------------------------------------------------------------------------*/ 00061 /*---------------------------------------------------------------------------*/ 00062 /* local datatypes */ 00063 /*---------------------------------------------------------------------------*/ 00064 /*---------------------------------------------------------------------------*/ 00065 /* local data */ 00066 /*---------------------------------------------------------------------------*/ 00067 #if (PDL_INTERRUPT_ENABLE_CSV == PDL_ON) 00068 00069 static fn_fcs_int_callback *m_pfnIntCallback = NULL; 00070 #endif 00071 00072 /*---------------------------------------------------------------------------*/ 00073 /* local functions prototypes */ 00074 /*---------------------------------------------------------------------------*/ 00075 /*---------------------------------------------------------------------------*/ 00076 /* global data */ 00077 /*---------------------------------------------------------------------------*/ 00078 /*---------------------------------------------------------------------------*/ 00079 /* global functions */ 00080 /*---------------------------------------------------------------------------*/ 00081 00082 #if (PDL_INTERRUPT_ENABLE_CSV == PDL_ON) 00083 00088 void Csv_IrqHandler(void) 00089 { 00090 bFM0P_CRG_INT_CLR_FCSC = 1; 00091 m_pfnIntCallback(); 00092 } 00093 00099 en_result_t Csv_EnableFcsInt(fn_fcs_int_callback* pfnIntCallback) 00100 { 00101 if(pfnIntCallback == NULL) 00102 { 00103 return ErrorInvalidParameter; 00104 } 00105 00106 m_pfnIntCallback = pfnIntCallback; 00107 bFM0P_CRG_INT_ENR_FCSE = 1; 00108 00109 NVIC_ClearPendingIRQ(CSV_IRQn); 00110 NVIC_EnableIRQ(CSV_IRQn); 00111 NVIC_SetPriority(CSV_IRQn, PDL_IRQ_LEVEL_CSV); 00112 00113 return Ok; 00114 } 00115 00121 void Csv_DisableFcsInt(void) 00122 { 00123 bFM0P_CRG_INT_ENR_FCSE = 0; 00124 00125 NVIC_ClearPendingIRQ(CSV_IRQn); 00126 NVIC_DisableIRQ(CSV_IRQn); 00127 NVIC_SetPriority(CSV_IRQn, PDL_DEFAULT_INTERRUPT_LEVEL); 00128 00129 } 00130 #endif 00131 00139 void Csv_EnableMainCsv(void) 00140 { 00141 bFM0P_CRG_CSV_CTL_MCSVE = 1; 00142 } 00143 00149 void Csv_DisableMainCsv(void) 00150 { 00151 bFM0P_CRG_CSV_CTL_MCSVE = 0; 00152 } 00153 00161 void Csv_EnableSubCsv(void) 00162 { 00163 bFM0P_CRG_CSV_CTL_SCSVE = 1; 00164 } 00165 00171 void Csv_DisableSubCsv(void) 00172 { 00173 bFM0P_CRG_CSV_CTL_SCSVE = 0; 00174 } 00175 00185 uint8_t Csv_GetCsvFailCause(stc_csv_status_t* pstcCsvStatus) 00186 { 00187 uint8_t u8Status; 00188 00189 u8Status = FM0P_CRG->CSV_STR; 00190 00191 if((u8Status & 0x01) == 0x01) 00192 { 00193 pstcCsvStatus->bCsvMainClockStatus = TRUE; 00194 } 00195 else 00196 { 00197 pstcCsvStatus->bCsvMainClockStatus = FALSE; 00198 } 00199 00200 if((u8Status & 0x02) == 0x02) 00201 { 00202 pstcCsvStatus->bCsvSubClockStatus = TRUE; 00203 } 00204 else 00205 { 00206 pstcCsvStatus->bCsvSubClockStatus = FALSE; 00207 } 00208 00209 return Ok;; 00210 } 00211 00217 void Csv_EnableFcs(void) 00218 { 00219 bFM0P_CRG_CSV_CTL_FCSDE = 1; 00220 } 00221 00227 void Csv_DisableFcs(void) 00228 { 00229 bFM0P_CRG_CSV_CTL_FCSDE = 0; 00230 } 00231 00237 void Csv_EnableFcsReset(void) 00238 { 00239 bFM0P_CRG_CSV_CTL_FCSRE = 1; 00240 } 00241 00242 00248 void Csv_DisableFcsReset(void) 00249 { 00250 bFM0P_CRG_CSV_CTL_FCSRE = 0; 00251 } 00252 00258 void Csv_ClrFcsIntFlag(void) 00259 { 00260 bFM0P_CRG_INT_CLR_FCSC = 1; 00261 } 00262 00272 uint8_t Csv_GetFcsIntFlag(void) 00273 { 00274 return bFM0P_CRG_INT_STR_FCSI; 00275 } 00276 00290 en_result_t Csv_SetFcsCrDiv(en_fcs_cr_div_t enDiv) 00291 { 00292 if ((enDiv != FcsCrDiv256) && 00293 (enDiv != FcsCrDiv512) && 00294 (enDiv != FcsCrDiv1024)) 00295 { 00296 return ErrorInvalidParameter; 00297 } 00298 00299 FM0P_CRG->CSV_CTL &= 0x0fffu; 00300 FM0P_CRG->CSV_CTL |= (enDiv<<12u); 00301 00302 return Ok; 00303 } 00304 00305 00314 void Csv_SetFcsDetectRange(uint16_t u16LowerVal, uint16_t u16UpperVal) 00315 { 00316 FM0P_CRG->FCSWL_CTL = u16LowerVal; 00317 FM0P_CRG->FCSWH_CTL = u16UpperVal; 00318 } 00319 00327 uint16_t Csv_GetFcsDetectCount(void) 00328 { 00329 return FM0P_CRG->FCSWD_CTL; 00330 } 00331 00332 00333 #endif 00334 00335 /*****************************************************************************/ 00336 /* END OF FILE */