42 #include "fsl_gpio_driver.h"
46 #define RLI1_TASK_NAME "RLI1_task"
48 #define RLI1_TASK_STACK_SIZE 1280
50 #define RLI1_TASK_PRIORITY 12
106 static uint8 rli_spi_cmd_len;
107 static uint8 rli_spi_cmd_type;
121 .config.outputLogic = 1,
122 .config.slewRate = kPortSlowSlewRate,
123 .config.isOpenDrainEnabled =
false,
124 .config.driveStrength = kPortLowDriveStrength,
127 .pinName = GPIO_PINS_OUT_OF_RANGE,
138 .bitsPerSec = 500000U,
139 .dataBusConfig.bitsPerFrame = 8U,
140 .dataBusConfig.clkPolarity = kDspiClockPolarity_ActiveHigh,
141 .dataBusConfig.clkPhase = kDspiClockPhase_FirstEdge,
142 .dataBusConfig.direction = kDspiMsbFirst,
146 .whichCtar = kDspiCtar0,
147 .isSckContinuous =
false,
148 .isChipSelectContinuous =
false,
149 .whichPcs = kDspiPcs0,
150 .pcsPolarity = kDspiPcs_ActiveHigh,
153 .pSlaveInfo = &rli_spi_sensor_type
156 static uint8 spiReadCmdBuffer[64] = {0};
157 static uint8 spiReadDataBuffer[64] = {0};
158 static uint8 spiWriteCmdDataBuffer[64] = {0};
178 uint8 portName, pinNumber, spiHdrType;
181 spiHdrType = (spiAddress & 0x0400) >> 8;
182 portName = (spiAddress & 0x00E0) >> 5;
183 pinNumber = (spiAddress & 0x001F);
189 rli_spi_cmd_type = 2;
193 rli_spi_cmd_type = 1;
198 rli_spi_cmd_type = 0;
200 gpioX_OutConfig0[0].pinName = GPIO_MAKE_PIN(portName, pinNumber);
208 GPIO_DRV_OutputPinInit(gpioX_OutConfig0);
217 uint8 *pWBuff = (
uint8*)spiWriteCmdDataBuffer;
218 uint8 *pRBuff = (
uint8*)(spiWriteCmdDataBuffer + size + rli_spi_cmd_len);
220 switch(rli_spi_cmd_type)
223 *(pWBuff) = (offset | 0x40) << 1;
226 *(pWBuff) = offset & 0x7F;
230 *(pWBuff) = offset | 0x80;
231 *(pWBuff+1) = offset & 0x80;
238 pSlaveCmd->
size = size + rli_spi_cmd_len;
243 GPIO_DRV_ClearPinOutput(gpioX_OutConfig0[0].pinName);
253 GPIO_DRV_SetPinOutput(gpioX_OutConfig0[0].pinName);
265 switch(rli_spi_cmd_type)
268 *(pWBuff) = (offset & 0x7F) << 1 ;
271 *(pWBuff) = offset | 0x80;
275 *(pWBuff) = offset & 0x7F;
276 *(pWBuff + 1) = offset & 0x80;
280 pSlaveCmd->
size = size + rli_spi_cmd_len;
285 GPIO_DRV_ClearPinOutput(gpioX_OutConfig0[0].pinName);
295 GPIO_DRV_SetPinOutput(gpioX_OutConfig0[0].pinName);
const spi_master_CommSpecificInfo_t RLI_SPI_DeviceInfo
isf_status_t rli_spi_slave_read_postprocess(void *pCmdOut, void *pDataOut)
#define ISF_MEM_CPY(src, dest, number_of_bytes)
Macro for the memory copy.
void isf_system_sync(void)
This function synchronizes the user tasks and the system initialization.
This structure defines the slave specific spi information.
spi_master_busConfig_t busConfig
isf_status_t rli_spi_slave_init(void)
#define RLI1_TASK_PRIORITY
isf_status_t rli_spi_slave_read_preprocess(void *pCmdOut, uint32 offset, uint32 size)
task_param_t os_task_param_t
The isf_util.h file contains the utility method declarations and macros.
isf_status_t rli_spi_slave_write_preprocess(void *pCmdOut, uint32 offset, uint32 size, void *pWritebuffer)
isf_status_t(* fnwritepreProcessing_t)(void *cmdOut, uint32 offset, uint32 size, void *writebuffer)
This structure defines the spi slave command format.
isf_status_t(* fnwritepostProcossing_t)(void *cmd)
spi_master_CommSpecificInfo_t rli_spi_get_config(uint16 spiAddress)
unsigned short int uint16
gpio_output_pin_user_config_t gpioX_OutConfig0[]
isf_status_t(* fnreadpreProcessing_t)(void *cmdout, uint32 offset, uint32 size)
OSA_TASK_DEFINE(RLI1, RLI1_TASK_STACK_SIZE)
int32 isf_status_t
ISF return status type.
isf_spi_master_types.h defines the spi protocol adapter structure and types.
#define RLI1_TASK_STACK_SIZE
spi_master_slaveInfo_t rli_spi_sensor_type
isf_status_t(* fnreadpostProcossing_t)(void *cmd, void *dataOut)
isf_status_t rli_spi_slave_write_postprocess(void *pCmdOut)
void RLI1_MainTask(os_task_param_t task_init_data)
isf_status_t(* fnslaveinit_t)(void)