ISSDK  1.8
IoT Sensing Software Development Kit
board.c
Go to the documentation of this file.
1 /*
2  * Copyright 2019 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include <stdint.h>
9 #include "fsl_common.h"
10 #include "fsl_debug_console.h"
11 #include "board.h"
12 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
13 #include "fsl_lpi2c.h"
14 #endif /* SDK_I2C_BASED_COMPONENT_USED */
15  /*******************************************************************************
16  * Variables
17  ******************************************************************************/
18 
19 /*******************************************************************************
20  * Code
21  ******************************************************************************/
22 /* Initialize debug console. */
24 {
25  CLOCK_SetIpSrc(kCLOCK_Lpuart0, kCLOCK_IpSrcFircAsync);
26 
27  uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ;
28 
30 }
31 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED
32 void BOARD_LPI2C_Init(LPI2C_Type *base, uint32_t clkSrc_Hz)
33 {
34  lpi2c_master_config_t lpi2cConfig = {0};
35 
36  /*
37  * lpi2cConfig.debugEnable = false;
38  * lpi2cConfig.ignoreAck = false;
39  * lpi2cConfig.pinConfig = kLPI2C_2PinOpenDrain;
40  * lpi2cConfig.baudRate_Hz = 100000U;
41  * lpi2cConfig.busIdleTimeout_ns = 0;
42  * lpi2cConfig.pinLowTimeout_ns = 0;
43  * lpi2cConfig.sdaGlitchFilterWidth_ns = 0;
44  * lpi2cConfig.sclGlitchFilterWidth_ns = 0;
45  */
46  LPI2C_MasterGetDefaultConfig(&lpi2cConfig);
47  LPI2C_MasterInit(base, &lpi2cConfig, clkSrc_Hz);
48 }
49 
50 status_t BOARD_LPI2C_Send(LPI2C_Type *base,
51  uint8_t deviceAddress,
52  uint32_t subAddress,
53  uint8_t subAddressSize,
54  uint8_t *txBuff,
55  uint8_t txBuffSize)
56 {
57  status_t reVal;
58 
59  /* Send master blocking data to slave */
60  reVal = LPI2C_MasterStart(base, deviceAddress, kLPI2C_Write);
61  if (kStatus_Success == reVal)
62  {
63  while (LPI2C_MasterGetStatusFlags(base) & kLPI2C_MasterNackDetectFlag)
64  {
65  }
66 
67  reVal = LPI2C_MasterSend(base, &subAddress, subAddressSize);
68  if (reVal != kStatus_Success)
69  {
70  return reVal;
71  }
72 
73  reVal = LPI2C_MasterSend(base, txBuff, txBuffSize);
74  if (reVal != kStatus_Success)
75  {
76  return reVal;
77  }
78 
79  reVal = LPI2C_MasterStop(base);
80  if (reVal != kStatus_Success)
81  {
82  return reVal;
83  }
84  }
85 
86  return reVal;
87 }
88 
89 status_t BOARD_LPI2C_Receive(LPI2C_Type *base,
90  uint8_t deviceAddress,
91  uint32_t subAddress,
92  uint8_t subAddressSize,
93  uint8_t *rxBuff,
94  uint8_t rxBuffSize)
95 {
96  status_t reVal;
97 
98  reVal = LPI2C_MasterStart(base, deviceAddress, kLPI2C_Write);
99  if (kStatus_Success == reVal)
100  {
101  while (LPI2C_MasterGetStatusFlags(base) & kLPI2C_MasterNackDetectFlag)
102  {
103  }
104 
105  reVal = LPI2C_MasterSend(base, &subAddress, subAddressSize);
106  if (reVal != kStatus_Success)
107  {
108  return reVal;
109  }
110 
111  reVal = LPI2C_MasterRepeatedStart(base, deviceAddress, kLPI2C_Read);
112  if (reVal != kStatus_Success)
113  {
114  return reVal;
115  }
116 
117  reVal = LPI2C_MasterReceive(base, rxBuff, rxBuffSize);
118  if (reVal != kStatus_Success)
119  {
120  return reVal;
121  }
122 
123  reVal = LPI2C_MasterStop(base);
124  if (reVal != kStatus_Success)
125  {
126  return reVal;
127  }
128  }
129  return reVal;
130 }
131 
132 void BOARD_Accel_I2C_Init(void)
133 {
135 }
136 
137 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff)
138 {
139  uint8_t data = (uint8_t)txBuff;
140 
141  return BOARD_LPI2C_Send(BOARD_ACCEL_I2C_BASEADDR, deviceAddress, subAddress, subaddressSize, &data, 1);
142 }
143 
144 status_t BOARD_Accel_I2C_Receive(
145  uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
146 {
147  return BOARD_LPI2C_Receive(BOARD_ACCEL_I2C_BASEADDR, deviceAddress, subAddress, subaddressSize, rxBuff, rxBuffSize);
148 }
149 #endif /* SDK_I2C_BASED_COMPONENT_USED */
#define BOARD_ACCEL_I2C_CLOCK_FREQ
Definition: board.h:35
#define BOARD_DEBUG_UART_CLK_FREQ
Definition: board.h:26
#define BOARD_DEBUG_UART_BAUDRATE
Definition: board.h:31
#define BOARD_ACCEL_I2C_BASEADDR
Definition: board.h:129
uint8_t data[FXLS8962_DATA_SIZE]
#define BOARD_DEBUG_UART_INSTANCE
Definition: board.h:26
void BOARD_InitDebugConsole(void)
Definition: board.c:15
#define BOARD_DEBUG_UART_TYPE
Definition: board.h:23