doc: renamed project
This commit is contained in:
committed by
Sylvan Arnold
parent
244e516bd8
commit
32618389d1
363
pico-sensor/McuLib/src/McuGenericSWSPI.c
Normal file
363
pico-sensor/McuLib/src/McuGenericSWSPI.c
Normal file
@@ -0,0 +1,363 @@
|
||||
/* ###################################################################
|
||||
** This component module is generated by Processor Expert. Do not modify it.
|
||||
** Filename : McuGenericSWSPI.h
|
||||
** Project : FRDM-K64F_Generator
|
||||
** Processor : MK64FN1M0VLL12
|
||||
** Component : GenericSWSPI
|
||||
** Version : Component 01.031, Driver 01.15, CPU db: 3.00.000
|
||||
** Compiler : GNU C Compiler
|
||||
** Date/Time : 2020-08-13, 18:42, # CodeGen: 675
|
||||
** Abstract :
|
||||
**
|
||||
** Settings :
|
||||
** Contents :
|
||||
** RecvChar - uint8_t McuGenericSWSPI_RecvChar(uint8_t *Chr);
|
||||
** SendChar - uint8_t McuGenericSWSPI_SendChar(uint8_t val);
|
||||
** CharsInRxBuf - uint8_t McuGenericSWSPI_CharsInRxBuf(void);
|
||||
** CharsInTxBuf - uint8_t McuGenericSWSPI_CharsInTxBuf(void);
|
||||
** SetShiftClockPolarity - uint8_t McuGenericSWSPI_SetShiftClockPolarity(uint8_t Edge);
|
||||
** SetIdleClockPolarity - uint8_t McuGenericSWSPI_SetIdleClockPolarity(uint8_t Level);
|
||||
** Write_ReadDummy - void McuGenericSWSPI_Write_ReadDummy(uint8_t val);
|
||||
** SetSlowMode - void McuGenericSWSPI_SetSlowMode(void);
|
||||
** SetFastMode - void McuGenericSWSPI_SetFastMode(void);
|
||||
** Deinit - void McuGenericSWSPI_Deinit(void);
|
||||
** Init - void McuGenericSWSPI_Init(void);
|
||||
**
|
||||
** * Copyright (c) 2013-2020, Erich Styger
|
||||
** * Web: https://mcuoneclipse.com
|
||||
** * SourceForge: https://sourceforge.net/projects/mcuoneclipse
|
||||
** * Git: https://github.com/ErichStyger/McuOnEclipse_PEx
|
||||
** * All rights reserved.
|
||||
** *
|
||||
** * Redistribution and use in source and binary forms, with or without modification,
|
||||
** * are permitted provided that the following conditions are met:
|
||||
** *
|
||||
** * - Redistributions of source code must retain the above copyright notice, this list
|
||||
** * of conditions and the following disclaimer.
|
||||
** *
|
||||
** * - Redistributions in binary form must reproduce the above copyright notice, this
|
||||
** * list of conditions and the following disclaimer in the documentation and/or
|
||||
** * other materials provided with the distribution.
|
||||
** *
|
||||
** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
** * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
** * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
** * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
** * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
** * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
** * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
** * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
** ###################################################################*/
|
||||
/*!
|
||||
** @file McuGenericSWSPI.h
|
||||
** @version 01.15
|
||||
** @brief
|
||||
**
|
||||
*/
|
||||
/*!
|
||||
** @addtogroup McuGenericSWSPI_module McuGenericSWSPI module documentation
|
||||
** @{
|
||||
*/
|
||||
|
||||
|
||||
/* MODULE McuGenericSWSPI. */
|
||||
#include "McuGenericSWSPI.h"
|
||||
|
||||
/* Include inherited components */
|
||||
#include "Clock1.h"
|
||||
#include "Input1.h"
|
||||
#include "Output1.h"
|
||||
#include "McuWait.h"
|
||||
#include "McuLib.h"
|
||||
|
||||
/* data-clock-clock */
|
||||
|
||||
#define OVERRUN_ERR 0x01 /* Overrun error flag bit */
|
||||
#define CHAR_IN_RX 0x08 /* Char is in RX buffer */
|
||||
|
||||
static uint8_t McuGenericSWSPI_FastMode; /* 0: slow, 1: fast */
|
||||
#define MOSI_IDLE_POLARITY 1 /* MOSI idle polarity is high */
|
||||
#define CLOCK_IDLE_POLARITY 0 /* Clock idle polarity is low */
|
||||
|
||||
static uint8_t CLKshift;
|
||||
static uint8_t CLKsampl;
|
||||
static uint8_t InputBuffer;
|
||||
static uint8_t SerFlag; /* Flags for serial communication */
|
||||
/* Bits: 0 - OverRun error */
|
||||
/* 1 - Unused */
|
||||
/* 2 - Unused */
|
||||
/* 3 - Char in RX buffer */
|
||||
/* 4 - Unused */
|
||||
/* 5 - Unused */
|
||||
/* 6 - Unused */
|
||||
/* 7 - Unused */
|
||||
#define McuGenericSWSPI_DELAY() \
|
||||
if (McuGenericSWSPI_FastMode) { /* we can change the speed at runtime */ \
|
||||
McuWait_Waitus(0); /* delay for some cycles */ \
|
||||
} else { \
|
||||
McuWait_Waitus(0); /* delay for some cycles */ \
|
||||
}
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SetFastMode (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Sets the fast mode
|
||||
** Parameters : None
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuGenericSWSPI_SetFastMode(void)
|
||||
{
|
||||
McuGenericSWSPI_FastMode = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SetSlowMode (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Changes to slow mode
|
||||
** Parameters : None
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuGenericSWSPI_SetSlowMode(void)
|
||||
{
|
||||
McuGenericSWSPI_FastMode = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : RecvChar (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** If any data received, this method returns one character,
|
||||
** otherwise it returns an error code (it does not wait for
|
||||
** data).
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** * Chr - A pointer to the received character.
|
||||
** Returns :
|
||||
** --- - Error code, possible codes:
|
||||
** ERR_OK - OK
|
||||
** ERR_RXEMPTY - No data in receiver
|
||||
** ERR_OVERRUN - Overrun error is detected
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuGenericSWSPI_RecvChar(uint8_t *Chr)
|
||||
{
|
||||
if(!(SerFlag & CHAR_IN_RX)) { /* Is char. received */
|
||||
return ERR_RXEMPTY;
|
||||
}
|
||||
*Chr = InputBuffer; /* Store the character */
|
||||
if(SerFlag&OVERRUN_ERR) { /* Is "overrun" occurred? */
|
||||
SerFlag &= ~(OVERRUN_ERR|CHAR_IN_RX); /* If yes, clear flags */
|
||||
return ERR_OVERRUN; /* ... and return error */
|
||||
} else {
|
||||
SerFlag &= ~CHAR_IN_RX; /* If no, clear flag */
|
||||
return ERR_OK; /* ... and return */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : Write_ReadDummy (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Writes to the bus, but does not read.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** val - value to put on the bus
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuGenericSWSPI_Write_ReadDummy(uint8_t val)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i<8; i++) {
|
||||
McuGenericSWSPI_DELAY();
|
||||
Output1_PutVal((bool)(val&128)); /* Set value on MOSI */
|
||||
InputBuffer <<= 1;
|
||||
McuGenericSWSPI_DELAY();
|
||||
Clock1_PutVal(CLKsampl); /* Set CLK to sample value */
|
||||
val <<= 1;
|
||||
Clock1_PutVal(CLKshift); /* Set CLK to shift value */
|
||||
}
|
||||
Output1_PutVal((bool)MOSI_IDLE_POLARITY); /* Set value on MOSI */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SendChar (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Sends one character to the channel.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** val - Character to send.
|
||||
** Returns :
|
||||
** --- - Error code, possible codes:
|
||||
** ERR_OK - OK
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuGenericSWSPI_SendChar(uint8_t val)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i<8; i++) {
|
||||
McuGenericSWSPI_DELAY();
|
||||
Output1_PutVal((bool)(val&128)); /* Set value on MOSI */
|
||||
InputBuffer <<= 1;
|
||||
McuGenericSWSPI_DELAY();
|
||||
Clock1_PutVal(CLKsampl); /* Set CLK to sample value */
|
||||
InputBuffer |= Input1_GetVal()?1:0; /* Read value from MISO */
|
||||
val <<= 1;
|
||||
Clock1_PutVal(CLKshift); /* Set CLK to shift value */
|
||||
}
|
||||
Output1_PutVal((bool)MOSI_IDLE_POLARITY); /* Set value on MOSI */
|
||||
if(SerFlag&CHAR_IN_RX) { /* Is char. received? */
|
||||
SerFlag |= OVERRUN_ERR; /* If yes then set "overrun" flag */
|
||||
} else {
|
||||
SerFlag |= CHAR_IN_RX; /* If no then set "char in Rx" flag */
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : CharsInRxBuf (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Returns number of characters in the input buffer.
|
||||
** Parameters : None
|
||||
** Returns :
|
||||
** --- - Returns number of characters in the input
|
||||
** buffer.
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuGenericSWSPI_CharsInRxBuf(void)
|
||||
{
|
||||
return (uint8_t)((SerFlag & CHAR_IN_RX)?(uint8_t)1:(uint8_t)0); /* Return number of chars in receive buffer */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : CharsInTxBuf (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Returns number of characters in the output buffer.
|
||||
** Parameters : None
|
||||
** Returns :
|
||||
** --- - Returns number of characters in the output
|
||||
** buffer.
|
||||
** ===================================================================
|
||||
*/
|
||||
#if 0 /* implemented as macro in the header file */
|
||||
uint8_t McuGenericSWSPI_CharsInTxBuf(void)
|
||||
{
|
||||
return 0; /* Return number of chars in transmit buffer */
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SetShiftClockPolarity (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Sets the shift clock polarity at runtime. Output data will
|
||||
** be shifted on the selected edge polarity.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** Edge - Edge polarity, possible values:
|
||||
** 0-falling edge,
|
||||
** 1-rising edge.
|
||||
** Returns :
|
||||
** --- - Error code, possible codes:
|
||||
** ERR_OK - OK
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuGenericSWSPI_SetShiftClockPolarity(uint8_t Edge)
|
||||
{
|
||||
CLKshift = (uint8_t)(Edge?(uint8_t)1:(uint8_t)0); /* Set shift value */
|
||||
CLKsampl = (uint8_t)(CLKshift^(uint8_t)0x01); /* Set sample value */
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : SetIdleClockPolarity (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Set the idle clock polarity at runtime. If communication
|
||||
** does not run, the clock signal will be set to the required
|
||||
** level.
|
||||
** Parameters :
|
||||
** NAME - DESCRIPTION
|
||||
** Level - Idle clock polarity:
|
||||
** 0-low
|
||||
** 1-high
|
||||
** Returns :
|
||||
** --- - Error code, possible codes:
|
||||
** ERR_OK - OK
|
||||
** ===================================================================
|
||||
*/
|
||||
uint8_t McuGenericSWSPI_SetIdleClockPolarity(uint8_t Level)
|
||||
{
|
||||
Clock1_PutVal((uint8_t)Level); /* Set CLK to (new) idle value */
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : Init (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Driver Initialization
|
||||
** Parameters : None
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuGenericSWSPI_Init(void)
|
||||
{
|
||||
#if McuLib_CONFIG_SDK_VERSION_USED != McuLib_CONFIG_SDK_PROCESSOR_EXPERT
|
||||
Input1_Init();
|
||||
Output1_Init();
|
||||
Clock1_Init();
|
||||
#endif
|
||||
McuGenericSWSPI_SetSlowMode(); /* slow mode is default */
|
||||
/* clock idle low, falling edge: Data - Sample - Shift */
|
||||
CLKsampl = 1;
|
||||
CLKshift = 0;
|
||||
Clock1_PutVal((bool)CLOCK_IDLE_POLARITY); /* Set CLK to idle value */
|
||||
Output1_PutVal((bool)MOSI_IDLE_POLARITY); /* Set value on MOSI */
|
||||
SerFlag = 0; /* Clear flags */
|
||||
}
|
||||
|
||||
/*
|
||||
** ===================================================================
|
||||
** Method : Deinit (component GenericSWSPI)
|
||||
**
|
||||
** Description :
|
||||
** Driver Deinitialization
|
||||
** Parameters : None
|
||||
** Returns : Nothing
|
||||
** ===================================================================
|
||||
*/
|
||||
void McuGenericSWSPI_Deinit(void)
|
||||
{
|
||||
#if McuLib_CONFIG_SDK_VERSION_USED != McuLib_CONFIG_SDK_PROCESSOR_EXPERT
|
||||
Input1_Deinit();
|
||||
Output1_Deinit();
|
||||
Clock1_Deinit();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* END __McuGenericSWSPI_H */
|
||||
|
||||
/*!
|
||||
** @}
|
||||
*/
|
||||
Reference in New Issue
Block a user