Qorivva MCP5643L Basic Drivers User's Guide Document Number: KTMPC5643DBSWUG Rev 1.0 Qorivva MCP5643L Basic Drivers, Rev. 1.0 2 Freescale Semiconductor, Inc. Contents Section number Title Page Chapter 1 Introduction 1.1 Overview.......................................................................................................................................................................9 1.2 About this Manual.........................................................................................................................................................9 1.3 Acronyms and Definitions............................................................................................................................................9 1.4 Reference List...............................................................................................................................................................10 Chapter 2 ADC driver 2.1 Function ADC_IsNormalConvRunning.......................................................................................................................11 2.2 Function ADC_IsInjectedConvAborted.......................................................................................................................11 2.3 Function ADC_IsInjectedConvRunning.......................................................................................................................12 2.4 Function ADC_IsCTUconvRunning............................................................................................................................13 2.5 Function ADC_GetCurrentChannelAddress................................................................................................................13 2.6 Function ADC_GetAutoClockOffState........................................................................................................................14 2.7 Function ADC_GetStatus.............................................................................................................................................15 2.8 Function ADC_Init.......................................................................................................................................................15 2.9 Function ADC_StartNormalConversion.......................................................................................................................17 2.10 Function ADC_StopConversion...................................................................................................................................17 2.11 Function ADC_StartInjectedConversion......................................................................................................................18 2.12 Function ADC_SetOneShotMode................................................................................................................................18 2.13 Function ADC_SetScanMode.......................................................................................................................................19 2.14 Function ADC_AutoClockOffEnable...........................................................................................................................19 2.15 Function ADC_AutoClockOffDisable..........................................................................................................................20 2.16 Function ADC_GetChannelValue................................................................................................................................20 2.17 Function ADC_SetInt...................................................................................................................................................21 2.18 Function ADC_ClearEOCflag......................................................................................................................................22 2.19 Function ADC_ClearAllEOCflags...............................................................................................................................23 2.20 Function ADC_ClearEOCTUflag.................................................................................................................................24 Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 3 Section number Title Page 2.21 Function ADC_ClearJEOCflag....................................................................................................................................24 2.22 Function ADC_ClearJECHflag....................................................................................................................................25 2.23 Function ADC_ClearECHflag......................................................................................................................................25 2.24 Function ADC_SetThldRegister...................................................................................................................................26 2.25 Function ADC_SetThldForChannel.............................................................................................................................27 2.26 Function ADC_ClearThldFlags....................................................................................................................................27 2.27 Function ADC_SetVDDforPresampling......................................................................................................................28 2.28 Function ADC_SetVSSforPresampling........................................................................................................................29 2.29 Function ADC_DisableSampleBypass.........................................................................................................................30 2.30 Function ADC_EnableSampleBypass..........................................................................................................................30 2.31 Function ADC_SetTiming............................................................................................................................................31 2.32 Function ADC_SetSamplingTime................................................................................................................................32 2.33 Function ADC_SetEvaluationTime..............................................................................................................................33 Chapter 3 CAN driver 3.1 Function CAN_ConfigurePads.....................................................................................................................................35 3.2 Function CAN_Init.......................................................................................................................................................35 3.3 Function CAN_Send.....................................................................................................................................................36 3.4 Function CAN_Stop.....................................................................................................................................................37 Chapter 4 DSPI driver 4.1 Function DSPI_Init.......................................................................................................................................................39 4.2 Function DSPI_Send.....................................................................................................................................................40 4.3 Function DSPI_Read....................................................................................................................................................41 4.4 Function DSPI_RoundBaudRate..................................................................................................................................42 4.5 Function DSPI_Enable..................................................................................................................................................42 4.6 Function DSPI_Disable................................................................................................................................................43 4.7 Function DSPI_ChangeBaudRateType........................................................................................................................43 4.8 Function DSPI_ChangeFrameSize...............................................................................................................................44 Qorivva MCP5643L Basic Drivers, Rev. 1.0 4 Freescale Semiconductor, Inc. Section number Title Page 4.9 Function DSPI_SetPhase..............................................................................................................................................45 4.10 Function DSPI_SetPolarity...........................................................................................................................................45 4.11 Function DSPI_EnableTxFIFO....................................................................................................................................46 4.12 Function DSPI_DisableTxFIFO...................................................................................................................................46 4.13 Function DSPI_EnableRxFIFO....................................................................................................................................47 4.14 Function DSPI_DisableRxFIFO...................................................................................................................................47 4.15 Function DSPI_SendWithInt........................................................................................................................................48 4.16 Function DSPI_ReadWithInt........................................................................................................................................49 4.17 Function DSPI_ClearRFDF..........................................................................................................................................49 Chapter 5 FCCU driver 5.1 Function FCCU_ClearCF.............................................................................................................................................51 5.2 Function FCCU_ClearNCF..........................................................................................................................................51 5.3 Function FCCU_SetProtocol........................................................................................................................................52 5.4 Function FCCU_GenerateCF........................................................................................................................................52 5.5 Function FCCU_GenerateNCF.....................................................................................................................................53 Chapter 6 INTC driver 6.1 Function INTC_Init......................................................................................................................................................55 Chapter 7 LINFLEX driver 7.1 Function LINFLEX_ChangeBaudRate.........................................................................................................................57 7.2 Function LINFLEX_ConfigurePads.............................................................................................................................58 7.3 Function LINFLEX_Sleep............................................................................................................................................58 7.4 Function LINFLEX_WakeUp......................................................................................................................................59 7.5 Function LINFLEX_DisableTxUART.........................................................................................................................59 7.6 Function LINFLEX_DisableRxUART.........................................................................................................................60 7.7 Function LINFLEX_EnableTxUART..........................................................................................................................61 7.8 Function LINFLEX_EnableRxUART..........................................................................................................................61 7.9 Function LINFLEX_EnableInt.....................................................................................................................................62 Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 5 Section number Title Page 7.10 Function LINFLEX_InitUART....................................................................................................................................62 7.11 Function LINFLEX_InitRxBuffer................................................................................................................................63 7.12 Function LINFLEX_SendUART..................................................................................................................................63 7.13 Function LINFLEX_ReadUART..................................................................................................................................64 7.14 Function LINFLEX_GetReceiveFlagUART................................................................................................................65 7.15 Function LINFLEX_ClearReceiveFlagUART.............................................................................................................66 7.16 Function LINFLEX_EnableDRFint..............................................................................................................................67 7.17 Function LINFLEX_GetParityErrorUART..................................................................................................................67 7.18 Function LINFLEX_ClearParityError..........................................................................................................................68 7.19 Function LINFLEX_IsIdle............................................................................................................................................68 7.20 Function LINFLEX_InitLIN........................................................................................................................................69 7.21 Function LINFLEX_SendFrameLIN............................................................................................................................70 7.22 Function LINFLEX_SendHeaderLIN..........................................................................................................................71 7.23 Function LINFLEX_SendWordUART.........................................................................................................................72 Chapter 8 ME driver 8.1 Function ME_Init..........................................................................................................................................................73 8.2 Function ME_ModeManager........................................................................................................................................73 Chapter 9 PIT driver 9.1 Function PIT_Init..........................................................................................................................................................75 9.2 Function PIT_Setup......................................................................................................................................................75 9.3 Function PIT_EnableInt................................................................................................................................................76 9.4 Function PIT_EnableChannel.......................................................................................................................................76 9.5 Function PIT_Disable...................................................................................................................................................77 9.6 Function PIT_GetFlag..................................................................................................................................................77 9.7 Function PIT_ClearFlag................................................................................................................................................78 9.8 Function PIT_DisableChannel......................................................................................................................................78 9.9 Function PIT_IsChannelEnabled..................................................................................................................................79 Qorivva MCP5643L Basic Drivers, Rev. 1.0 6 Freescale Semiconductor, Inc. Section number Title Page Chapter 10 SIUL driver 10.1 Function SIUL_DigitalInput.........................................................................................................................................81 10.2 Function SIUL_AnalogInput........................................................................................................................................83 10.3 Function SIUL_DigitalOutput......................................................................................................................................83 10.4 Function SIUL_DigitalIO.............................................................................................................................................84 10.5 Function SIUL_ToggleIO.............................................................................................................................................84 10.6 Function SIUL_EnableExtInt.......................................................................................................................................85 10.7 Function SIUL_EnableExtIntRisingEdge.....................................................................................................................86 10.8 Function SIUL_EnableExtIntFallingEdge....................................................................................................................87 10.9 Function SIUL_GetExtIntFlag......................................................................................................................................87 10.10 Function SIUL_ClearExtIntFlag...................................................................................................................................88 10.11 Function SIUL_SetPad.................................................................................................................................................88 10.12 Function SIUL_ClearPad..............................................................................................................................................89 Chapter 11 Integration 11.1 Compiler Options..........................................................................................................................................................91 11.2 Assembler Options........................................................................................................................................................93 11.3 Linker Options..............................................................................................................................................................94 Chapter 12 Revision History 12.1 Revision History...........................................................................................................................................................99 Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 7 Qorivva MCP5643L Basic Drivers, Rev. 1.0 8 Freescale Semiconductor, Inc. Chapter 1 Introduction Basic software drivers were created for evaluation and demonstration purposes. The library consists of drivers for basic modules included in the Qorivva MPC5643L microcontroller (for each module a .c and .h files are included). 1.1 Overview The Basic Software driver package was created as a part of demo software for KITMPC5643DBEVM Daughter Board (EVM). This package was developped for the Freescale's MCU MPC5643L, which is populated on the EVM. Purpose of this software package is not to cover all modules included in the MPC5643L MCU, but to enable our customers to start their development rapidly and easily. 1.2 About this Manual This User Guide employs the following typographical conventions: • Boldface type: Bold is used for important terms, notes and warnings. • Courier font: Courier typeface is used for code snippets in the text. Note that C language modifiers such "const" or "volatile" are sometimes omitted to improve readability of the presented code. • Italics type: Italics is used for configuration items names. • CAPS type: Capital letters are used for microcontroller module names. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 9 Reference List 1.3 Acronyms and Definitions This table provides acronyms and definitions used within this document. The table does not contain all acronyms that are names of the microcontroller's registers and modules. These acronyms can be found in the MPC5643L Microcontroller Reference Manual. Table 1-1. Acronyms and Definitions Term Definition API Application Programming Interface ADC Analog-to-Digital Converter module CAN Controller Area Network DSPI Deserial Serial Peripheral Interface FCCU Fault Collection and Control Unit INTC Interrupt Controller LINFLEX Serial communication interface module ME Mode Entry module PIT Periodic Interrupt Timer SIUL System Integration Unit Lite INT Interrupt IO Input/Output IDE Integrated Development Environment EVM Enhanced Evaluation Board KITMPC5643DBEVM Evaluation Board Including the MPC5643L 1.4 Reference List Doc. Number MPC5643LRM Table 1-2. Reference List Description MPC5643L Microcontroller Reference Manual Version (http://www.freescale.com/docs/pcn_attachments/ 15818_MPC5643LRM.pdf) Qorivva MCP5643L Basic Drivers, Rev. 1.0 10 Freescale Semiconductor, Inc. Chapter 2 ADC driver The ADC driver provides functions to process simple analog to digital operations such as initialization, conversion either in Normal or Injected mode etc. 2.1 Function ADC_IsNormalConvRunning The function ADC_IsNormalConvRunning indicates whether the Normal conversion of the ADCx is in process. Prototype: uint8_t ADC_IsNormalConvRunning(uint8_t nbADC); Table 2-1. ADC_IsNormalConvRunning Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Return: • "1" - if normal conversion is in process • "0" - if normal conversion has stopped Include : ADC.h Description: This function returns a 1 if the normal conversion is in process (if NSTART bit is set); otherwise it returns 0. Remark: ADCx must be initialized before using of this function using of this function (see ADC_Init function for details). Code sample: ADC_IsNormalConvRunning(1); • Command returns NSTART status bit of ADC1. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 11 Function ADC_IsInjectedConvRunning 2.2 Function ADC_IsInjectedConvAborted The function ADC_IsInjectedConvAborted indicates whether the Injected conversion of the ADCx was aborted. Prototype: uint8_t ADC_IsInjectedConvAborted(uint8_t nbADC); Table 2-2. ADC_IsInjectedConvAborted Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Return: • "1" - if injected conversion was aborted • "0" - if injected conversion was not aborted Include : ADC.h Description : This function returns JABORT status bit. This status bit is used to signal that an injected conversion has been aborted. This bit is reset when a new injected conversion starts. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_IsInjectedConvAborted(0); • Command returns JABORT status bit of ADC0. 2.3 Function ADC_IsInjectedConvRunning The function ADC_IsInjectedConvRunning indicates whether the Injected conversion of the ADCx is in process. Prototype: uint8_t ADC_IsInjectedConvRunning(uint8_t nbADC); Table 2-3. ADC_IsInjectedConvRunning Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Return: - "1" - if injected conversion is in process • "0" - if injected conversion has stopped Include : ADC.h Qorivva MCP5643L Basic Drivers, Rev. 1.0 12 Freescale Semiconductor, Inc. Chapter 2 ADC driver Description : This function returns 1 if injected conversion is in process (if JSTART bit is set), otherwise it returns 0. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_IsInjectedConvRunning(1); • Command returns JSTART status bit of ADC1. 2.4 Function ADC_IsCTUconvRunning The function ADC_IsCTUconvRunning indicates an ongoing CTU conversion for ADC. Prototype: uint8_t ADC_IsCTUconvRunning(uint8_t nbADC); Table 2-4. ADC_IsCTUconvRunning Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Return: • "1" - if CTU conversion is ongoing • "0" - if CTU conversion has stopped Include : ADC.h Description : This function returns the CTUSTART status bit. It is used to signal a CTU conversion is ongoing, and is set when a CTU trigger pulse is received and the CTU conversion starts. This bit automatically resets when the conversion is completed and the CTU trigger mode is enabled. Otherwise, if the Control mode is enabled, it resets when the CTU is disabled (CTUEN set to 0). Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_IsCTUconvRunning(0); • Command returns CTUSTART status bit of ADC0. 2.5 Function ADC_GetCurrentChannelAddress The function ADC_GetCurrentChannelAddress returns a number of ADC channels that are currently in the conversion. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 13 Function ADC_GetAutoClockOffState Prototype: uint8_t ADC_GetCurrentChannelAddress(uint8_t nbADC); Table 2-5. ADC_GetCurrentChannelAddress Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Return: Number of the channel currently in conversion (from 0 till 15) Include : ADC.h Description : This function returns address (number) of the channel, which is actually being converted. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_GetCurrentChannelAddress(1); • Command returns number of the channel currently being converted in ADC1. 2.6 Function ADC_GetAutoClockOffState The function ADC_GetAutoClockOffState returns status of the Auto clock off state bit for ADC. Prototype: uint8_t ADC_GetAutoClockOffState(uint8_t nbADC); Table 2-6. ADC_GetAutoClockOffState Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Return: • "1" - if auto-clock-off feature is disabled • "0" - if auto-clock-off feature is enabled Include : ADC.h Description : This function returns status of the auto-clock-off feature (ACK0 status bit). Remark: Auto-clock-off feature allows processor to switch off CLK for ADC automatically if no conversion is ongoing. This reduces power consumption without switching to the power down mode. ADCx must be initialized before using of this function (see ADC_Init function for details). Qorivva MCP5643L Basic Drivers, Rev. 1.0 14 Freescale Semiconductor, Inc. Chapter 2 ADC driver Code sample: ADC_GetAutoClockOffState(0); • Command returns ACK0 status bit of ADC0. 2.7 Function ADC_GetStatus The function ADC_GetStatus returns the current status of ADC. Prototype: uint8_t ADC_GetStatus(uint8_t nbADC); Table 2-7. ADC_GetStatus Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Return: • "000" - Idle • "001" - Power-down • "010" - Wait state • "011" - X • "100" - Sample • "101" - X • "110" - Conversion • "111" - X Include : ADC.h Description : This function returns status of the specified ADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_GetStatus(1); • Command returns status of ADC1. 2.8 Function ADC_Init The function ADC_Init initializes registers of ADC. Prototype: void ADC_Init(uint8_t nbADC, uint64_t chMaskNormal, uint64_t chMaskInjected, uint32_t config); Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 15 Function ADC_Init Table 2-8. ADC_Init Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint64_t chMaskInjected input Mask of channels for injected conversion. Predefined values: • CHSmask - Mask for ALL standard channels • CH0Smask - Mask for standard channel no.0 • CH1Smask - Mask for standard channel no.1 • CH2Smask - Mask for standard channel no.2 • CH3Smask - Mask for standard channel no.3 • CH4Smask - Mask for standard channel no.4 • CH5Smask - Mask for standard channel no.5 • CH6Smask - Mask for standard channel no.6 • CH7Smask - Mask for standard channel no.7 • CH8Smask - Mask for standard channel no.8 • ch.9 - DO NOT USE - internally connected • ch.10 - DO NOT USE - internally connected • CH11Smask - Mask for standard channel no.11 • CH12Smask - Mask for standard channel no.12 • CH13Smask - Mask for standard channel no.13 • CH14Smask - Mask for standard channel no.14 • ch.15 - DO NOT USE - internally connected to TSENS_0 uint64_t chMaskNormal input Mask of channels for normal conversion. Predefined values are the same as for injected conversion. uint32_t config input Configuration setting for the Main Control Register (MCR). • OWRITE_DIS - Prevents overwrite of unread converted data. New result is discarded. • OWRITE_EN - Enables converted data to be overwritten by a new conversion. • ALIGN_R - The conversion data is written right-aligned. • ALIGN_L - Data is left-aligned (from 15 to (15 resolution + 1)). • ONE_SHOT - One Shot Mode - Configures the normal conversion of one chain. • SCAN - Scan Mode - Configures continuous chain conversion mode. When the programmed chain conversion is finished it restarts immediately. • PWDN_DIS - ADC is in normal mode. • PWDN_EN - ADC has been requested to power down. • ACKO_EN - Auto clock off is enabled. • ACKO_DIS - Auto clock off is disabled. • DEFAULT_ADC - Default configuration defined as follows: Include : ADC.h Description : This function initializes registers of the ADCx and activates channels, which are masked in function parameters. Configuration of the registers can be changed through the config parameter. Initialization of ADC registers. Remark: Configuration parameters (instead of DEFAULT_ADC) as well as channel masks should be combined arbitrarily using logical OR (|) operator, please do not use DEFAULT_ADC with other parameters. Qorivva MCP5643L Basic Drivers, Rev. 1.0 16 Freescale Semiconductor, Inc. Chapter 2 ADC driver Code sample1: ADC_Init(0, CH0Smask | CH5Smask, 0, DEFAULT_ADC); • Command will initialize channels 0 and 5 of ADC0 in injected mode with DEFAULT configuration. Code sample2: ADC_Init(1, CH0Smask, CH2Smask | CH4Smask, OWRITE_DIS | ONE_SHOT | PWDN_DIS | ALIGN_R | ACKO_DIS); • This command initializes the channels of the ADC1 (channel 0 in injected mode, channels 2 and 4 in normal mode) with the specified parameters (overwrite disabled, one shot mode, power down disabled, result right aligned, auto clock off disabled). 2.9 Function ADC_StartNormalConversion The function ADC_StartNormalConversion starts conversion of ADC in a Normal mode. Prototype: void ADC_StartNormalConversion(uint8_t nbADC, uint32_t chMaskNormal); Table 2-9. ADC_StartNormalConversion Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint32_t chMaskNormal input Mask with channels used for Normal conversion. Include : ADC.h Description : This function starts normal conversion ofthe ADC specified by the nbADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_StartNormalConversion(0); • Command starts normal conversion of ADC0. 2.10 Function ADC_StopConversion The function ADC_StopConversion stops all on-going conversions of ADC immediately. Prototype: void ADC_StopConversion(uint8_t nbADC); Table 2-10. ADC_StopConversion Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 17 Function ADC_StartInjectedConversion Include : ADC.h Description : This function stops all conversions (injected as well as normal) of ADC specified by the nbADC number immediately. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_StopConversion(1); • Command stops all conversions of ADC1. 2.11 Function ADC_StartInjectedConversion The function ADC_StartInjectedConversion starts conversion of ADC in the Injected mode. Prototype: void ADC_StartInjectedConversion(uint8_t nbADC, uint64_t chMaskInjected); Table 2-11. ADC_StartInjectedConversion Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint64_t chMaskInjected input Mask with channels used for Injected conversion. Include : ADC.h Description : This function starts injected conversion of ADC specified by the nbADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_StartInjectedConversion(0); • Command starts injected conversion of ADC0. 2.12 Function ADC_SetOneShotMode The function ADC_SetOneShotMode sets a One Shot conversion mode for the ADCx. Prototype: void ADC_SetOneShotMode(uint8_t nbADC); Qorivva MCP5643L Basic Drivers, Rev. 1.0 18 Freescale Semiconductor, Inc. Chapter 2 ADC driver Table 2-12. ADC_SetOneShotMode Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Include : ADC.h Description : This function sets one shot mode for ADC specified by the nbADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_SetOneShotMode(1); • Command sets one shot mode for ADC1. 2.13 Function ADC_SetScanMode The function ADC_SetScanMode sets a Cyclic conversion chain mode (Scan mode) for ADC. Prototype: void ADC_SetScanMode(uint8_t nbADC); Table 2-13. ADC_SetScanMode Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Include : ADC.h Description : This function sets cyclic conversion chain (scan mode) for ADC specified by the nbADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_SetScanMode(1); • Command sets one scan mode for ADC1. 2.14 Function ADC_AutoClockOffEnable The function ADC_AutoClockOffEnable enables Auto clock off feature for the ADCx. Prototype: void ADC_AutoClockOffEnable(uint8_t nbADC); Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 19 Function ADC_AutoClockOffDisable Table 2-14. ADC_AutoClockOffEnable Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Include : ADC.h Description : This function enables AutoClockOff feature for ADC specified by the nbADC. Remark: The AutoClockOff feature allows the processor to switch off CLK for ADC automatically, if no conversion is ongoing. This reduces power consumption without switching to the power down mode. ADCx must be initialized beforehand (see ADC_Init function for details). Code sample: ADC_AutoClockOffEnable(0); • Command enables the AutoClockOff feature for ADC0. 2.15 Function ADC_AutoClockOffDisable The function ADC_AutoClockOffDisable disables AutoClockOff feature for the ADCx. Prototype: void ADC_AutoClockOffDisable(uint8_t nbADC); Table 2-15. ADC_AutoClockOffDisable Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Include : ADC.h Description : This function disables the AutoClockOff feature for ADC specified by the nbADC. Remark: The AutoClockOff feature allows processor to switch off CLK for ADC automatically if no conversion is ongoing. This reduces power consumption without switching to the power down mode. the ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_AutoClockOffDisable(1); • Command disables AutoClockOff feature for ADC1. Qorivva MCP5643L Basic Drivers, Rev. 1.0 20 Freescale Semiconductor, Inc. Chapter 2 ADC driver 2.16 Function ADC_GetChannelValue The function ADC_GetChannelValue returns the value converted by the ADCx from the specified channel. Prototype: uint16_t ADC_GetChannelValue(uint8_t nbADC, uint32_t nbCH); Table 2-16. ADC_GetChannelValue Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint32_t nbCH input Number of the channel to be read. Include : ADC.h Description : This function waits until data of the specified channel is valid (conversion has been finished). Then it reads the 12-bit CDATA result and returns it. Remark: The function returns only right aligned data from the CDATA register. If the ADC is configured to be left aligned, this function will return only the eight lower bits shifted by four to the left. Code sample: ADC_GetChannelValue(1, 0); • Command returns result of the conversion for ADC1, channel 0. 2.17 Function ADC_SetInt The function ADC_SetInt sets interrupt masks for specified channels and flags for the ADCx. Prototype: void ADC_SetInt(uint8_t nbADC, uint32_t intFlagMask, uint32_t intChannelMask); Table 2-17. ADC_SetInt Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint32_t intFlagMask input Mask to enable different interrupt flags. Predefined values: • EOCTU_FLAG - End of CTU Conversion interrupt enable • JEOC_FLAG - End of Injected Channel Conversion interrupt enable • JECH_FLAG - End of Injected Chain Conversion interrupt enable • EOC_FLAG - End of Channel Conversion interrupt enable • ECH_FLAG - End of Chain Conversion interrupt enable Table continues on the next page... Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 21 Function ADC_ClearEOCflag Table 2-17. ADC_SetInt Arguments (continued) Type uint32_t Name intChannelMask Direction input Description Interrupt mask for channels. Predefined values: • CHSmask - Mask for ALL standard channels • CH0Smask - Mask for standard channel no.0 • CH1Smask - Mask for standard channel no.1 • CH2Smask - Mask for standard channel no.2 • CH3Smask - Mask for standard channel no.3 • CH4Smask - Mask for standard channel no.4 • CH5Smask - Mask for standard channel no.5 • CH6Smask - Mask for standard channel no.6 • CH7Smask - Mask for standard channel no.7 • CH8Smask - Mask for standard channel no.8 • ch.9 - DO NOT USE - internally connected • ch.10 - DO NOT USE - internally connected • CH11Smask - Mask for standard channel no.11 • CH12Smask - Mask for standard channel no.12 • CH13Smask - Mask for standard channel no.13 • CH14Smask - Mask for standard channel no.14 • ch.15 - DO NOT USE - internally connected to TSENS_0 Include : ADC.h Description : This function initializes interruption for specified ADC (nbADC) with masked flags (intFlagMask) for masked channels (intChannelMask). Remark: Interrupt masks as well as channel interrupt masks should be combined arbitrarily using logical OR (|) operator. ADCx has to be initialized before (see ADC_Init function for details). Code sample: ADC_SetInt(1, ECH_FLAG | EOC_FLAG, CH1Smask | CH2Smask | CH3Smask); • Command sets ECH and EOC interrupts for channels 1, 2 and 3 in ADC1. 2.18 Function ADC_ClearEOCflag The function ADC_ClearEOCflag clears End of Channel conversion flag for specified channels of the ADCx. Prototype: void ADC_ClearEOCflag(uint8_t nbADC, uint32_t intFlagClearMask); Table 2-18. ADC_ClearEOCflag Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Table continues on the next page... Qorivva MCP5643L Basic Drivers, Rev. 1.0 22 Freescale Semiconductor, Inc. Chapter 2 ADC driver Table 2-18. ADC_ClearEOCflag Arguments (continued) Type uint32_t Name intFlagClearMask Direction input Description The higher 16 bits (16 till 31) correspond to interrupt flags of 16 channels. Predefined values: • CHSmask - Mask for ALL standard channels • CH0Smask - Mask for standard channel no.0 • CH1Smask - Mask for standard channel no.1 • CH2Smask - Mask for standard channel no.2 • CH3Smask - Mask for standard channel no.3 • CH4Smask - Mask for standard channel no.4 • CH5Smask - Mask for standard channel no.5 • CH6Smask - Mask for standard channel no.6 • CH7Smask - Mask for standard channel no.7 • CH8Smask - Mask for standard channel no.8 • ch.9 - DO NOT USE - internally connected • ch.10 - DO NOT USE - internally connected • CH11Smask - Mask for standard channel no.11 • CH12Smask - Mask for standard channel no.12 • CH13Smask - Mask for standard channel no.13 • CH14Smask - Mask for standard channel no.14 • ch.15 - DO NOT USE - internally connected to TSENS_0 Include : ADC.h Description : This function clears the End of Channel Conversion (EOC) flags, which are specified by the intFlagClearMask. Remark: As a mask we can use directly 16-bit binary value (logical 1 will clear the flag, logical 0 will not make any influence) or predefined masks like in the previous cases. Each bit corresponds to 1 channel (bit no.16 corresponds to channel no.15, bit 31 to channel 0). Code sample: void ADC_ClearEOCflag(0, 0b101); • Command clears EOC flags of channels no.2 and 0 in ADC0 2.19 Function ADC_ClearAllEOCflags The function ADC_ClearAllEOCflags clears End of Channel conversion flag for all channels of the ADCx. Prototype: void ADC_ClearAllEOCflags(uint8_t nbADC); Table 2-19. ADC_ClearAllEOCflags Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 23 Function ADC_ClearEOCTUflag Include : ADC.h Description : This function clears the End of Channel (EOC) conversion flags for all channels of the specified ADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: void ADC_ClearAllEOCflags(1); • Command clears EOC flags of all channels as well as the common EOC flag of ADC1. 2.20 Function ADC_ClearEOCTUflag The function ADC_ClearEOCTUflag clears End of CTU conversion flag for the ADCx. Prototype: void ADC_ClearEOCTUflag(uint8_t nbADC); Table 2-20. ADC_ClearEOCTUflag Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Include : ADC.h Description : This function clears the End of CTU conversion flag for the specified ADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: void ADC_ClearEOCTUflag(0); • Command clears EOCTU interrupt flag of ADC0. 2.21 Function ADC_ClearJEOCflag The function ADC_ClearJEOCflag clears End of Injected Channel conversion flag for the ADCx. Prototype: void ADC_ClearJEOCflag(uint8_t nbADC); Qorivva MCP5643L Basic Drivers, Rev. 1.0 24 Freescale Semiconductor, Inc. Chapter 2 ADC driver Table 2-21. ADC_ClearJEOCflag Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Include : ADC.h Description : This function clears the End of Injected Channel (JEOC) conversion flag for the specified ADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: void ADC_ClearJEOCflag(1); • Command clears JEOC interrupt flag of ADC1. 2.22 Function ADC_ClearJECHflag The function ADC_ClearJECHflag clears End of Injected Chain conversion flag for the ADCx. Prototype: void ADC_ClearJECHflag(uint8_t nbADC); Table 2-22. ADC_ClearJECHflag Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Include : ADC.h Description : This function clears the End of Injected Chain (JECH) conversion flag for the specified ADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: void ADC_ClearJECHflag(0); • Command clears JECH interrupt flag of ADC0. 2.23 Function ADC_ClearECHflag The function ADC_ClearECHflag clears End of Chain conversion flag for the ADCx. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 25 Function ADC_SetThldRegister Prototype: void ADC_ClearECHflag(uint8_t nbADC); Table 2-23. ADC_ClearECHflag Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Include : ADC.h Description : This function clears the End of Chain (ECH) conversion interrupt flag for the specified ADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: void ADC_ClearECHflag(1); • Command clears ECH interrupt flag of ADC1. 2.24 Function ADC_SetThldRegister The function ADC_SetThldRegister initializes of the Thresholdx registers for the ADCx. Prototype: void ADC_SetThldRegister(uint8_t nbADC, uint8_t nbThld, uint16_t valueL, uint16_t valueH, uint32_t intMask); Table 2-24. ADC_SetThldRegister Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint8_t nbThld input Number of threshold to be initialized (from 0 till 3). uint16_t valueL input 12bit low value of the threshold (from 0 till 4095) uint16_t valueH input 12bit high value of the threshold (from 0 till 4095). uint32_t intMask input Interruption mask where each ADC channel has 2 maskable bits corresponding to high and low (higher than valueH and lower than valueL) interruption. Include : ADC.h Description : This function initializes thresholdx (specified by nbThld) with low and high limit (valueL, valueH). For each channel we can explicitly enable or disable interrupts corresponding to the set range. These interrupts are maskable using the intMask parameter, where each channel has two bits to mask high and low (higher than valueH and lower than valueL) interruption independently. Qorivva MCP5643L Basic Drivers, Rev. 1.0 26 Freescale Semiconductor, Inc. Chapter 2 ADC driver Remark: Interruption mask should be done with respect to the bit distribution (see img for details). ADCx must be initialized before (see ADC_Init function for details). Code sample: ADC_SetThldRegister(0, 2, 100, 400, 0x00000003); • Command sets threshold register no.2 in ADC0 with the threshold range between 100 and 400. Interruption will be called if conversion of channel no.0 will be out of range (lower or higher than the set values). 2.25 Function ADC_SetThldForChannel The function assigns Thresholdx to specified channel of the ADCx. Prototype: void ADC_SetThldForChannel(uint8_t nbADC, uint32_t nbCH, uint8_t nbThld); Table 2-25. ADC_SetThldForChannel Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint32_t nbCH input Number of channel (from 0 till 15). uint8_t nbThld input Number of threshold (from 0 till 3). Include : ADC.h Description : This function assigns threshold (nbThld) to the specified channel (nbCH). Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_SetThldForChannel(1, 4, 2); • Command assigns threshold no.2 to channel no.4 of ADC1. 2.26 Function ADC_ClearThldFlags The function clears Threshold flags of the ADCx. Prototype: void ADC_ClearThldFlags(uint8_t nbADC); Table 2-26. ADC_ClearThldFlags Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 27 Function ADC_SetVDDforPresampling Include : ADC.h Description : This function clears all threshold interrupt flags of specified ADC. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_ClearThldFlags(0); • Command clears all threshold interrupt flags for ADC0. 2.27 Function ADC_SetVDDforPresampling The function ADC_SetVDDforPresampling sets a positive power supply for the presampling of the ADCx. Prototype: void ADC_SetVDDforPresampling(uint8_t nbADC, vuint32_t channelMask); Table 2-27. ADC_SetVDDforPresampling Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). vuint32_t channelMask input Mask indicates which channels will use presampling with Vdd. Predefined values: • CHSmask - Mask for ALL standard channels • CH0Smask - Mask for standard channel no.0 • CH1Smask - Mask for standard channel no.1 • CH2Smask - Mask for standard channel no.2 • CH3Smask - Mask for standard channel no.3 • CH4Smask - Mask for standard channel no.4 • CH5Smask - Mask for standard channel no.5 • CH6Smask - Mask for standard channel no.6 • CH7Smask - Mask for standard channel no.7 • CH8Smask - Mask for standard channel no.8 • ch.9 - DO NOT USE - internally connected • ch.10 - DO NOT USE - internally connected • CH11Smask - Mask for standard channel no.11 • CH12Smask - Mask for standard channel no.12 • CH13Smask - Mask for standard channel no.13 • CH14Smask - Mask for standard channel no.14 • ch.15 - DO NOT USE - internally connected to TSENS_0 Include : ADC.h Description : This function sets the positive power supply for the presampling period of the ADC conversion. Qorivva MCP5643L Basic Drivers, Rev. 1.0 28 Freescale Semiconductor, Inc. Chapter 2 ADC driver Remark: Function in the same time enables presampling phase for the specified channels. Presampling values cannot be set separately for different channels so the presampling voltage should be either positive or negative (ground). Channel masks should be combined arbitrarily using logical OR (|) operator. ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_SetVDDforPresampling(1, CH2Smask | CH3Smask); • Command enables presampling for channels 2 and 3 of the ADC1 and sets Vdd as the presampling voltage at the same time. 2.28 Function ADC_SetVSSforPresampling The function ADC_SetVSSforPresampling sets a negative power supply for presampling of the ADCx. Prototype: void ADC_SetVSSforPresampling(uint8_t nbADC, vuint32_t channelMask); Table 2-28. ADC_SetVSSforPresampling Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). vuint32_t channelMask input Mask Indicates which channels will use presampling with Vdd. Predefined values: • CHSmask - Mask for ALL standard channels • CH0Smask - Mask for standard channel no.0 • CH1Smask - Mask for standard channel no.1 • CH2Smask - Mask for standard channel no.2 • CH3Smask - Mask for standard channel no.3 • CH4Smask - Mask for standard channel no.4 • CH5Smask - Mask for standard channel no.5 • CH6Smask - Mask for standard channel no.6 • CH7Smask - Mask for standard channel no.7 • CH8Smask - Mask for standard channel no.8 • ch.9 - DO NOT USE - internally connected • ch.10 - DO NOT USE - internally connected • CH11Smask - Mask for standard channel no.11 • CH12Smask - Mask for standard channel no.12 • CH13Smask - Mask for standard channel no.13 • CH14Smask - Mask for standard channel no.14 • ch.15 - DO NOT USE - internally connected to TSENS_0 Include : ADC.h Description : This function sets the negative power supply for the presampling period of the ADC conversion. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 29 Function ADC_DisableSampleBypass Remark: Function in the same time enables presampling phase for the specified channels. Presampling values cannot be set separately for different channels so the presampling voltage should be either positive or negative (ground). Channel masks should be combined arbitrarily using logical OR (|) operator. ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_SetVSSforPresampling(0, CH2Smask | CH3Smask); • Command enables presampling for channels 2 and 3 of the ADC0 and sets Vss as the presampling voltage at the same time. 2.29 Function ADC_DisableSampleBypass The function ADC_DisableSampleBypass enables the sample phase for the ADCx => presampling + sampling + conversion. Prototype: void ADC_DisableSampleBypass(uint8_t nbADC); Table 2-29. ADC_DisableSampleBypass Arguments Type uint8_t Name nbADC Direction input Description Number of ADC module (0 or 1). Include : ADC.h Description : This function disables bypassing of the sampling phase so the s conversion consists of the following phases: (presampling) + sampling + conversion. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_DisableSampleBypass(1); • Command enables sampling phase (disables sampling bypass) for the ADC1 conversions. 2.30 Function ADC_EnableSampleBypass The function ADC_EnableSampleBypass bypasses the sample phase of the ADCx => presampling + conversion. Prototype: void ADC_EnableSampleBypass(uint8_t nbADC); Qorivva MCP5643L Basic Drivers, Rev. 1.0 30 Freescale Semiconductor, Inc. Chapter 2 ADC driver Table 2-30. ADC_EnableSampleBypass Arguments Type uint8_t Name Direction input nbADC Description Number of ADC module (0 or 1). Include : ADC.h Description : This function enables bypassing of the sampling phase so the conversion consists of the following phases: (presampling) + conversion. Remark: ADCx must be initialized before using of this function (see ADC_Init function for details). Code sample: ADC_EnableSampleBypass(0); • Command enables sampling phase for the ADC0 conversions. 2.31 Function ADC_SetTiming The function ADC_SetTiming computes and sets sampling and evaluation phase durations of the ADCx. Prototype: void ADC_SetTiming(uint8_t nbADC, uint32_t sysClk, float convTime); Table 2-31. ADC_SetTiming Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint32_t sysClk input Frequency of the system clock. float convTime input Desired time of conversion. Time is limited by its maximal and minimal values depending on the clock frequency and ADCLKSEL bit (ADCLKSEL = 0 by default). Approximative values for 16 MHz clock are shown below: • for fsys = 16 MHz and ADCLKSEL = 0 -> min convTime = 2,375 µ s / max convTime = 37,750 us • for fsys = 16 MHz and ADCLKSEL = 1 -> min convTime = 1,188 us / max convTime = 18,875 us Include : ADC.h Description : This function computes register settings depending on the system oscillator frequency (sysClk) and on the desired total time of conversion. Duration of each phase (sampling and evaluation) is chosen by an algorithm with respect to the possible configurations and the desired total time of conversion. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 31 Function ADC_SetSamplingTime Remark: Values must be given it the basic units or in their multiples. If the multiples are used, their ratio must be equal to 1. E.g. [Hz]/[s], [kHz]/[ms], [MHz]/[us] etc. Minimal and maximal time possible to set depend on the clock frequency and on the ADCLKSEL bit setting. Code sample: ADC_SetTiming(1, 16, 20.0); • Command sets total conversion time of ADC1 with the system clock 16 MHz to 20 us. 2.32 Function ADC_SetSamplingTime The function ADC_SetSamplingTime computes and sets register for sampling phase duration of the ADCx. Prototype: void ADC_SetSamplingTime(uint8_t nbADC, uint32_t sysClk, float samplingTime); Table 2-32. ADC_SetSamplingTime Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint32_t sysClk input Frequency of the system clock. float samplingTime input Desired sampling time. Time is limited by its maximal and minimal values depending on the clock frequency and ADCLKSEL bit (ADCLKSEL = 0 by default). ). Approximative values for 16 MHz clock are shown in the table below: • for fsys = 16 MHz and ADCLKSEL = 0 -> min samplingTime = 0,875 us / max samplingTime = 31,750 us • for fsys = 16 MHz and ADCLKSEL = 1 -> min samplingTime = 0,438 us / max samplingTime = 15,875 us Include : ADC.h Description : This function computes register (INPSAMP) setting depending on the system oscillator frequency (sysClk) and on the desired sampling phase duration. Remark: Values must be given it the basic units or in their multiples. If the multiples are used, their ratio must be equal to 1. E.g. [Hz]/[s], [kHz]/[ms], [MHz]/[us] etc. Minimal and maximal time possible to set depend on the clock frequency and on the ADCLKSEL bit setting. Code sample: ADC_SetSamplingTime(0, 16, 15.5); • Command sets sampling time of ADC0 with the system clock 16 MHz to 15.5 us. Qorivva MCP5643L Basic Drivers, Rev. 1.0 32 Freescale Semiconductor, Inc. Chapter 2 ADC driver 2.33 Function ADC_SetEvaluationTime The function ADC_SetEvaluationTime computes and sets register for evaluation phase duration of the ADCx. Prototype: void ADC_SetEvaluationTime(uint8_t nbADC, uint32_t sysClk, float evaluationTime); Table 2-33. ADC_SetEvaluationTime Arguments Type Name Direction Description uint8_t nbADC input Number of ADC module (0 or 1). uint32_t sysClk input Frequency of the system clock. float evaluationTime input Desired evaluation time. Time is limited by its maximal and minimal values depending on the clock frequency and ADCLKSEL bit (ADCLKSEL = 0 by default). • for fsys = 16 MHz, ADCLKSEL = 0 -> min evaluationTime = 1,500 us / max evalutaionTime = 6,000 us • for fsys = 16 MHz, ADCLKSEL = 1 -> min evaluationTime = 0,750 us / max evaluationTime = 3,000 us Include : ADC.h Description : This function computes register (INPCMP) setting depending on the system oscillator frequency (sysClk) and on the desired evaluation phase duration. Remark: Values must be given it the basic units or in their multiples. If the multiples are used, their ratio must be equal to 1. E.g. [Hz]/[s], [kHz]/[ms], [MHz]/[us] etc. Minimal and maximal time possible to set depend on the clock frequency and on the ADCLKSEL bit setting. Setting of the evaluation time should be done only very roughly (only 4 possible combinations of the INPCMP register setting). Code sample: ADC_SetEvaluationTime(1, 16, 2.0); • Command sets evaluation time of ADC1 with the system clock 16 MHz to 2.0 us. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 33 Function ADC_SetEvaluationTime Qorivva MCP5643L Basic Drivers, Rev. 1.0 34 Freescale Semiconductor, Inc. Chapter 3 CAN driver CAN driver enables to initialize CAN module and to send basic CAN frames. 3.1 Function CAN_ConfigurePads The function CAN_ConfigurePads configures pads of the CANx module. Prototype: void CAN_ConfigurePads(uint8_t nbModule); Table 3-1. CAN_ConfigurePads Arguments Type uint8_t Name Direction input nbModule Description Number of the CAN module (0 or 1). Include : CAN.h Description : This function configures pads (Tx/Rx) for CAN module specified by nbModule. Remark: This function is used by the CAN_Init function. Code sample: CAN_ConfigurePads(0); • Function configures pads for transmission and reception for the CAN module number 0. 3.2 Function CAN_Init The function CAN_Init initializes CANx registers. Prototype: void CAN_Init(uint8_t nbModule); Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 35 Function CAN_Send Table 3-2. CAN_Init Arguments Type uint8_t Name Direction input nbModule Description Number of the CAN module (0 or 1). Include : CAN.h Description : This function initializes specified CAN module with the following parameters: • Number of message buffers - 32. • Crystal oscillator is used as a clock source. • CAN bus speed - 500 kBd (if a 40-MHz crystal is populated). Remark: Clock source from CAN module is configured to be derived directly from the crystal resonator. Code sample: CAN_Init(1); • Function initializes CAN module number 1. 3.3 Function CAN_Send The function CAN_Send sends a frame via CAN bus. Prototype: void CAN_Send(uint8_t nbModule, uint8_t nbBuffer, uint64_t message, uint32_t id); Table 3-3. CAN_Send Arguments Type Name Direction Description uint8_t nbModule input Number of the CAN module (0 or 1). uint8_t nbBuffer input Number of the CAN message buffer (from 0 till 31). uint64_t message input 64-bit message to be sent through CAN bus. uint32_t id input CAN message identifier - 32-bit number that contains standard (11 bits) and extended (18 bits) identifier. Local priority number is placed on the 3 most significant bits in the same register as the IDs. Include : CAN.h Description : This function sends a CAN frame with the specified ID and 8-Byte message. Message can be sent using one of the 32 Message buffers. Remark: CAN module shall be initialized before (see CAN_Init function for details). Code sample: CAN_Send (0,31,0xA0A0A0A0A0A0A0A0, 0x15555555); Qorivva MCP5643L Basic Drivers, Rev. 1.0 36 Freescale Semiconductor, Inc. Chapter 3 CAN driver • Function sends message 0xA0A0A0A0A0A0A0A0 via CAN module number 0 using 31st message buffer with the following parameters: Local priority: 0 / Standard ID: 0x555 / Extended ID: 0x15555 3.4 Function CAN_Stop The function CAN_Stop disables the CAN message buffer. Prototype: void CAN_Stop(uint8_t nbModule, uint8_t nbBuffer); Table 3-4. CAN_Stop Arguments Type Name Direction Description uint8_t nbModule input Number of the CAN module (0 or 1). uint8_t nbBuffer input Number of the CAN message buffer (from 0 till 31). Include : CAN.h Description : This function clears last transmission flag in the IFLAG1 register and puts the specified message buffer into an Inactive mode. Remark: CAN module shall be initialized before using of this function (see CAN_Init function for details). Code sample: CAN_Stop(0, 31); • Function clears last transmission flag and puts message buffer number 31 of the CAN module number 0 into the Inactive state. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 37 Function CAN_Stop Qorivva MCP5643L Basic Drivers, Rev. 1.0 38 Freescale Semiconductor, Inc. Chapter 4 DSPI driver DSPI driver provides functions for DSPI module initialization, transmission and reception. 4.1 Function DSPI_Init The function DSPI_Init computes register contents and initializes the DSPIx. Prototype: void DSPI_Init(uint8_t DspiNumber, uint8_t mode, uint32_t sysClk, uint32_t baudRate, uint32_t intMask); Table 4-1. DSPI_Init Arguments Type Name Direction Description uint8_t DspiNumber input - Number of DSPI module (0 or 1 or 2). uint8_t mode input - DSPIx mode configuration (Master or Slave). Predefined values: • MASTER DSPIx will handle communication as a Master. • SLAVE DSPIx will listen to the incoming commands as a Slave. uint32_t sysClk input System clock frequency [Hz]. uint32_t baudRate input Desired baud rate [b/s]. Maximal and minimal Baud rate depends on the actual system clock frequency and on the limits of the PBR and BR registers. Maximal and minimal values for fsys = 16 MHz are shown in the table below, for other frequencies see the external excel file. Predefined values: • min baudRate = 70 b/s for fsys = 16 MHz • max baudRate = 4 000 000 b/s for fsys = 16MHz uint32_t intMask input 32-bit mask allowing us to choose which interruption we want to activate. If no interruption is necessary, please add simply 0 instead of the whole mask. Predefined iterruption masks can be combined arbitrarily using logical OR (|) operator. Predefined value: • TCFRE - Transmission Complete Request Enable flag mask • EOQFRE - Finished Request Enable flag mask Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 39 Function DSPI_Send Table 4-1. DSPI_Init Arguments Type Name Direction Description • TFUFRE - Transmit FIFO Underflow Request Enable flag mask • TFFFRE - Transmit FIFO Fill Request Enable flag mask • RFOFRE - Receive FIFO Overflow Request Enable flag mask • RFDFRE - Receive FIFO Drain Request Enable flag mask Include : DSPI.h Description : This function initializes the DSPIx in specified mode (Master or Slave), computes register configuration to achieve the desired baud rate (if possible) and sets interruption mask. By default, data is changed on a leading edge of DSPI clock and captured on a falling edge (CPHA=1). Inactive state of DSPI clock is set to low by default (CPOL=0). Both parameters are changeable after the init phase using other functions (see setPhaseSPIx and setPolaritySPIx functions for additional information). Remark: System clock frequency should be added in multiples of the basic units (e.g. in kHz, MHz), with respect to the units of a baud rate. Code sample1: DSPI_Init(0, MASTER, 16000000, 4000000, TCFRE); • Command initializes DSPI no. 0 in Master mode with desired baud rate 4 Mbit/s (more exactly 3.81Mbit/s, because 1 Mb/s = 1 048 576 b/s) and activated interruption when transmission is completed. System clock frequency is 16 MHz. Code sample2: DSPI_Init(2, SLAVE, 16, 4, TCFRE | EOQFRE); • Command initializes DSPI no. 2 in Slave mode with desired baud rate 4 Mb/s and activated interruption when transmission is completed and when request is finished. 4.2 Function DSPI_Send The function DSPI_Send sends a 16-bit word through the DSPIx. Prototype: void DSPI_Send(uint8_t DspiNumber, uint8_t CSmask, uint16_t Word); Table 4-2. DSPI_Send Arguments Type Name Direction Description uint8_t DspiNumber input Number of DSPI module (0 or 1 or 2). uint8_t CSmask input Chip Select mask allows us to send a data word only to the specified devices. If a corresponding bit is set, the affected chip select will be used and data will be send to the device Table continues on the next page... Qorivva MCP5643L Basic Drivers, Rev. 1.0 40 Freescale Semiconductor, Inc. Chapter 4 DSPI driver Table 4-2. DSPI_Send Arguments (continued) Type Name Direction Description activated by this chip select. For details see img. Number of available chip selects differs by module (see table below for details). • DSPI0 can use 6 different chip selects (from PCS0 till PCS5) • DSPI1 can use 5 different chip selects (from PCS0 till PCS4) • DSPI2 can use 4 different chip selects (from PCS0 till PCS3) uint16_t input Word 6bit data word to be send via DSPI. Include : DSPI.h Description : This function sends a Word (16-bit) via DSPIx (DspiNumber) to the device/devices specified by a chip select (CSmask). Remark: In Slave mode chip select mask has no effect. DSPI in a Slave mode listens everytime to the Chip Select no. 0 (communication is controlled by a Master). Function waits until the end of transmission and then clears the Transfer Complete Flag (TCF). DSPI module must be previously initialized (see DSPI_Init function for details). Code sample1: DSPI_Send(0, 0b111111, 0xABBA); • Command sends 16-bit word (0xABBA) via DSPI0 (must be previously configured as a Master) to the Slaves connected on the 6 Chip Selects (no. 0 - 5). Code sample2: DSPI_Send(1, 0, 0xABBA); • Command sends 16-bit word (0xABBA) via DSPI no. 1 (must be previously configured as a Slave). 4.3 Function DSPI_Read The function DSPI_Read reads the incoming 16-bit word from the DSPIx. Prototype: uint32_t DSPI_Read(uint8_t DspiNumber); Table 4-3. DSPI_Read Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Return: 32-bit received data. Include : DSPI.h Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 41 Function DSPI_RoundBaudRate Description : This function waits for incoming data on a specified DSPI (DspiNumber), then clears Receive FIFO Drain Flag (RFDF), Transfer Complete Flag (TCF) and returns received data. Remark: This function waits in a loop until data arrives (indicated by the RFDF flag). The DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_Read(2); • Command reads and returns incoming data from DSPI2, when they are ready. 4.4 Function DSPI_RoundBaudRate The function DSPI_RoundBaudRate is used by the DSPIx Init during the baud rate setting. Prototype: uint32_t DSPI_RoundBaudRate(uint32_t pureBR); Table 4-4. DSPI_RoundBaudRate Arguments Type uint32_t Name Direction input pureBR Description Baud rate to be rounded. Return: Rounded baud rate. Include : DSPI.h Description : This function rounds baud rate. Remark: This function is used during DSPI initialization (DSPI_Init) to compute register setting for the desired baud rate. Code sample: roundedBR= DSPI_RoundBaudRate(pureBR); • Command rounds baud rate that is given through the variable pureBR and returns the new value through the roundedBR variable. 4.5 Function DSPI_Enable The function DSPI_Enable enables transfers in the DSPIx module. Prototype: void DSPI_Enable(uint8_t DspiNumber); Qorivva MCP5643L Basic Drivers, Rev. 1.0 42 Freescale Semiconductor, Inc. Chapter 4 DSPI driver Table 4-5. DSPI_Enable Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Include : DSPI.h Description : This function starts transfers (HALT bit equals to 0) of the specified DSPI module. Remark: Transfers are enabled by default. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_Enable(2); • Command starts transfers of DSPI2. 4.6 Function DSPI_Disable The function disables the DSPIx transfer. Prototype: void DSPI_Disable(uint8_t DspiNumber); Table 4-6. DSPI_Disable Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Include : DSPI.h Description : This function stops transfers (HALT bit equals to 1) of the specified DSPI module. Remark: Transfers are enabled by default. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_Disable(0); • Command stops transfers of DSPI0. 4.7 Function DSPI_ChangeBaudRateType The function DSPI_ChangeBaudRateType changes type of the baud rate for the DSPIx. Prototype: void DSPI_ChangeBaudRateType(uint8_t DspiNumber, uint8_t typeBR); Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 43 Function DSPI_ChangeFrameSize Table 4-7. DSPI_ChangeBaudRateType Arguments Type Name Direction Description uint8_t DspiNumber input Number of DSPI module (0 or 1 or 2). uint8_t typeBR input Setting for the DBR bit: • "0" - The baud rate is computed normally with a 50/50 duty cycle. • "1" - The baud rate is doubled with the duty cycle depending on the Baud Rate Prescaler. Include : DSPI.h Description : This function changes Double Baud Rate (DBR) parameter setting for the DSPIx. Remark: DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_ChangeBaudRateType(0, 1); • Baud rate of the DSPI0 will be doubled with the duty cycle depending on the baud rate prescaler. 4.8 Function DSPI_ChangeFrameSize the function DSPI_ChangeFrameSize changes a frame size for the DSPIx. Prototype: void DSPI_ChangeFrameSize(uint8_t DspiNumber, uint8_t frameSize); Table 4-8. DSPI_ChangeFrameSize Arguments Type Name Direction Description uint8_t DspiNumber input Number of DSPI module (0 or 1 or 2). uint8_t frameSize input Desired frame size in bits (min. 4, max. 16). Include : DSPI.h Description : This function changes frame size for the DSPIx. Remark: DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_ChangeFrameSize(1, 16); • Changes frame size for DSPI1 module to 16 bits. Qorivva MCP5643L Basic Drivers, Rev. 1.0 44 Freescale Semiconductor, Inc. Chapter 4 DSPI driver 4.9 Function DSPI_SetPhase The function DSPI_SetPhase changes phase of the DSPIx clock. Prototype: void DSPI_SetPhase(uint8_t DspiNumber, uint8_t phase); Table 4-9. DSPI_SetPhase Arguments Type Name Direction Description uint8_t DspiNumber input Number of DSPI module (0 or 1 or 2). uint8_t phase input Number to be written to the CPHA (Clock Phase) bit. Predefined values: • CAPTURE_RISING - data will be captured on a rising edge and changed on a falling edge of the DSPI clock • CAPTURE_FALLING - data will be captured on a falling edge and captured on a rising edge of the DSPI clock Include : DSPI.h Description : This function changes clock phase for the DSPI module (DspiNumber). Remark: DSPI is configured by default with the following parameters: data is changed on a rising edge and captured on a falling edge (CPHA=1) of the DSPI clock . Code sample: DSPI_SetPhase(0, CAPTURE_RISING); • Command sets CPHA bit to 0 for DSPI0 (data will be captured on a rising edge and changed on a falling edge of the DSPI0 clock). 4.10 Function DSPI_SetPolarity The function DSPI_SetPolarity changes polarity of the DSPIx clock. Prototype: void DSPI_SetPolarity(uint8_t DspiNumber, uint8_t polarity); Table 4-10. DSPI_SetPolarity Arguments Type Name Direction Description uint8_t DspiNumber input Number of DSPI module (0 or 1 or 2). uint8_t polarity input Number to be written to the CPOL (Clock Polarity) bit. Predefined values: • DSPI_SetPhase(0, CAPTURE_RISING); • Command sets CPHA bit to 0 for DSPI0 (data will be captured on a rising edge and changed on a falling edge of the DSPI0 clock). Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 45 Function DSPI_EnableTxFIFO Include : DSPI.h Description : This function changes clock polarity for the DSPI module (DspiNumber). Remark: Inactive state of the DSPI clock is set to low by default (CPOL=0). Phase and clock polarity must be set in the same way in both Master and Slave devices. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_SetPolarity(1, HIGH_SCK); • Command sets CPOL bit to 1 (inactive state of SCK will be high). 4.11 Function DSPI_EnableTxFIFO The function DSPI_EnableTxFIFO enables FIFO for the transmitter of the DSPIx. Prototype: void DSPI_EnableTxFIFO(uint8_t DspiNumber); Table 4-11. DSPI_EnableTxFIFO Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Include : DSPI.h Description : This function changes clock polarity for the DSPI module (DspiNumber). Remark: Tx FIFO is disabled by default. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_EnableTxFIFO(1); • Command enables FIFO for the transmitter of DSPI1. 4.12 Function DSPI_DisableTxFIFO The function DSPI_DisableTxFIFO disables FIFO for the DSPIx transmitter. Prototype: void DSPI_DisableTxFIFO(uint8_t DspiNumber); Table 4-12. DSPI_DisableTxFIFO Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Qorivva MCP5643L Basic Drivers, Rev. 1.0 46 Freescale Semiconductor, Inc. Chapter 4 DSPI driver Include : DSPI.h Description : This function disables FIFO for transmitter of the specified DSPI module. Remark: Tx FIFO is disabled by default. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_DisableTxFIFO(2); • Command disables FIFO for the transmitter of DSPI2. 4.13 Function DSPI_EnableRxFIFO The function DSPI_EnableRxFIFO enables FIFO for the DSPIx receiver. Prototype: void DSPI_EnableRxFIFO(uint8_t DspiNumber); Table 4-13. DSPI_EnableRxFIFO Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Include : DSPI.h Description : This function enables FIFO for receiver of the specified DSPI module. Remark: Rx FIFO is disabled by default. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_EnableRxFIFO(0); • Command enables FIFO for the receiver of DSPI0. 4.14 Function DSPI_DisableRxFIFO The function DSPI_DisableRxFIFO disables FIFO for the DSPIx receiver. Prototype: void DSPI_DisableRxFIFO(uint8_t DspiNumber); Table 4-14. DSPI_DisableRxFIFO Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Include : DSPI.h Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 47 Function DSPI_SendWithInt Description : This function disables FIFO for receiver of the specified DSPI module. Remark: Rx FIFO is disabled by default. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_EnableRxFIFO(0); • Command enables FIFO for the receiver of DSPI0. 4.15 Function DSPI_SendWithInt The function DSPI_SendWithInt sends a 16-bit word through the DSPIx (used with interrupt service routine). Prototype: void DSPI_SendWithInt(uint8_t DspiNumber, uint8_t CSmask, uint16_t Word); Table 4-15. DSPI_SendWithInt Arguments Type Name Direction Description uint8_t DspiNumber input Number of DSPI module (0 or 1 or 2). uint8_t CSmask input Chip Select mask allows us to send a data word only to the specified devices. If a corresponding bit is set, the affected chip select will be used and data will be send to the device activated by this chip select. For details see img. Number of available chip selects differs by module (see table below for details). • DSPI0 can use 6 different chip selects (from PCS0 till PCS5) • DSPI1 can use 5 different chip selects (from PCS0 till PCS4) • DSPI2 can use 4 different chip selects (from PCS0 till PCS3) uint16_t Word input 16bit data word to be send via DSPI. Include : DSPI.h Description : This function sends a Word (16-bit) via DSPIx (DspiNumber) to the device/devices specified by a chip select (CSmask). Function shall be used when an interrupt service routine launched by the Transfer Complete Flag (TCF) is configured. Remark: In the Slave mode, the chip select mask has no effect. DSPI in a Slave mode listens to the Chip Select no. 0 (communication is controlled by a Master). Function does not wait for the end of transmission -> the TCF flag should be cleared in its interrupt service routine. DSPI module must be previously initialized (see DSPI_Init function for details). (see DSPI_Init function for details). Code sample1: DSPI_SendWithInt(0, 0b111111, 0xABBA); Qorivva MCP5643L Basic Drivers, Rev. 1.0 48 Freescale Semiconductor, Inc. Chapter 4 DSPI driver • Command sends 16-bit word (0xABBA) via DSPI0 (must be previously configured as a Master) to the Slaves connected on the 6 Chip Selects (no. 0 - 5). Code sample2: DSPI_SendWithInt(1, 0, 0xABBA); • Command sends 16-bit word (0xABBA) via DSPI no. 1 (must be previously configured as a Slave). 4.16 Function DSPI_ReadWithInt The function DSPI_ReadWithInt reads the incoming 16-bit word from DSPI (used with interrupt service routine). Prototype: uint32_t DSPI_ReadWithInt(uint8_t DspiNumber); Table 4-16. DSPI_ReadWithInt Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Return: 32-bit received data. Include : DSPI.h Description : This function waits for incoming data on a specified DSPI (DspiNumber), then clears Transfer Complete Flag (TCF) and returns received data. Function does not clear Receive FIFO Drain Flag (RFDF). This function shall be used in the RFDF interrupt service routine. Remark: Function waits at first for the data (RFDF flag), so the function will be waiting in a loop until the data will arrive. DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_ReadWithInt(2); • Command reads and return incoming data from DSPI2, when they are ready. 4.17 Function DSPI_ClearRFDF The function DSPI_ClearRFDF clears RFDF flag of the DSPIx. Prototype: void DSPI_ClearRFDF(uint8_t DspiNumber); Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 49 Function DSPI_ClearRFDF Table 4-17. DSPI_ClearRFDF Arguments Type uint8_t Name DspiNumber Direction input Description Number of DSPI module (0 or 1 or 2). Return: 32-bit received data. Include : DSPI.h Description : This function clears Receive FIFO Drain Flag (RFDF). This function should be used in the end of the RFDF interrupt routine. Remark: DSPI module must be previously initialized (see DSPI_Init function for details). Code sample: DSPI_ClearRFDF(0); • Command clears RFDF flag in the DSPI0 module. Qorivva MCP5643L Basic Drivers, Rev. 1.0 50 Freescale Semiconductor, Inc. Chapter 5 FCCU driver Fault Collection and Control Unit (FCCU) driver enables to configure protocol of the FCCU module and to generate fake faults for FCCU testing. 5.1 Function FCCU_ClearCF The function FCCU_ClearCF clears the Critical Fault flags. Prototype: void FCCU_ClearCF(); Include : FCCU.h Description : This function clears all Critical Fault (CF) flags in all Critical Fault Status Registers (CFS0, CFS1, CFS2 and CFS3). Remark: It is recommended to find sources of these critical faults and to make necessary actions to prevent another failure before clearing these flags. Code sample: FCCU_ClearCF(); • Command clears all CF flags. 5.2 Function FCCU_ClearNCF The function FCCU_ClearNCF clears the Non-Critical Fault flags. Prototype: void FCCU_ClearNCF(); Include : FCCU.h Description : This function clears all Non-Critical Fault (CF) flags in all Non-Critical Fault Status Registers (NCFS0, NCFS1, NCFS2 and NCFS3). Remark: It is recommended to find sources of these non-critical faults and to make necessary actions to prevent another failure before clearing these flags. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 51 Function FCCU_SetProtocol Code sample: FCCU_ClearNCF(); • Command clears all NCF flags. 5.3 Function FCCU_SetProtocol The function FCCU_SetProtocol sets protocol for the FCCU's safety output pins. Prototype: void FCCU_SetProtocol(uint32_t protocol); Table 5-1. FCCU_SetProtocol Arguments Type uint32_t Name Direction input protocol Description Protocol that will be used by the FCCU_F pins. Predefined values: • FCCU_RAIL 0b000 • FCCU_TIME_SWITCHING 0b001 • FCCU_BI_STABLE 0b010 • FCCU_TEST0 0b101 • FCCU_TEST1 0b110 • FCCU_TEST2 0b111 Include : FCCU.h Description : This function sets protocol that will be used to signal actual state of the FCCU via FCCU_F0 and FCCU_F1 pins. Remark: Execution of this function should not be interrupt by any event (e.g. break point). Function must be executed in the real time in one sequence, otherwise time delays for using access keys will be applied and protocol will not be changed. Code sample: FCCU_SetProtocol(FCCU_BI_STABLE); • Command sets bistable protocol for the FCCU_Fx pins. 5.4 Function FCCU_GenerateCF The function FCCU_GenerateCF generates a fake Critical Fault. Prototype: void FCCU_GenerateCF(uint32_t nbFault); Table 5-2. FCCU_GenerateCF Arguments Type uint32_t Name nbFault Direction input Description Number of the critical fault (from 0 till 31). Qorivva MCP5643L Basic Drivers, Rev. 1.0 52 Freescale Semiconductor, Inc. Chapter 5 FCCU driver Include : FCCU.h Description : This function generates a critical fake fault specified by its number. Remark: Execution of this function can cause reset of the MCU depending on the FCCU configuration. Code sample: FCCU_GenerateCF(2); • Command generates a critical fake fault from the source no. 2. 5.5 Function FCCU_GenerateNCF The function FCCU_GenerateNCF generates a fake Non-Critical Fault. Prototype: void FCCU_GenerateNCF(uint32_t nbFault); Table 5-3. FCCU_GenerateNCF Arguments Type uint32_t Name nbFault Direction input Description Number of the non-critical fault (from 0 till 31). Include : FCCU.h Description : This function generates a non-critical fake fault specified by its number. Remark: Execution of this function can cause reset of the MCU depending on the FCCU configuration. Code sample : FCCU_GenerateNCF(0); • Command generates a non-critical fake fault from the source no. 0. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 53 Function FCCU_GenerateNCF Qorivva MCP5643L Basic Drivers, Rev. 1.0 54 Freescale Semiconductor, Inc. Chapter 6 INTC driver INTC driver enables to initialize the interrupt controller. 6.1 Function INTC_Init The function INTC_Init initializes Interrupt Controller (INTC). Prototype: void INTC_Init(void); Include : INTC.h Description : This function initializes interrupts in the core, in the Interrupt Controller (INTC) and registers interrupt service routines for PIT, SIUL, ADC and LINFLEX_UART modules. Remark: Interrupt vector for each module is chosen depending on the actual setting that is made in external files. Code sample: INTC_Init(); • Command initializes interrupt controller and registers interrupt service routines. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 55 Function INTC_Init Qorivva MCP5643L Basic Drivers, Rev. 1.0 56 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver LINFLEX driver covers functionality of UART and LIN interfaces that are both implemented in this module. Only one of these interfaces can be used in one time. 7.1 Function LINFLEX_ChangeBaudRate The function LINFLEX_ChangeBaudRate changes a baud rate to the desired one (if the value is in the specified range). Prototype: void LINFLEX_ChangeBaudRate(vuint8_t nbLINFlex, double sysClk, uint32_t baudRate); Table 7-1. LINFLEX_ChangeBaudRate Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). double sysClk input System clock frequency [Hz]. uint32_t baudRate input Desired baud rate [b/s]. Maximal and minimal baud rate depend on the actual system clock frequency and on the limits of LINIBRR and LINFBRR registers. * Include : DSPI.h Description : This function computes settings of LINIBRR and LINFBRR registers for a specified LINFlex module (nbLINFlex) with respect to a system clock (sysClk) and desired baud rate (baudRate). Remark: If an internal RC oscillator is used as a system clock, then its calibration is recommended before use of LINFlex module (see calibrateRC function for details). Value obtained from the calibration should be directly added in the floating point format as a parameter to the LINFLEX_InitUART function. If the calibration will not be done, bus timing with RC oscillator should not be exact and communication shall generate errors. LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 57 Function LINFLEX_ConfigurePads Code sample1: LINFLEX_ChangeBaudRate(1, 40000000.0, 600); • Command changes content of the LINFlex1 registers (LINIBRR, LINFBRR) to set up baud rate 600 b/s with respect to the 40 MHz clock frequency. In this case an XTAL oscillator is used. Code sample2 : LINFLEX_ChangeBaudRate(1, RCfrequency, 19200); • Command changes content of the LINFlex1 registers (LINIBRR, LINFBRR) to set up baud rate 19200 b/s with respect to the real frequency of RC oscillator. RCfrequency parameter is a real frequency of RC oscillator obtained from its previous calibration. 7.2 Function LINFLEX_ConfigurePads The function LINFLEX_ConfigurePads configures the I/O pads used for communication. Prototype: void LINFLEX_ConfigurePads(vuint8_t nbLINFlex); Table 7-2. LINFLEX_ConfigurePads Arguments Type vuint8_t Name nbLINFlex Direction input Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function is used by the init function to configure LINFLex I/O pins (Rx and Tx). Default pin mapping is used, but can be changed directly in the function. Default pin mapping: • LINFLEX0 TxD = PB2 / RxD = PB7 • LINFLEX1 TxD = PD9 / RxD = PB13 Remark: This function is used only once by the initialization function (LINFLEX_InitUART) so in standard operation user does not need to use it directly. LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_ConfigurePads(0); • Command configures I/O pads as Rx/Tx for LINFLex0. 7.3 Function LINFLEX_Sleep The function LINFLEX_Sleep requests the sleep mode for the LINFlex module. Qorivva MCP5643L Basic Drivers, Rev. 1.0 58 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver Prototype: void LINFLEX_Sleep(vuint8_t nbLINFlex); Table 7-3. LINFLEX_Sleep Arguments Type vuint8_t Name Direction input nbLINFlex Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function requests Sleep mode by setting SLEEP bit in the LINCR1 register. Remark: Sleep mode should be activated when LINFlex module is not currently in use to decrease consumption. LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_Sleep(1); • Requests Sleep mode for LINFlex1. 7.4 Function LINFLEX_WakeUp The function LINFLEX_WakeUp wakes-up the LINFlex module from the Sleep mode. Prototype: void LINFLEX_WakeUp(vuint8_t nbLINFlex); Table 7-4. LINFLEX_WakeUp Arguments Type vuint8_t Name nbLINFlex Direction input Description - Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function wakes up specified LINFlex module from Sleep mode by clearing SLEEP bit in LINCR1 register. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_WakeUp(0); • Wakes up LINFlex0 from Sleep mode. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 59 Function LINFLEX_DisableRxUART 7.5 Function LINFLEX_DisableTxUART The function LINFLEX_DisableTxUART disables UART's transmitter. Prototype: void LINFLEX_DisableTxUART(vuint8_t nbLINFlex); Table 7-5. LINFLEX_DisableTxUART Arguments Type vuint8_t Name Direction input nbLINFlex Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function disables UART transmitter for specified LINFlex module by clearing TXEN bit in UARTCR register. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_DisableTxUART(1); • Command disables UART transmitter of LINFlex1. 7.6 Function LINFLEX_DisableRxUART The function LINFLEX_DisableRxUART disables UART's receiver. Prototype: void LINFLEX_DisableRxUART(vuint8_t nbLINFlex); Table 7-6. LINFLEX_DisableRxUART Arguments Type vuint8_t Name nbLINFlex Direction input Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function disables UART receiver for specified LINFlex module by clearing RXEN bit in UARTCR register. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_DisableRxUART(0); • Command disables UART receiver of LINFlex0. Qorivva MCP5643L Basic Drivers, Rev. 1.0 60 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver 7.7 Function LINFLEX_EnableTxUART The function LINFLEX_EnableTxUART enables UART's transmitter. Prototype: void LINFLEX_EnableTxUART(vuint8_t nbLINFlex); Table 7-7. LINFLEX_EnableTxUART Arguments Type vuint8_t Name Direction input nbLINFlex Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function enables UART transmitter for specified LINFlex module by setting TXEN bit in UARTCR register. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_EnableTxUART(1); • Command enables UART transmitter of LINFlex1. 7.8 Function LINFLEX_EnableRxUART The function LINFLEX_EnableRxUART enables UART's receiver. Prototype: void LINFLEX_EnableRxUART(vuint8_t nbLINFlex); Table 7-8. LINFLEX_EnableRxUART Arguments Type vuint8_t Name nbLINFlex Direction input Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function enables UART receiver for specified LINFlex module by setting RXEN bit in UARTCR register. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_EnableRxUART(0); • Command enables UART receiver of LINFlex0. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 61 Function LINFLEX_EnableInt 7.9 Function LINFLEX_EnableInt The function LINFLEX_EnableInt enables LINFlex interruptions. Prototype: void LINFLEX_EnableInt(vuint8_t nbLINFlex); Table 7-9. LINFLEX_EnableInt Arguments Type vuint8_t Name Direction input nbLINFlex Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function enables all interrupt flags (in the LINIER register) associated with the specified LINFlex module. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_EnableInt(1); • Command enables all interrupts for LINFlex1. 7.10 Function LINFLEX_InitUART The function LINFLEX_InitUART initializes the UART module. Prototype: void LINFLEX_InitUART(vuint8_t nbLINFlex, double sysClk, uint32_t baudRate); Table 7-10. LINFLEX_InitUART Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). double sysClk input System clock sysClk [Hz]. uint32_t baudRate input Desired baud rate [b/s]. Maximal and minimal baud rate depends on the actual system clock sysClk and on the limits of the LINIBRR and LINFBRR registers (for additional information see LINFlex_ChangeBaudRate function). Include : DSPI.h Description : This function initializes the LINFlex module specified by the index (nbLINFlex) for UART communication. On the beginning, the input and output pins are initialized (using configurePadsLINFlex function), then the main LINFlex registers are Qorivva MCP5643L Basic Drivers, Rev. 1.0 62 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver configured, the baud rate is computed and set (using changeBaudRateLINFlex function), and the input (receiver) buffer is initialized to the size of four bytes. Communication has the following parameters by default: no parity, one stop bit, and 8-bit data word. Remark: Calibration is recommended if an internal RC oscillator is used as a system clock. Code sample1: LINFLEX_UART_Init(1, 40000000.0, 600); • Command initializes UART module no. 1 with respect to the 40 MHz system clock sysClk and the desired baud rate 600 b/s. Code sample2: LINFLEX_UART_Init(0, 40000000.0, 115200); • Command initializes UART module no. 0 with respect to the 40 MHz system clock sysClk and the desired baud rate 115 200 b/s. 7.11 Function LINFLEX_InitRxBuffer The function LINFLEX_InitRxBuffer initializes and changes size of the input buffer. Prototype: void LINFLEX_InitRxBuffer(vuint8_t nbLINFlex, int8_t nbBytes); Table 7-11. LINFLEX_InitRxBuffer Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). int8_t nbBytes input Preferred size of reception buffer in Bytes. In UART mode minimal size of the buffer is 1, maximal 4 Bytes. Include : DSPI.h Description : This function initializes size of the input (reception) buffer. By default this function is used during init phase, where the buffer is initialized to a size of 4 Bytes (32 bits). Remark: The size of the input buffer affirms when a Data Reception Completed Flag (DRF) sets. The flag sets only when the input buffer is full (received data is equal to its size). The LINFlex module should be activated before using this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_InitRxBuffer(0, 4); • Size of input buffer of the LINFlex0 module will be set to 4 Bytes. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 63 Function LINFLEX_ReadUART 7.12 Function LINFLEX_SendUART The function LINFLEX_SendUART sends a data packet through the UART. Prototype: void LINFLEX_SendUART(vuint8_t nbLINFlex, uint8_t *p_tx, uint8_t nbBytes); Table 7-12. LINFLEX_SendUART Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). uint8_t * p_tx input Pointer to the data to be sent. uint8_t nbBytes input Defines how many Bytes of data are given to be sent. Include : DSPI.h Description : This function sends n data Bytes through the specified LINFLex UART module. It sets the output buffer size, reads the data from the location specified by a pointer (p_tx), and then waits for the end of transmission (indicated by a DTF - Data Transmission Completed Flag). The DTF flag is cleared to prepare for the next operation. Remark: Data should be organized e.g. in an array of Bytes and p_tx should contain address of the first item. Data Bytes will be sent in the same order as they are stocked in the memory. LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample : uint8_t data[4]; data[0] = 'E'; data[1] = 'a'; data[2] = 's'; data[3] = 'y'; LINFLEX_InitUART(1, 40000000.0, 600); LINFLEX_SendUART (1, &data[0], 4); • This sample of code will send a word ("Easy") via LINFlex1 UART. Data bytes will be sent in the same order as they are in the memory (first sent will be letter "E"). 7.13 Function LINFLEX_ReadUART The function LINFLEX_ReadUART reads the received data from the UART buffer. Qorivva MCP5643L Basic Drivers, Rev. 1.0 64 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver Prototype: void LINFLEX_ReadUART(vuint8_t nbLINFlex, int8_t nbBytes, uint8_t *response); Table 7-13. LINFLEX_ReadUART Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). int8_t nbBytes input Length of data to be read from input buffer. uint8_t * response output Pointer to the beginning of data block, where received data will be stored. Data block must be allocated before (e.g. Byte array should be used). Include : DSPI.h Description : This function reads specified length of received data from input buffer and stores them in memory allocated by a user. Memory must be accessible using a pointer (response). Remark: Function should be used when the data is available e.g. in an interruption routine or just simply by testing a flag as shown in the example below. Data will be stored in the memory in the same order as they arrived. LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: uint8_t data[4]; LINFLEX_InitUART(1, 40000000.0, 600); while(LINFLEX_GetReceiveFlagUART(1)==0); LINFLEX_ReadUART (1, 4, &data[0]); LINFLEX_ClearReceiveFlagUART(1); • This sample of code will wait for input data (4 Bytes). When data arrives (indicated by Data Reception Completed Flag - DRF), data will be read, stored in data array and receive flag will be cleared. 7.14 Function LINFLEX_GetReceiveFlagUART The function LINFLEX_GetReceiveFlagUART returns the UART's reception flag. Prototype: uint32_t LINFLEX_GetReceiveFlagUART(vuint8_t nbLINFlex); Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 65 Function LINFLEX_ClearReceiveFlagUART Table 7-14. LINFLEX_GetReceiveFlagUART Arguments Type vuint8_t Name Direction input nbLINFlex Description Number of LINFlex module (0 or 1). Return: Function returns DRF - Data Reception Completed Flag. Include : DSPI.h Description : This function returns DRF - Data Reception Completed Flag from UARTSR register. This should be e.g. used simply in while cycle to wait for available data. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: while(LINFLEX_GetReceiveFlagUART(1)==0); • Command simply waits for received data on LINFlex1. If the data arrives program will continue in its execution. 7.15 Function LINFLEX_ClearReceiveFlagUART The function LINFLEX_ClearReceiveFlagUART clears the UART's reception flag. Prototype: void LINFLEX_ClearReceiveFlagUART(vuint8_t nbLINFlex); Table 7-15. LINFLEX_ClearReceiveFlagUART Arguments Type vuint8_t Name nbLINFlex Direction input Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function clears DRF (Data Reception Completed Flag) and RMB (Release Message Buffer) in UARTSR register. Remark: Function should be used everytime after data read (after LINFLEX_GetReceiveFlagUART function) to clear input buffer and to prepare receiver for new data. LINFlex module should be activated before use of this function (see LINFLEX_InitUART function for details). Code sample: LINFLEX_ClearReceiveFlagUART(0); • Command clears DRF and RMB flag bits for LINFlex0. Qorivva MCP5643L Basic Drivers, Rev. 1.0 66 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver 7.16 Function LINFLEX_EnableDRFint The function LINFLEX_EnableDRFint enables an interrupt activated when the data is received. Prototype: void LINFLEX_EnableDRFint(vuint8_t nbLINFlex); Table 7-16. LINFLEX_EnableDRFint Arguments Type vuint8_t Name Direction input nbLINFlex Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function enables interrupt on the reception (DRIE - Data Reception Complete Interrupt Enable). Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitLIN function for details). Code sample: LINFLEX_EnableDRFint(0); • Command enables interrupt on the reception for the LINFLEX no. 0. 7.17 Function LINFLEX_GetParityErrorUART The function LINFLEX_GetParityErrorUART checks if an error in the parity has been detected. Prototype: uint32_t LINFLEX_GetParityErrorUART(vuint8_t nbLINFlex); Table 7-17. LINFLEX_GetParityErrorUART Arguments Type vuint8_t Name nbLINFlex Direction input Description Number of LINFlex module (0 or 1). Return: Function returns four parity error flags in one register. Include : DSPI.h Description : This function returns PE - Parity Error Flags Rx. Remark: All four Parity Error flags PE3, PE2, PE1, PE0 are returned in one register. PE0 is placed on the least significant bit. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 67 Function LINFLEX_ClearParityError Code sample: error = LINFLEX_GetParityErrorUART(1); • Command returns state of parity bits for all received Bytes in the LINFLEX module no. 1 and stores it in the error variable. 7.18 Function LINFLEX_ClearParityError The function LINFLEX_ClearParityError clears the parity error flag. Prototype: void LINFLEX_ClearParityError(vuint8_t nbLINFlex); Table 7-18. LINFLEX_ClearParityError Arguments Type vuint8_t Name Direction input nbLINFlex Description Number of LINFlex module (0 or 1). Include : DSPI.h Description : This function clears all PE - Parity Error Flags. Remark: All four Parity Error flags PE0, PE1, PE2, PE3 are cleared in the same time. Code sample: LINFLEX_ClearParityError(0); • Command clears all parity flags in the PE register for module no.0. 7.19 Function LINFLEX_IsIdle The function LINFLEX_IsIdle checks whether module is in the IDLE state or not. Prototype: uint32_t LINFLEX_IsIdle(vuint8_t nbLINFlex); Table 7-19. LINFLEX_IsIdle Arguments Type vuint8_t Name nbLINFlex Direction input Description Number of LINFlex module (0 or 1). Return: Returns 1 if the LINFlex module is id IDLE state, otherwise 0. Include : DSPI.h Description : This function checks if the LINFlex module is in IDLE state. Remark: LINFlex module should be activated before use of this function (see LINFLEX_InitLIN function for details). Qorivva MCP5643L Basic Drivers, Rev. 1.0 68 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver Code sample: LINFLEX_IsIdle(1); • Command returns 1 if the UART of the LINFLEX1 is in the IDLE state. 7.20 Function LINFLEX_InitLIN The function LINFLEX_InitLIN initializes the LIN module. Prototype: void LINFLEX_InitLIN(vuint8_t nbLINFlex, double sysClk, uint32_t baudRate, uint8_t mode); Table 7-20. LINFLEX_InitLIN Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). double sysClk input System clock sysClk [Hz]. uint32_t baudRate input Desired baud rate [b/s]. Maximal and minimal baud rate depends on the actual system clock sysClk and on the limits of the LINIBRR and LINFBRR registers (for additional information see LINFlex_ChangeBaudRate function). uint8_t mode input Desired mode - Master or Slave. Predefined values: • "MASTER" - LIN will be a Master • "SLAVE" - LIN will be a Slave Include : DSPI.h Description : This function initializes LINFlex module specified by index (nbLINFlex) for LIN communication. On the beginning input and output pins are initialized (using LINFLEX_ConfigurePads function), then main LINFlex registers are configured, baud rate is computed and set (using LINFLEX_ChangeBaudRate function). Module will be set into a Master or Slave mode (mode parameter). Remark: If internal RC oscillator is used as a system clock, then its calibration is recommended (see calibrateRC function for details). Then the value obtained from the calibration should be directly added in the floating point format as a parameter of the LINFLEX_UART_Init function. This will allow init function to compute baud rate registers more precisely. Code sample1: LINFLEX_InitLIN(1, 40000000.0, 600, MASTER); Command initializes LIN module no. 1 as a Master with respect to the 40 MHz system clock sysClk and the desired baud rate 600 b/s. Code sample2: LINFLEX_InitLIN(0, 40000000.0, 115200, SLAVE); Command initializes LIN module no. 0 as a Slave with respect to the 40 MHz system clock sysClk and the desired baud rate 115 200 b/s. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 69 Function LINFLEX_SendFrameLIN 7.21 Function LINFLEX_SendFrameLIN The function LINFLEX_SendFrameLIN sends a full LIN frame (header + data). Prototype: void LINFLEX_SendFrameLIN(vuint8_t nbLINFlex, uint8_t *p_tx, uint8_t nbBytes, uint8_t ID); Table 7-21. LINFLEX_SendFrameLIN Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). uint8_t * p_tx input Pointer to the data to be sent. uint8_t nbBytes input Defines how many Bytes of data are given to be sent. uint8_t ID input Header frame identifier (from 0 up to 15). Header frame is normally coded on 6 bits, which means 64 possible combinations divided into 4 classes. Then 4 bits mean identifier number and 2 bits number of data Bytes (see the image above). Exceptional are identifiers from 0x3C till 0x3F (see LIN specification for details). Include : DSPI.h Description : LINFLEX_SendFrameLIN sends a full LIN frame (header + data) via the LIN if configured as a Master. Two associated registers (BDRL and BDRM) are fed from the memory (beginning specified by p_tx pointer). The ID is modified with the data length (coded on two bits as shown below) and BIDR register is set. Next, the frame is sent by setting the HTRQ bit in the LINCR2 register (up to 8 data Bytes should be sent in a one frame). The function waits for the end of data transmission (DTF flag in LINSR register), then clears the flag and returns. Depending on bit2 and 3, the data frame length is defined as follows: • "00" - 1 Byte • "01" - 2 Bytes • "10" - 4 Bytes • "11" - 8 Bytes Remark: Data should be organized e.g. in an array of Bytes and p_tx should contain address of the first item. Data Bytes will be sent in the same order as they are stocked in the memory. Sending a full frame is possible only if LINFlex module is configured as a Master. LINFlex module should be activated before use of this function (see LINFLEX_InitLIN function for details). Code sample: uint8_t p_array[8]; Qorivva MCP5643L Basic Drivers, Rev. 1.0 70 Freescale Semiconductor, Inc. Chapter 7 LINFLEX driver p_array[0] = 'H'; p_array[1] = 'e'; p_array[2] = 'l'; p_array[3] = 'l'; p_array[4] = 'o'; p_array[5] = '!'; p_array[6] = '!'; p_array[7] = '!'; LINFLEX_InitLIN(0,40000000,19200,MASTER); LINFLEX_SendFrameLIN (0, (uint8_t*)&p_array, 0x08, 0x02); This sample of code will send a word ("Hello!!!") via LIN bus connected to LINFlex0 module. Data bytes will be sent in the same order as they are in the memory (first sent will be letter "H"). 7.22 Function LINFLEX_SendHeaderLIN The function LINFLEX_SendHeaderLIN sends a LIN header. Prototype: void LINFLEX_SendHeaderLIN(vuint8_t nbLINFlex, uint8_t nbBytes, uint8_t ID); Table 7-22. LINFLEX_SendHeaderLIN Arguments Type Name Direction Description vuint8_t nbLINFlex input Number of LINFlex module (0 or 1). uint8_t nbBytes input Defines how many Bytes of data are given to be sent. uint8_t ID input Header frame identifier (from 0 up to 15). Header frame is normally coded on 6 bits, which means 64 possible combinations divided into 4 classes. Then 4 bits mean identifier number and 2 bits number of data Bytes (see the image above). Exceptional are identifiers from 0x3C till 0x3F (see LIN specification for details). Include : DSPI.h Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 71 Function LINFLEX_SendWordUART Description : This function sends LIN frame header if configured as a Master. At first ID is modified to take into account number of data Bytes that will follow in the frame (coded on two bits, see the previous LINFLEX_SendFrameLIN function for details). Then BIDR register is fed up with the transfer parameters/ID and Header Transmission is requested (HTRQ bit in LINCR2 register). Remark: Sending a full frame is possible only if LINFlex module is configured as a Master. LINFlex module should be activated before use of this function (see LINFLEX_InitLIN function for details). Code sample: LINFLEX_InitLIN(0,40000000,19200,MASTER); LINFLEX_SendHeaderLIN(0, 0x08, 0x02); • This sample of code will send a header with ID 0x02 via the LINFlex0 module. 7.23 Function LINFLEX_SendWordUART The function LINFLEX_SendWordUART sends a word via UART. Prototype: void LINFLEX_SendWordUART(vuint8_t nbLINFlex, uint8_t *p_string, uint8_t length); Table 7-23. LINFLEX_SendWordUART Arguments Type Name Direction Description vuint8_t nbLINFlex input - Number of LINFlex module (0 or 1). uint8_t * p_string input - Pointer to the array of Bytes to be sent. uint8_t length input - Number of Bytes to be sent. Include: : LINFLEX.h Description: : This function sends a word consisted of several Bytes via UART. Remark: Function blocks UART as a resource, this could block execution of the main routines if longer frames are sent. Qorivva MCP5643L Basic Drivers, Rev. 1.0 72 Freescale Semiconductor, Inc. Chapter 8 ME driver ME driver enables to configure Mode Entry module of the MCU and to set current mode. 8.1 Function ME_Init The function ME_Init initializes the Mode Entry Module (ME). Prototype: void ME_Init(void); Include : ME.h Description : This function initializes oscillators and peripherals for all modes. If the device starts in the Safe mode, then function clears FCCU errors and restarts device by switching into Reset mode. Remark: If device starts in the Safe mode, fault flags are cleared without any processing. Processing of the critical and non-critical faults shall be added in the "TO DO" section, which is marked in the function. Code sample: ME_Init(); • Command initializes ME module. 8.2 Function ME_ModeManager The function ME_ModeManager changes the current operation mode to the desired one. Prototype: void ME_ModeManager(uint8_t Mode); Table 8-1. ME_ModeManager Arguments Type uint8_t Name Mode Direction input Description Desired operation mode. Predefined value: • "ME_RESET" • "ME_TEST" Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 73 Function ME_ModeManager Table 8-1. ME_ModeManager Arguments Type Name Direction Description • • • • • • • • • "ME_SAFE" "ME_DRUN" "ME_RUN0" "ME_RUN1" "ME_RUN2" "ME_RUN3" "ME_HALT0" "ME_STOP0" "ME_STANDBY0" Include : ME.h Description : This function switches actual mode to the desired one, waits for the end of transition and checks if the desired mode was entered. Remark: Function switches actual mode to the desired one, waits for the end of transition and checks if the desired mode was entered. Code sample: ME_ModeManager(ME_RUN0); • Command switches actual mode to the RUN0 mode. Qorivva MCP5643L Basic Drivers, Rev. 1.0 74 Freescale Semiconductor, Inc. Chapter 9 PIT driver PIT driver covers functionality of the Periodic Interrupt Timer enabling to generate interrupts with precise time period. 9.1 Function PIT_Init The function PIT_Init initializes the Periodic Interrupt Timer. Prototype: void PIT_Init(void); Include : PIT.h Description : This function turns on clock for the PIT module. Remark: In debug mode is the PIT module frozen by default. Code sample: PIT_Init(); • Command activates clock for the PIT module. 9.2 Function PIT_Setup The function PIT_Setup computes and sets up a period for the specified channel. Prototype: void PIT_Setup(int8_t Channel, uint32_t Clock_Freq, double ExpectedTimeBase); Table 9-1. PIT_Setup Arguments Type Name Direction Description int8_t Channel input Number of the PIT's channel (from 0 till 3). uint32_t Clock_Freq input System clock frequency. double ExpectedTimeBase input Desired time period for the specified channel. Include : PIT.h Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 75 Function PIT_EnableInt Description : This function computes register settings from clock frequency and expected time base. Remark: Maximal setable time is given by the maximal value of the 32-bit LDVAL register divided by system the clock frequency ((2^32)/fsys). PIT module should be initialized before (see PIT_Init function). Code sample: PIT_Setup(0, 16000000, 0.010); • Command sets up channel no. 0 of the timer with expected time base 10 ms assuming clock frequency 16 MHz. 9.3 Function PIT_EnableInt The function PIT_EnableInt enables an interrupt for a specified channel. Prototype: void PIT_EnableInt(int8_t Channel); Table 9-2. PIT_EnableInt Arguments Type int8_t Name Direction input Channel Description Number of the PIT's channel (from 0 till 3). Include : PIT.h Description : This function enables an interrupt for a specified channel (sets TIE bit) and clears interrupt flag (TIF) in the same time. Remark: PIT module should be initialized before (see PIT_Init function). Code sample: PIT_EnableInt(1); • Command enables interruption for the first channel of the PIT. 9.4 Function PIT_EnableChannel The function PIT_EnableChannel enables a channel of the PIT. Prototype: void PIT_EnableChannel(int8_t Channel); Table 9-3. PIT_EnableChannel Arguments Type int8_t Name Channel Direction input Description Number of the PIT's channel (from 0 till 3). Qorivva MCP5643L Basic Drivers, Rev. 1.0 76 Freescale Semiconductor, Inc. Chapter 9 PIT driver Include : PIT.h Description : This function enables specified channel by setting TEN bit. Remark: PIT module should be initialized before (see PIT_Init function). Code sample: PIT_EnableInt(2); • Command enables second channel of the PIT. 9.5 Function PIT_Disable The function PIT_Disable disables a channel of the PIT (including interrupts). Prototype: void PIT_Disable(int8_t Channel); Table 9-4. PIT_Disable Arguments Type int8_t Name Direction input Channel Description Number of the PIT's channel (from 0 till 3). Include : PIT.h Description : This function disables the whole PIT channel. The associated interrupt flag is cleared and the interrupt deisabled in the same time. Remark: PIT module should be initialized before (see PIT_Init function). Code sample: PIT_Disable(3); • Command disables channel no. 3 of the PIT. 9.6 Function PIT_GetFlag The function PIT_GetFlag returns an interrupt flag. Prototype: int8_t PIT_GetFlag(int8_t Channel); Table 9-5. PIT_GetFlag Arguments Type int8_t Name Direction input Channel Description Number of the PIT's channel (from 0 till 3). Return: Time Interrupt Flag. Include : PIT.h Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 77 Function PIT_ClearFlag Description : This function returns the interrupt flag (TIF) of the specified channel. Remark: PIT module should be initialized before (see PIT_Init function). Code sample: while(PIT_GetFlag(3)==0); • Command waits until the PIT channel no. 3 will overflow (Simple waiting without any interruption). 9.7 Function PIT_ClearFlag The function PIT_ClearFlag clears an interrupt flag. Prototype: void PIT_ClearFlag(int8_t Channel); Table 9-6. PIT_ClearFlag Arguments Type int8_t Name Direction input Channel Description Number of the PIT's channel (from 0 till 3). Include : PIT.h Description : This function clears Time Interrupt Flag (TIF) for the specified channel. Remark: PIT module should be initialized before (see PIT_Init function). Code sample: PIT_ClearFlag(0); • Command clears TIF flag of the channel no. 0. 9.8 Function PIT_DisableChannel The function PIT_DisableChannel disables a PIT channel. Prototype: void PIT_DisableChannel(int8_t Channel); Table 9-7. PIT_DisableChannel Arguments Type int8_t Name Channel Direction input Description Number of the PIT's channel (from 0 till 3). Include : PIT.h Description : This function clears Timer Enable Bit (TEN) for the specified PIT channel. Remark: PIT module should be initialized before (see PIT_Init function). Qorivva MCP5643L Basic Drivers, Rev. 1.0 78 Freescale Semiconductor, Inc. Chapter 9 PIT driver Code sample: PIT_DisableChannel(1); • Command disables first PIT channel. 9.9 Function PIT_IsChannelEnabled The function PIT_IsChannelEnabled checks if a specified PIT channel is enabled. Prototype: uint32_t PIT_IsChannelEnabled(int8_t Channel); Table 9-8. PIT_IsChannelEnabled Arguments Type int8_t Name Channel Direction input Description Number of the PIT's channel (from 0 till 3). Return: Number of the PIT's channel (from 0 till 3). Include : PIT.h Description : This function returns content of the Timer Enable Bit (TEN) for the specified PIT channel. Remark: PIT module should be initialized before (see PIT_Init function). Code sample: res = PIT_IsChannelEnabled(0); • Command returns state of PIT channel number 0. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 79 Function PIT_IsChannelEnabled Qorivva MCP5643L Basic Drivers, Rev. 1.0 80 Freescale Semiconductor, Inc. Chapter 10 SIUL driver SIUL driver covers functionality of the I/O ports of the MCU. Module enables to configure input and output buffers of the MCU and to control/monitor current state of the specified port. 10.1 Function SIUL_DigitalInput The function SIUL_DigitalInput configures a GPIO pin as a digital input. Prototype: void SIUL_DigitalInput(uint32_t pad, uint32_t config); Table 10-1. SIUL_DigitalInput Arguments Type uint32_t Name pad Direction input Description Pad to be configured - use either PCR pad number or some predefined name. Predefined values: • "SIUL_PA0" "SIUL_PA1" "SIUL_PA2" • "SIUL_PA3""SIUL_PA4""SIUL_PA5" • "SIUL_PA6""SIUL_PA7""SIUL_PA8" • "SIUL_PA9""SIUL_PA10""SIUL_PA11" • "SIUL_PA12""SIUL_PA13""SIUL_PA14" • "SIUL_PA15" "SIUL_PB0""SIUL_PB1" • "SIUL_PB2" "SIUL_PB3" "SIUL_PB4" • "SIUL_PB5" "SIUL_PB6" "SIUL_PB7" • "SIUL_PB8" "SIUL_PB9" "SIUL_PB10" • "SIUL_PB11" "SIUL_PB12" "SIUL_PB13" • "SIUL_PB14" "SIUL_PB15" "SIUL_PC0" • "SIUL_PC1" "SIUL_PC2" "SIUL_PC3" • "SIUL_PC4" "SIUL_PC5" "SIUL_PC6" • "SIUL_PC7" "SIUL_PC8" "SIUL_PC9" • "SIUL_PC10" "SIUL_PC11" "SIUL_PC12" • "SIUL_PC13" "SIUL_PC14" "SIUL_PC15" • "SIUL_PD0" "SIUL_PD1" "SIUL_PD2" • "SIUL_PD3" "SIUL_PD4" "SIUL_PD5" • "SIUL_PD6" "SIUL_PD7" "SIUL_PD8" • "SIUL_PD9" "SIUL_PD10" "SIUL_PD11" • "SIUL_PD12" "SIUL_PD13" "SIUL_PD14" • "SIUL_PD15" "SIUL_PE0" "SIUL_PE1" • "SIUL_PE2" "SIUL_PE3" "SIUL_PE4" • "SIUL_PE5" "SIUL_PE6" "SIUL_PE7" Table continues on the next page... Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 81 Function SIUL_DigitalInput Table 10-1. SIUL_DigitalInput Arguments (continued) Type Name Direction Description • • • • • • • • • • • • • • • • • • • • • • • • • • uint32_t input config "SIUL_PE8" "SIUL_PE9" "SIUL_PE10" "SIUL_PE11" "SIUL_PE12" "SIUL_PE13" "SIUL_PE14" "SIUL_PE15" "SIUL_PF0" "SIUL_PF1" "SIUL_PF2" "SIUL_PF3" "SIUL_PF4" "SIUL_PF5" "SIUL_PF6" "SIUL_PF7" "SIUL_PF8" "SIUL_PF9" "SIUL_PF10" "SIUL_PF11" "SIUL_PF12" "SIUL_PF13" "SIUL_PF14" "SIUL_PF15" "SIUL_PG0" "SIUL_PG1" "SIUL_PG2" "SIUL_PG3" "SIUL_PG4" "SIUL_PG5" "SIUL_PG6" "SIUL_PG7" "SIUL_PG8" "SIUL_PG9" "SIUL_PG10" "SIUL_PG11" "SIUL_PG12" "SIUL_PG13" "SIUL_PG14" "SIUL_PG15" "SIUL_PH0" "SIUL_PH1" "SIUL_PH2" "SIUL_PH3" "SIUL_PH4" "SIUL_PH5" "SIUL_PH6" "SIUL_PH7" "SIUL_PH8" "SIUL_PH9" "SIUL_PH10" "SIUL_PH11" "SIUL_PH12" "SIUL_PH13" "SIUL_PH14" "SIUL_PH15" "SIUL_PI0" "SIUL_PI1" "SIUL_PI2" "SIUL_PI3" "SIUL_PI4" "SIUL_PI5" "SIUL_PI6" "SIUL_PI7" "SIUL_PI8" "SIUL_PI9" "SIUL_PI10" "SIUL_PI11" "SIUL_PI12" "SIUL_PI13" "SIUL_PI14" "SIUL_PI15" "SIUL_PJ0" "SIUL_PJ1" "SIUL_PJ2" "SIUL_PJ3" "SIUL_PJ4" Additional configuration of the specified pad. Use number 0 if no additional configuration is desired. Predefined values: Include : SIUL.h Description : This function configures specified IO pin as a digital input. Pad pull-up/Down resistors • "SIUL_PULL_UP" - Internal pull-up resistor will be used. • "SIUL_PULL_DOWN" - Internal pull-down resistor will be used. • "SIUL_PULL_DIS" - Internal pull-up/down resistors will be disabled. Pad direction • "SIUL_INPUT" - Input buffer will be activated. • "SIUL_OUTPUT" - Output buffer will be activated. • "SIUL_BIDIR" - Input and output buffers will be activated (0x0300). Pad function • • • • "SIUL_GPIO" - Pad will be used as an General IO pin. "SIUL_ALT1" - Alternate function no.1 will be used on this pin. "SIUL_ALT2" - Alternate function no.2 will be used on this pin. "SIUL_ALT3" - Alternate function no.3 will be used on this pin. Safe mode control Qorivva MCP5643L Basic Drivers, Rev. 1.0 82 Freescale Semiconductor, Inc. Chapter 10 SIUL driver • "SIUL_SMC" 0x4000 Pad type • "SIUL_DIGITAL" - Pin will be configured as a digital one. • "SIUL_ANALOG" - Pin will be configured as an analog one (to be used as an input for ADC). Pad slew rate • "SIUL_SLOW" - Slow slew rate will be used. • "SIUL_FAST" - Fast slew rate will be used. Output type • "SIUL_NORMAL" - Output will be in a Normal (push-pull) configuration. • "SIUL_OPEND" - Output will be in an Open-Drain configuration. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_DigitalInput(SIUL_PA8, SIUL_PULL_UP | SIUL_FAST); Command sets PA8 pad as a digital input with a pull-up resitor and fast slew rate. 10.2 Function SIUL_AnalogInput The function SIUL_AnalogInput configures a GPIO pin as an analog input. Prototype: void SIUL_AnalogInput(uint32_t pad, uint32_t config); Table 10-2. SIUL_AnalogInput Arguments Type Name Direction Description uint32_t pad input Pad to be configured - use either PCR pad number or some predefined name. uint32_t config input Additional configuration of the specified pad. Use number 0 if no additional configuration is desired. Include : SIUL.h Description : This function configures specified IO pin as an analog input. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_AnalogInput(SIUL_PB7, 0); • Command sets PB7 pin as an analog input with no additional configuration. 10.3 Function SIUL_DigitalOutput The function SIUL_DigitalOutput configures a GPIO pin as a digital output. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 83 Function SIUL_DigitalIO Prototype: void SIUL_DigitalOutput(uint32_t pad, uint32_t config); Table 10-3. SIUL_DigitalOutput Arguments Type Name Direction Description uint32_t pad input Pad to be configured - use either PCR pad number or some predefined name. uint32_t config input Additional configuration of the specified pad. Use number 0 if no additional configuration is desired. Include : SIUL.h Description : This function configures specified IO pin as a digital output. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_DigitalOutput(SIUL_PD8, SIUL_ALT1); • Command sets pad PD8 as a digital output with its first alternate function. 10.4 Function SIUL_DigitalIO The function SIUL_DigitalIO configures a GPIO pin as an Input/Output. Prototype: void SIUL_DigitalIO(uint32_t pad, uint32_t config); Table 10-4. SIUL_DigitalIO Arguments Type Name Direction Description uint32_t pad input Pad to be configured - use either PCR pad number or some predefined name. uint32_t config input Additional configuration of the specified pad. Use number 0 if no additional configuration is desired. Include : SIUL.h Description : This function configures specified IO pin as a digital Input/Output. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_DigitalIO(SIUL_PD2,0); • Command sets pad PD2 as a digital Input/Output (both input and output buffers are enabled). Qorivva MCP5643L Basic Drivers, Rev. 1.0 84 Freescale Semiconductor, Inc. Chapter 10 SIUL driver 10.5 Function SIUL_ToggleIO The function SIUL_ToggleIO toggles a GPIO pin. Prototype: void SIUL_ToggleIO(uint32_t pad); Table 10-5. SIUL_ToggleIO Arguments Type uint32_t Name Direction input pad Description Pad to be toggled - use either PCR pad number or some predefined name. Include : SIUL.h Description : This function toggles actual state of the specified pad. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_DigitalIO(SIUL_PD2,0); SIUL_ToggleIO(SIUL_PD2); • First command sets pad PD2 as a digital Input/Output. Second command inverts actual state of the PD2 pad. 10.6 Function SIUL_EnableExtInt The function SIUL_EnableExtInt enables an interrupt for a GPIO pin. Prototype: void SIUL_EnableExtInt(uint32_t maskEIRQ); Table 10-6. SIUL_EnableExtInt Arguments Type uint32_t Name maskEIRQ Direction input Description Mask to specify which EIRQs will be activated. Predefined values: • "SIUL_EIRQ0" • "SIUL_EIRQ1" • "SIUL_EIRQ2" • "SIUL_EIRQ3" • "SIUL_EIRQ4" • "SIUL_EIRQ5" • "SIUL_EIRQ6" • "SIUL_EIRQ7" • "SIUL_EIRQ8" • "SIUL_EIRQ9" • "SIUL_EIRQ10" • "SIUL_EIRQ11" Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 85 Function SIUL_EnableExtIntRisingEdge Table 10-6. SIUL_EnableExtInt Arguments Type Name Direction Description • • • • • • • • • • • • • • • • • • • • "SIUL_EIRQ12" "SIUL_EIRQ13" "SIUL_EIRQ14" "SIUL_EIRQ15" "SIUL_EIRQ16" "SIUL_EIRQ17" "SIUL_EIRQ18" "SIUL_EIRQ19" "SIUL_EIRQ20" "SIUL_EIRQ21" "SIUL_EIRQ22" "SIUL_EIRQ23" "SIUL_EIRQ24" "SIUL_EIRQ25" "SIUL_EIRQ26" "SIUL_EIRQ27" "SIUL_EIRQ28" "SIUL_EIRQ29" "SIUL_EIRQ30" "SIUL_EIRQ31" Include : SIUL.h Description : This function enables external interrupt for the specified EIRQ - External Interrupt Request Input specified by its mask. This is done in the IRER - Interrupt Request Enable Register. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_EnableExtInt(SIUL_EIRQ31); • Command enables external interrupt for the PF13 pad. 10.7 Function SIUL_EnableExtIntRisingEdge The function SIUL_EnableExtIntRisingEdge enables an interrupt on a rising edge. Prototype: void SIUL_EnableExtIntRisingEdge(uint32_t maskEIRQ); Table 10-7. SIUL_EnableExtIntRisingEdge Arguments Type uint32_t Name maskEIRQ Direction input Description Mask to specify for which EIRQs the filter and interrupt will be enabled. Include : SIUL.h Qorivva MCP5643L Basic Drivers, Rev. 1.0 86 Freescale Semiconductor, Inc. Chapter 10 SIUL driver Description : This function enables an input filter and interrupt launched on the rising edge. Filter enables e.g. to filter out switching noise, when a button is connected directly to the input without using any special external circuitry. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_EnableExtIntRisingEdge(64); • Command enables filter and an interrupt on the rising edge for the EIRQ6 - pad PA6. 10.8 Function SIUL_EnableExtIntFallingEdge The function SIUL_EnableExtIntFallingEdge enables an interrupt on a falling edge. Prototype: void SIUL_EnableExtIntFallingEdge(uint32_t maskEIRQ); Table 10-8. SIUL_EnableExtIntFallingEdge Arguments Type uint32_t Name Direction input maskEIRQ Description Mask to specify for which EIRQs the filter and interrupt will be enabled. Include : SIUL.h Description : This function enables an input filter and interrupt launched on the falling edge. Filter enables e.g. to filter out switching noise, when a button is connected directly to the input without using any special external circuitry. Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_EnableExtIntFallingEdge(64); • Command enables filter and an interrupt on the falling edge for the EIRQ6 - pad PA6. 10.9 Function SIUL_GetExtIntFlag The function SIUL_GetExtIntFlag returns the interrupt flag. Prototype: uint32_t SIUL_GetExtIntFlag(uint32_t maskEIRQ); Table 10-9. SIUL_GetExtIntFlag Arguments Type uint32_t Name maskEIRQ Direction input Description Mask to specify for which EIRQs the filter and interrupt will be enabled. Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 87 Function SIUL_ClearExtIntFlag Return: Returns interrupt flag from the ISR - Interrupt Status Flag Register. Include : SIUL.h Description : This function returns interrupt flag for the specified EIRQ External Interrupt Request Input. Remark: Predefined values can be combined using logical | operator. Code sample: int_flag = SIUL_GetExtIntFlag(SIUL_EIRQ31); • Command returns and stores interrupt flag for EIRQ31 - pad PF13. 10.10 Function SIUL_ClearExtIntFlag The function SIUL_ClearExtIntFlag clears the interrupt flag. Prototype: void SIUL_ClearExtIntFlag(uint32_t maskEIRQ); Table 10-10. SIUL_ClearExtIntFlag Arguments Type uint32_t Name Direction input maskEIRQ Description Mask to specify which EIRQ's flag will be cleared. Include : SIUL.h Description : This function clears interrupt flag in the Interrupt Status Register (ISR) for the specified External Interrupt Request Input (EIRQ). Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_ClearExtIntFlag(SIUL_EIRQ31); • Command clears interrupt flag for EIRQ31 - pad PF13. 10.11 Function SIUL_SetPad The function SIUL_SetPad sets the GPIO pin state (logical HIGH). Prototype: void SIUL_SetPad(uint32_t pad); Table 10-11. SIUL_SetPad Arguments Type uint32_t Name pad Direction input Description Pad to be set - use either PCR pad number or some predefined name. Qorivva MCP5643L Basic Drivers, Rev. 1.0 88 Freescale Semiconductor, Inc. Chapter 10 SIUL driver Include : SIUL.h Description : This function sets state of the specified pad to the logical HIGH state. Remark: Pad should be previously configured as a digital output (see SIUL_DigitalOutput function). Code sample: SIUL_DigitalOutput(SIUL_PD8); SIUL_SetPad(SIUL_PD8); • First command configures pad PD8 as a digital output and the second command sets its state to logical HIGH. 10.12 Function SIUL_ClearPad The function SIUL_ClearPad clears the GPIO pin state (logical LOW). Prototype: void SIUL_ClearPad(uint32_t pad); Table 10-12. SIUL_ClearPad Arguments Type uint32_t Name Direction input pad Description Pad to be cleared - use either PCR pad number or some predefined name. Include : SIUL.h Description : This function clears state of the specified pad (logical LOW state). Remark: Predefined values can be combined using logical | operator. Code sample: SIUL_DigitalOutput(SIUL_PD8); SIUL_ClearPad(SIUL_PD8); • First command configures pad PD8 as a digital output and the second command clears its state (logical LOW). Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 89 Function SIUL_ClearPad Qorivva MCP5643L Basic Drivers, Rev. 1.0 90 Freescale Semiconductor, Inc. Chapter 11 Integration Integration is a necessary step of the software development. This chapter provides information on how the drivers were compiled and linked. This information is important to prevent any unsuccesful compilation and linking due to special dependecies. The drivers were compiled and linked using Freescale's CodeWarrior Development Studio for MPC55xx/MPC56xx (Classic IDE) vs. 2.8 (exact versions of the compiler, debugger and linker are shown in the table). Integration of the basic drivers using different toolset is possible, but it is not covered by this project. Table 11-1. Used Tools Tool Version Freescale C/C++ Compiler for Embedded PowerPC Version 4.3 build 209 Freescale Linker for Embedded PowerPC Version 4.3 build 209 Freescale Assembler for Embedded PowerPC Version 4.3 build 209 11.1 Compiler Options This chapter describes in detail all parameters that were used to compile these drivers. A list of all compiler parameters is shown in the table below. When the Codewarrior IDE is used, these parameters are hidden and can be modified in the compiler settings window (see Figure 11-1 and Figure 11-2). Table 11-2. Compiler Options Compiler Option Checked Parameter Description Force C++ Compilation No -lang c Specify source language - treat source as C always. ISO C++ Template Parser Yes -iso_teplates on Enable ISO C++ template parser. Use Instance Manager No -inst[mgr] off Enable C++ template instance manager. It must be enabled or disabled for all files in a target disable manager. Table continues on the next page... Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 91 Compiler Options Table 11-2. Compiler Options (continued) Compiler Option Checked Parameter Description Enable C++ Exceptions Yes -Cpp_exceptions on Enable C++ exceptions. Enable RTTI Yes -RTTI on Select run-time typing information (for C++). Enable bool Support Yes Enable wchar_t support Yes -wchar_t on Enable wchar_t as a built-in C++ type. EC++ Compatibility Mode No IPA Off -ipa off Select interprocedural analysis level - traditional mode (per-function optimization). Inline Depth Smart -inline smart Turn on inlining for 'inline' functions. Auto-Inline No Do not auto-inline small functions. Bottom-up linking Yes Inline bottom-up, starting from leaves of the call graph rather than the top-level function. ANSI strict No -strict off Specify ANSI strictness checking - Disabled. ANSI Keywords only No -ansi off Specify ANSI conformance options, overriding the given settings. Same as '-stdkeywords off', 'enum min', and '-strict off'. Expand Trigraphs No -trigraphs off Recognition of trigraphs is disabled. Legacy for-scoping No -for_scoping off Control legacy (non-standard) for-scoping behavior. When enabled, variables declared in 'for' loops are visible to the enclosing scope. When disabled, such variables are scoped to the loop only. Require function prototypes No -r[equireprotos] Require prototypes. Enable C99 Extensions No Enable GCC Extensions No -gcc[ext] off GCC language extensions will be disabled. Enums Always Int No -enum min Specify default size for enumeration types - use the minimal-sized type. Use Unsigned Chars Yes -char unsigned Passed to linker, set sign of 'char' - chars are unsigned. Pool Strings No -str[ings] reuse[no] Specify string constant options - Strings will not be pooled into a single object, but strings are reused (equivalent strings are the same object). Reuse Strings Yes Faster execution speed Yes -opt speed Optimized for speed and not for memory space. Smaller Code Size No Optimizations Off Will not be compiled with C99 extensions, but always only with standard C (done by option 'lang C)'. Qorivva MCP5643L Basic Drivers, Rev. 1.0 92 Freescale Semiconductor, Inc. Chapter 11 Integration Figure 11-1. CodeWarrior - Compiler Options1 Figure 11-2. CodeWarrior - Compiler Options2 Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 93 Linker Options 11.2 Assembler Options Configuration of the Code Warrior's assembler is shown in the table below. These parameters are hidden by deault and can be modified in the assembler settings window (see Figure 11-3). Table 11-3. Assembler Options Assembler Option Checked Parameter Description Labels Must End With ':' Yes -[no]colons Require labels to be followed by colons (':'). Directives Begin With '.' Yes -[no]period Require directives to be preceded with a period ('.'). Case Sensitive Identifiers Yes -[no]case Make identifiers case-sensitive. Allow Space In Operand Field Yes -[no]space Allow spaces in the operand field. GNU Compatible Syntax No GNU compatible syntax not allowed. Generate Listing File No Listing file will not be generated. Figure 11-3. CodeWarrior - Assembler Options Qorivva MCP5643L Basic Drivers, Rev. 1.0 94 Freescale Semiconductor, Inc. Chapter 11 Integration 11.3 Linker Options For linking this project, the Code Warrior linker was used. A list of linker parameters is shown in the table below. Parameters can be accessed in the linker options (see Figure 11-4 and Figure 11-5). Table 11-4. Compiler Options Linker Option Checked Link Mode Normal Generate DWARF Info Yes Use Full Path Names Yes Generate Link Map Parameter Description -linkmode normal Set linking mode, note that this affect link time performance. Yes -map Generate link map file. List Closure Yes -listclosure Display symbol closure in map file. List Unused Objects Yes -mapunused Include list of unused symbols in map file. List DWARF Objects No Do not include list DWARF objects in the map file. Suppress Warning Messages No Warning messages are not suppressed. Heap Address No Default Heap Address will be used. Stack Address No Default Stack Address will be used. Generate ROM Image Yes ROM Image Address 0x0003000 0 RAM Buffer Address 0x0003000 -rambuffer 0x00030000 Set address for RAM buffer used by ROM 0 images. '-rambuffer' is ignored if '-romaddr' is absent. Use Linker Command File Yes Code Address No Default address 65536 will be used. Data Address No Default configuration will be used - large data sections follow the code and large const sections. Small Data No Specifies the threshold size (in bytes) for an item considered by the linker to be small data.(The linker stores small data items in the Small Data address space. The compiler can generate faster code to access this data.) Small Data2 No Specifies the threshold size (in bytes) for an item considered by the linker to be small constant data. (The linker stores small constant data items in the Small Constant Data address space.) Binary File None -genbinary none Do not generate any binary file. Generate S-Record Yes -srec Generate an s-record file (by default <outfile>.mot filename will be used). Max Length 26 -sreclength 26 Specify length of S-records; implies '-srec'. For 'length', range 8 - 255. -romaddr 0x00030000 -lcf MPC5643L.lcf Set address for ROM image. Use the linker command file in <filename> for code and data addresses. '-codeaddr', 'dataaddr', '-sdataaddr' and '-sdata2addr' are ignored if '-lcf' is present. Table continues on the next page... Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 95 Linker Options Table 11-4. Compiler Options (continued) Linker Option Checked Parameter Description EOL Character DOS -sreceol dos Set end-of-line separator for S-record file (implies '-srec)'. DOS standard will be used. Entry Point __start -m[ain] __start Set main entry point for application or shared library; for 'symbol', maximum length 63 chars. Code Merging Off -code_merging off Code merging optimization and aggressive merging optimization will be Disabled. Aggressive Merging No VLE Enhance Merging No VLE enhance code merging optimization is Disabled. Far to Near Addressing No Far to near addressing optimization will be disabled. VLE Shorten Branches No VLE shorten BL optimization disabled. Optimizations Figure 11-4. CodeWarrior - Linker Options1 Qorivva MCP5643L Basic Drivers, Rev. 1.0 96 Freescale Semiconductor, Inc. Chapter 11 Integration Figure 11-5. CodeWarrior - Linker Options2 Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 97 Linker Options Qorivva MCP5643L Basic Drivers, Rev. 1.0 98 Freescale Semiconductor, Inc. Chapter 12 Revision History 12.1 Revision History Revision 1.0 Table 12-1. Revision History Date Description of Changes 2/2014 Initial Release 4/2014 Updated back page Qorivva MCP5643L Basic Drivers, Rev. 1.0 Freescale Semiconductor, Inc. 99 Revision History Qorivva MCP5643L Basic Drivers, Rev. 1.0 100 Freescale Semiconductor, Inc. How to Reach Us: Information in this document is provided solely to enable system and software implementers to use Freescale products. Home Page: freescale.com on the information in this document. Web Support: freescale.com/support warranty, representation, or guarantee regarding the suitability of its products for any particular purpose, nor does There are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits based Freescale reserves the right to make changes without further notice to any products herein. Freescale makes no Freescale assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. “Typical” parameters that may be provided in Freescale data sheets and/or specifications can and do vary in different applications, and actual performance may vary over time. All operating parameters, including “typicals,” must be validated for each customer application by customer’s technical experts. Freescale does not convey any license under its patent rights nor the rights of others. Freescale sells products pursuant to standard terms and conditions of sale, which can be found at the following address: freescale.com/SalesTermsandConditions. Freescale and the Freescale logo, SafeAssure, Qorivva and CodeWarrior are trademarks of Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. All other product or service names are the property of their respective owners. © 2014 Freescale Semiconductor, Inc. Document Number:KTMPC5643DBSWUG Rev. 1.0 4/2014