8 #include "fsl_common.h" 9 #include "fsl_debug_console.h" 11 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED 12 #include "fsl_lpi2c.h" 14 #include "fsl_iomuxc.h" 26 #if DEBUG_CONSOLE_UART_INDEX == 1 27 return CLOCK_GetRootClockFreq(kCLOCK_Root_Lpuart1);
28 #elif DEBUG_CONSOLE_UART_INDEX == 12 29 return CLOCK_GetRootClockFreq(kCLOCK_Root_Lpuart12);
31 return CLOCK_GetRootClockFreq(kCLOCK_Root_Lpuart2);
42 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED 43 void BOARD_LPI2C_Init(LPI2C_Type *base, uint32_t clkSrc_Hz)
45 lpi2c_master_config_t lpi2cConfig = {0};
57 LPI2C_MasterGetDefaultConfig(&lpi2cConfig);
58 LPI2C_MasterInit(base, &lpi2cConfig, clkSrc_Hz);
61 status_t BOARD_LPI2C_Send(LPI2C_Type *base,
62 uint8_t deviceAddress,
64 uint8_t subAddressSize,
68 lpi2c_master_transfer_t xfer;
70 xfer.flags = kLPI2C_TransferDefaultFlag;
71 xfer.slaveAddress = deviceAddress;
72 xfer.direction = kLPI2C_Write;
73 xfer.subaddress = subAddress;
74 xfer.subaddressSize = subAddressSize;
76 xfer.dataSize = txBuffSize;
78 return LPI2C_MasterTransferBlocking(base, &xfer);
81 status_t BOARD_LPI2C_Receive(LPI2C_Type *base,
82 uint8_t deviceAddress,
84 uint8_t subAddressSize,
88 lpi2c_master_transfer_t xfer;
90 xfer.flags = kLPI2C_TransferDefaultFlag;
91 xfer.slaveAddress = deviceAddress;
92 xfer.direction = kLPI2C_Read;
93 xfer.subaddress = subAddress;
94 xfer.subaddressSize = subAddressSize;
96 xfer.dataSize = rxBuffSize;
98 return LPI2C_MasterTransferBlocking(base, &xfer);
101 status_t BOARD_LPI2C_SendSCCB(LPI2C_Type *base,
102 uint8_t deviceAddress,
104 uint8_t subAddressSize,
108 lpi2c_master_transfer_t xfer;
110 xfer.flags = kLPI2C_TransferDefaultFlag;
111 xfer.slaveAddress = deviceAddress;
112 xfer.direction = kLPI2C_Write;
113 xfer.subaddress = subAddress;
114 xfer.subaddressSize = subAddressSize;
116 xfer.dataSize = txBuffSize;
118 return LPI2C_MasterTransferBlocking(base, &xfer);
121 status_t BOARD_LPI2C_ReceiveSCCB(LPI2C_Type *base,
122 uint8_t deviceAddress,
124 uint8_t subAddressSize,
129 lpi2c_master_transfer_t xfer;
131 xfer.flags = kLPI2C_TransferDefaultFlag;
132 xfer.slaveAddress = deviceAddress;
133 xfer.direction = kLPI2C_Write;
134 xfer.subaddress = subAddress;
135 xfer.subaddressSize = subAddressSize;
139 status = LPI2C_MasterTransferBlocking(base, &xfer);
141 if (kStatus_Success == status)
143 xfer.subaddressSize = 0;
144 xfer.direction = kLPI2C_Read;
146 xfer.dataSize = rxBuffSize;
148 status = LPI2C_MasterTransferBlocking(base, &xfer);
154 void BOARD_Accel_I2C_Init(
void)
159 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff)
161 uint8_t
data = (uint8_t)txBuff;
166 status_t BOARD_Accel_I2C_Receive(
167 uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
169 return BOARD_LPI2C_Receive(
BOARD_ACCEL_I2C_BASEADDR, deviceAddress, subAddress, subaddressSize, rxBuff, rxBuffSize);
172 void BOARD_Codec_I2C_Init(
void)
177 status_t BOARD_Codec_I2C_Send(
178 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize,
const uint8_t *txBuff, uint8_t txBuffSize)
184 status_t BOARD_Codec_I2C_Receive(
185 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
187 return BOARD_LPI2C_Receive(
BOARD_CODEC_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, rxBuff, rxBuffSize);
190 void BOARD_Camera_I2C_Init(
void)
192 const clock_root_config_t lpi2cClockConfig = {
205 status_t BOARD_Camera_I2C_Send(
206 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize,
const uint8_t *txBuff, uint8_t txBuffSize)
212 status_t BOARD_Camera_I2C_Receive(
213 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
219 status_t BOARD_Camera_I2C_SendSCCB(
220 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize,
const uint8_t *txBuff, uint8_t txBuffSize)
226 status_t BOARD_Camera_I2C_ReceiveSCCB(
227 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
233 void BOARD_MIPIPanelTouch_I2C_Init(
void)
235 const clock_root_config_t lpi2cClockConfig = {
249 status_t BOARD_MIPIPanelTouch_I2C_Send(
250 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize,
const uint8_t *txBuff, uint8_t txBuffSize)
253 (uint8_t *)txBuff, txBuffSize);
256 status_t BOARD_MIPIPanelTouch_I2C_Receive(
257 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
267 #if defined(__CC_ARM) || defined(__ARMCC_VERSION) 268 extern uint32_t Image$$RW_m_ncache$$Base[];
270 extern uint32_t Image$$RW_m_ncache_unused$$Base[];
271 extern uint32_t Image$$RW_m_ncache_unused$$ZI$$Limit[];
272 uint32_t nonCacheStart = (uint32_t)Image$$RW_m_ncache$$Base;
273 uint32_t
size = ((uint32_t)Image$$RW_m_ncache_unused$$Base == nonCacheStart) ?
275 ((uint32_t)Image$$RW_m_ncache_unused$$ZI$$Limit - nonCacheStart);
276 #elif defined(__MCUXPRESSO) 277 extern uint32_t __base_NCACHE_REGION;
278 extern uint32_t __top_NCACHE_REGION;
279 uint32_t nonCacheStart = (uint32_t)(&__base_NCACHE_REGION);
280 uint32_t size = (uint32_t)(&__top_NCACHE_REGION) - nonCacheStart;
281 #elif defined(__ICCARM__) || defined(__GNUC__) 282 extern uint32_t __NCACHE_REGION_START[];
283 extern uint32_t __NCACHE_REGION_SIZE[];
284 uint32_t nonCacheStart = (uint32_t)__NCACHE_REGION_START;
285 uint32_t size = (uint32_t)__NCACHE_REGION_SIZE;
289 #if defined(__ICACHE_PRESENT) && __ICACHE_PRESENT 291 if (SCB_CCR_IC_Msk == (SCB_CCR_IC_Msk & SCB->CCR))
296 #if defined(__DCACHE_PRESENT) && __DCACHE_PRESENT 297 if (SCB_CCR_DC_Msk == (SCB_CCR_DC_Msk & SCB->CCR))
346 MPU->RBAR = ARM_MPU_RBAR(0, 0x80000000U);
347 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_512MB);
350 MPU->RBAR = ARM_MPU_RBAR(1, 0x60000000U);
351 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_512MB);
354 MPU->RBAR = ARM_MPU_RBAR(2, 0x00000000U);
355 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_1GB);
358 MPU->RBAR = ARM_MPU_RBAR(3, 0x00000000U);
359 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB);
362 MPU->RBAR = ARM_MPU_RBAR(4, 0x20000000U);
363 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB);
366 MPU->RBAR = ARM_MPU_RBAR(5, 0x20200000U);
367 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_1MB);
370 MPU->RBAR = ARM_MPU_RBAR(6, 0x20300000U);
371 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_512KB);
373 #if defined(XIP_EXTERNAL_FLASH) && (XIP_EXTERNAL_FLASH == 1) 375 MPU->RBAR = ARM_MPU_RBAR(7, 0x30000000U);
376 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_RO, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_16MB);
381 MPU->RBAR = ARM_MPU_RBAR(8, 0x80000000U);
382 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64MB);
385 while ((size >> i) > 0x1U)
393 assert(!(nonCacheStart % size));
394 assert(size == (uint32_t)(1 << i));
398 MPU->RBAR = ARM_MPU_RBAR(9, nonCacheStart);
399 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 1, 0, 0, 0, 0, i - 1);
403 ARM_MPU_Enable(MPU_CTRL_PRIVDEFENA_Msk);
406 #if defined(__DCACHE_PRESENT) && __DCACHE_PRESENT 409 #if defined(__ICACHE_PRESENT) && __ICACHE_PRESENT
#define BOARD_ACCEL_I2C_CLOCK_FREQ
#define BOARD_CODEC_I2C_CLOCK_FREQ
#define BOARD_CAMERA_I2C_BASEADDR
uint32_t BOARD_DebugConsoleSrcFreq(void)
#define BOARD_DEBUG_UART_BAUDRATE
#define BOARD_CAMERA_I2C_CLOCK_DIVIDER
#define BOARD_ACCEL_I2C_BASEADDR
void BOARD_SD_Pin_Config(uint32_t speed, uint32_t strength)
uint8_t data[FXLS8962_DATA_SIZE]
void BOARD_MMC_Pin_Config(uint32_t speed, uint32_t strength)
#define BOARD_MIPI_PANEL_TOUCH_I2C_CLOCK_DIVIDER
#define BOARD_CAMERA_I2C_CLOCK_ROOT
#define BOARD_DEBUG_UART_INSTANCE
#define BOARD_MIPI_PANEL_TOUCH_I2C_BASEADDR
#define BOARD_CODEC_I2C_BASEADDR
#define BOARD_MIPI_PANEL_TOUCH_I2C_CLOCK_SOURCE
void BOARD_ConfigMPU(void)
#define BOARD_CAMERA_I2C_CLOCK_SOURCE
#define BOARD_MIPI_PANEL_TOUCH_I2C_CLOCK_ROOT
void BOARD_InitDebugConsole(void)
#define BOARD_DEBUG_UART_TYPE