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" 31 if (CLOCK_GetMux(kCLOCK_UartMux) == 0)
33 freq = (CLOCK_GetPllFreq(kCLOCK_PllUsb1) / 6U) / (CLOCK_GetDiv(kCLOCK_UartDiv) + 1U);
37 freq = CLOCK_GetOscFreq() / (CLOCK_GetDiv(kCLOCK_UartDiv) + 1U);
53 IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_02_USDHC1_CMD,
54 IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
55 IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
56 IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |
57 IOMUXC_SW_PAD_CTL_PAD_DSE(strength));
58 IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_03_USDHC1_CLK,
59 IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
60 IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(0) |
61 IOMUXC_SW_PAD_CTL_PAD_DSE(strength));
62 IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_04_USDHC1_DATA0,
63 IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
64 IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
65 IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |
66 IOMUXC_SW_PAD_CTL_PAD_DSE(strength));
67 IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_05_USDHC1_DATA1,
68 IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
69 IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
70 IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |
71 IOMUXC_SW_PAD_CTL_PAD_DSE(strength));
72 IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_00_USDHC1_DATA2,
73 IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
74 IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
75 IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |
76 IOMUXC_SW_PAD_CTL_PAD_DSE(strength));
77 IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_01_USDHC1_DATA3,
78 IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) | IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
79 IOMUXC_SW_PAD_CTL_PAD_PKE_MASK | IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
80 IOMUXC_SW_PAD_CTL_PAD_HYS_MASK | IOMUXC_SW_PAD_CTL_PAD_PUS(1) |
81 IOMUXC_SW_PAD_CTL_PAD_DSE(strength));
91 #if defined(__CC_ARM) || defined(__ARMCC_VERSION) 92 extern uint32_t Image$$RW_m_ncache$$Base[];
94 extern uint32_t Image$$RW_m_ncache_unused$$Base[];
95 extern uint32_t Image$$RW_m_ncache_unused$$ZI$$Limit[];
96 uint32_t nonCacheStart = (uint32_t)Image$$RW_m_ncache$$Base;
97 uint32_t
size = ((uint32_t)Image$$RW_m_ncache_unused$$Base == nonCacheStart) ?
99 ((uint32_t)Image$$RW_m_ncache_unused$$ZI$$Limit - nonCacheStart);
100 #elif defined(__MCUXPRESSO) 101 extern uint32_t __base_NCACHE_REGION;
102 extern uint32_t __top_NCACHE_REGION;
103 uint32_t nonCacheStart = (uint32_t)(&__base_NCACHE_REGION);
104 uint32_t size = (uint32_t)(&__top_NCACHE_REGION) - nonCacheStart;
105 #elif defined(__ICCARM__) || defined(__GNUC__) 106 extern uint32_t __NCACHE_REGION_START[];
107 extern uint32_t __NCACHE_REGION_SIZE[];
108 uint32_t nonCacheStart = (uint32_t)__NCACHE_REGION_START;
109 uint32_t size = (uint32_t)__NCACHE_REGION_SIZE;
114 if (SCB_CCR_IC_Msk == (SCB_CCR_IC_Msk & SCB->CCR))
118 if (SCB_CCR_DC_Msk == (SCB_CCR_DC_Msk & SCB->CCR))
171 MPU->RBAR = ARM_MPU_RBAR(0, 0x00000000U);
172 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_NONE, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_4GB);
175 MPU->RBAR = ARM_MPU_RBAR(1, 0x80000000U);
176 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_512MB);
179 MPU->RBAR = ARM_MPU_RBAR(2, 0x60000000U);
180 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_512MB);
182 #if defined(XIP_EXTERNAL_FLASH) && (XIP_EXTERNAL_FLASH == 1) 184 MPU->RBAR = ARM_MPU_RBAR(3, 0x60000000U);
185 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_RO, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_4MB);
189 MPU->RBAR = ARM_MPU_RBAR(4, 0x00000000U);
190 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_1GB);
193 MPU->RBAR = ARM_MPU_RBAR(5, 0x00000000U);
194 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64KB);
197 MPU->RBAR = ARM_MPU_RBAR(6, 0x20000000U);
198 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64KB);
201 MPU->RBAR = ARM_MPU_RBAR(7, 0x20200000U);
202 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_128KB);
205 MPU->RBAR = ARM_MPU_RBAR(8, 0x80000000U);
206 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_32MB);
208 while ((size >> i) > 0x1U)
216 assert(!(nonCacheStart % size));
217 assert(size == (uint32_t)(1 << i));
221 MPU->RBAR = ARM_MPU_RBAR(9, nonCacheStart);
222 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 1, 0, 0, 0, 0, i - 1);
226 MPU->RBAR = ARM_MPU_RBAR(10, 0x40000000);
227 MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 2, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_4MB);
230 ARM_MPU_Enable(MPU_CTRL_PRIVDEFENA_Msk);
237 #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED 238 void BOARD_LPI2C_Init(LPI2C_Type *base, uint32_t clkSrc_Hz)
240 lpi2c_master_config_t lpi2cConfig = {0};
252 LPI2C_MasterGetDefaultConfig(&lpi2cConfig);
253 LPI2C_MasterInit(base, &lpi2cConfig, clkSrc_Hz);
256 status_t BOARD_LPI2C_Send(LPI2C_Type *base,
257 uint8_t deviceAddress,
259 uint8_t subAddressSize,
263 lpi2c_master_transfer_t xfer;
265 xfer.flags = kLPI2C_TransferDefaultFlag;
266 xfer.slaveAddress = deviceAddress;
267 xfer.direction = kLPI2C_Write;
268 xfer.subaddress = subAddress;
269 xfer.subaddressSize = subAddressSize;
271 xfer.dataSize = txBuffSize;
273 return LPI2C_MasterTransferBlocking(base, &xfer);
276 status_t BOARD_LPI2C_Receive(LPI2C_Type *base,
277 uint8_t deviceAddress,
279 uint8_t subAddressSize,
283 lpi2c_master_transfer_t xfer;
285 xfer.flags = kLPI2C_TransferDefaultFlag;
286 xfer.slaveAddress = deviceAddress;
287 xfer.direction = kLPI2C_Read;
288 xfer.subaddress = subAddress;
289 xfer.subaddressSize = subAddressSize;
291 xfer.dataSize = rxBuffSize;
293 return LPI2C_MasterTransferBlocking(base, &xfer);
296 void BOARD_Accel_I2C_Init(
void)
301 status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff)
303 uint8_t
data = (uint8_t)txBuff;
308 status_t BOARD_Accel_I2C_Receive(
309 uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
311 return BOARD_LPI2C_Receive(
BOARD_ACCEL_I2C_BASEADDR, deviceAddress, subAddress, subaddressSize, rxBuff, rxBuffSize);
314 void BOARD_Codec_I2C_Init(
void)
319 status_t BOARD_Codec_I2C_Send(
320 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize,
const uint8_t *txBuff, uint8_t txBuffSize)
326 status_t BOARD_Codec_I2C_Receive(
327 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
329 return BOARD_LPI2C_Receive(
BOARD_CODEC_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, rxBuff, rxBuffSize);
#define BOARD_ACCEL_I2C_CLOCK_FREQ
#define BOARD_CODEC_I2C_CLOCK_FREQ
uint32_t BOARD_DebugConsoleSrcFreq(void)
#define BOARD_DEBUG_UART_BAUDRATE
#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_DEBUG_UART_INSTANCE
#define BOARD_CODEC_I2C_BASEADDR
void BOARD_ConfigMPU(void)
void BOARD_InitDebugConsole(void)
#define BOARD_DEBUG_UART_TYPE