MCUXpresso_MIMXRT1052xxxxB/boards/evkbimxrt1050/demo_apps/sai_peripheral/peripherals.c
2022-04-08 22:46:35 +08:00

373 lines
15 KiB
C

/*
* Copyright 2019 NXP
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/***********************************************************************************************************************
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
**********************************************************************************************************************/
/* clang-format off */
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
!!GlobalInfo
product: Peripherals v6.0
processor: MIMXRT1052xxxxB
package_id: MIMXRT1052DVL6B
mcu_data: ksdk2_0
processor_version: 6.0.1
functionalGroups:
- name: BOARD_InitPeripherals
called_from_default_init: true
selectedCore: core0
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
component:
- type: 'system'
- type_id: 'system_54b53072540eeeb8f8e9343e71f28176'
- global_system_definitions: []
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
component:
- type: 'msg'
- type_id: 'msg_6e2baaf3b97dbeef01c0043275f9a0e7'
- global_messages: []
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
/* clang-format on */
/***********************************************************************************************************************
* Included files
**********************************************************************************************************************/
#include "peripherals.h"
/***********************************************************************************************************************
* BOARD_InitPeripherals functional group
**********************************************************************************************************************/
/***********************************************************************************************************************
* DEMO_eDMA initialization code
**********************************************************************************************************************/
/* clang-format off */
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
instance:
- name: 'DEMO_eDMA'
- type: 'edma'
- mode: 'basic'
- type_id: 'edma_a23fca76a894e1bcdf9d01a687505ff9'
- functional_group: 'BOARD_InitPeripherals'
- peripheral: 'DMA0'
- config_sets:
- fsl_edma:
- common_settings:
- enableContinuousLinkMode: 'false'
- enableHaltOnError: 'true'
- enableRoundRobinArbitration: 'false'
- enableDebugMode: 'false'
- dma_table: []
- edma_channels: []
- quick_selection: 'default'
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
/* clang-format on */
const edma_config_t DEMO_eDMA_config = {.enableContinuousLinkMode = false,
.enableHaltOnError = true,
.enableRoundRobinArbitration = false,
.enableDebugMode = false};
void DEMO_eDMA_init(void)
{
}
/***********************************************************************************************************************
* DEMO_SAI initialization code
**********************************************************************************************************************/
/* clang-format off */
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
instance:
- name: 'DEMO_SAI'
- type: 'sai'
- mode: 'edma'
- type_id: 'sai_930e9b093093df3f492b3fa05284d81f'
- functional_group: 'BOARD_InitPeripherals'
- peripheral: 'SAI1'
- config_sets:
- fsl_sai:
- usage: 'record_playback'
- signal_config:
- 0:
- sourceTx: 'Tx'
- sourceRx: 'Tx'
- 1:
- sourceTx: 'Tx'
- sourceRx: 'Tx'
- syncSwapI: []
- bclkTxSetting: []
- bclkRxSetting: []
- syncTxSetting: []
- syncRxSetting: []
- whole:
- tx_group:
- sai_transceiver:
- bitClock:
- modeM: 'master'
- bitClockSource: 'kSAI_BclkSourceMclkOption1'
- bitClockSourceFreq: 'custom:12288750'
- bclkPolarityM: 'kSAI_PolarityActiveLow'
- bclkInputDelayM: 'false'
- frameSync:
- modeM: 'master'
- frameSyncWidthM: '16'
- frameSyncPolarityM: 'kSAI_PolarityActiveLow'
- frameSyncEarlyM: 'true'
- sampleRate_Hz: 'kSAI_SampleRate16KHz'
- channelMask: 'kSAI_Channel0Mask'
- serialData:
- dataMode: 'kSAI_DataPinStateOutputZero'
- differentFirstWord: 'false'
- sameDataWordLengthM: 'kSAI_WordWidth16bits'
- dataOrder: 'kSAI_DataMSB'
- dataFirstBitShiftedM: '16'
- dataWordNumM: '2'
- dataMasked_config:
- dataMasked_L:
- 0: 'false'
- 1: 'false'
- 2: 'false'
- 3: 'false'
- 4: 'false'
- 5: 'false'
- 6: 'false'
- 7: 'false'
- 8: 'false'
- 9: 'false'
- 10: 'false'
- 11: 'false'
- 12: 'false'
- 13: 'false'
- 14: 'false'
- 15: 'false'
- dataMasked_H:
- 0: 'false'
- 1: 'false'
- 2: 'false'
- 3: 'false'
- 4: 'false'
- 5: 'false'
- 6: 'false'
- 7: 'false'
- 8: 'false'
- 9: 'false'
- 10: 'false'
- 11: 'false'
- 12: 'false'
- 13: 'false'
- 14: 'false'
- 15: 'false'
- fifo:
- fifoWatermarkM: '16'
- fifoPacking: 'kSAI_FifoPackingDisabled'
- fifoContinueOneError: 'true'
- edma_group:
- enable_edma_channel: 'true'
- edma_channel:
- eDMAn: '0'
- eDMA_source: 'kDmaRequestMuxSai1Tx'
- enable_custom_name: 'true'
- handle_custom_name: 'dmaTxHandle'
- sai_edma_handle:
- enable_custom_name: 'true'
- handle_custom_name: 'txHandle'
- init_callback: 'true'
- callback_fcn: 'txCallback'
- user_data: ''
- rx_group:
- sai_transceiver:
- bitClock:
- modeM: 'master'
- bitClockSource: 'kSAI_BclkSourceMclkDiv'
- bitClockSourceFreq: 'BOARD_BootClockRUN'
- bclkPolarityM: 'kSAI_PolarityActiveLow'
- bclkInputDelayM: 'false'
- frameSync:
- modeM: 'master'
- frameSyncWidthM: '16'
- frameSyncPolarityM: 'kSAI_PolarityActiveLow'
- frameSyncEarlyM: 'true'
- sampleRate_Hz: 'kSAI_SampleRate16KHz'
- channelMask: 'kSAI_Channel0Mask'
- serialData:
- dataMode: 'kSAI_DataPinStateTriState'
- differentFirstWord: 'false'
- sameDataWordLengthM: 'kSAI_WordWidth16bits'
- dataOrder: 'kSAI_DataMSB'
- dataFirstBitShiftedM: '16'
- dataWordNumM: '2'
- dataMasked_config:
- dataMasked_L:
- 0: 'false'
- 1: 'false'
- 2: 'false'
- 3: 'false'
- 4: 'false'
- 5: 'false'
- 6: 'false'
- 7: 'false'
- 8: 'false'
- 9: 'false'
- 10: 'false'
- 11: 'false'
- 12: 'false'
- 13: 'false'
- 14: 'false'
- 15: 'false'
- dataMasked_H:
- 0: 'false'
- 1: 'false'
- 2: 'false'
- 3: 'false'
- 4: 'false'
- 5: 'false'
- 6: 'false'
- 7: 'false'
- 8: 'false'
- 9: 'false'
- 10: 'false'
- 11: 'false'
- 12: 'false'
- 13: 'false'
- 14: 'false'
- 15: 'false'
- fifo:
- fifoWatermarkM: '16'
- fifoPacking: 'kSAI_FifoPackingDisabled'
- fifoContinueOneError: 'true'
- edma_group:
- enable_edma_channel: 'true'
- edma_channel:
- eDMAn: '1'
- eDMA_source: 'kDmaRequestMuxSai1Rx'
- enable_custom_name: 'true'
- handle_custom_name: 'dmaRxHandle'
- sai_edma_handle:
- enable_custom_name: 'true'
- handle_custom_name: 'rxHandle'
- init_callback: 'true'
- callback_fcn: 'rxCallback'
- user_data: ''
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
/* clang-format on */
/* DEMO_SAI Tx configuration */
sai_transceiver_t DEMO_SAI_Tx_config = {
.masterSlave = kSAI_Master,
.bitClock = {.bclkSrcSwap = false,
.bclkSource = kSAI_BclkSourceMclkOption1,
.bclkPolarity = kSAI_PolarityActiveLow,
.bclkInputDelay = false},
.frameSync =
{
.frameSyncWidth = 16U,
.frameSyncPolarity = kSAI_PolarityActiveLow,
.frameSyncEarly = true,
},
.syncMode = kSAI_ModeAsync,
.channelMask = kSAI_Channel0Mask,
.startChannel = 0U,
.endChannel = 0U,
.channelNums = 1U,
.serialData = {.dataMode = kSAI_DataPinStateOutputZero,
.dataWord0Length = (uint8_t)kSAI_WordWidth16bits,
.dataWordNLength = (uint8_t)kSAI_WordWidth16bits,
.dataWordLength = (uint8_t)kSAI_WordWidth16bits,
.dataOrder = kSAI_DataMSB,
.dataFirstBitShifted = 16U,
.dataWordNum = 2U,
.dataMaskedWord = 0x0U},
.fifo = {.fifoWatermark = 16U, .fifoPacking = kSAI_FifoPackingDisabled, .fifoContinueOneError = true}};
/* DEMO_SAI Rx configuration */
sai_transceiver_t DEMO_SAI_Rx_config = {
.masterSlave = kSAI_Master,
.bitClock = {.bclkSrcSwap = false,
.bclkSource = kSAI_BclkSourceMclkOption1,
.bclkPolarity = kSAI_PolarityActiveLow,
.bclkInputDelay = false},
.frameSync =
{
.frameSyncWidth = 16U,
.frameSyncPolarity = kSAI_PolarityActiveLow,
.frameSyncEarly = true,
},
.syncMode = kSAI_ModeSync,
.channelMask = kSAI_Channel0Mask,
.startChannel = 0U,
.endChannel = 0U,
.channelNums = 1U,
.serialData = {.dataMode = kSAI_DataPinStateTriState,
.dataWord0Length = (uint8_t)kSAI_WordWidth16bits,
.dataWordNLength = (uint8_t)kSAI_WordWidth16bits,
.dataWordLength = (uint8_t)kSAI_WordWidth16bits,
.dataOrder = kSAI_DataMSB,
.dataFirstBitShifted = 16U,
.dataWordNum = 2U,
.dataMaskedWord = 0x0U},
.fifo = {.fifoWatermark = 16U, .fifoPacking = kSAI_FifoPackingDisabled, .fifoContinueOneError = true}};
edma_handle_t dmaTxHandle;
edma_handle_t dmaRxHandle;
AT_QUICKACCESS_SECTION_DATA(sai_edma_handle_t txHandle);
AT_QUICKACCESS_SECTION_DATA(sai_edma_handle_t rxHandle);
void DEMO_SAI_init(void)
{
/* Set the source kDmaRequestMuxSai1Tx request in the DMAMUX */
DMAMUX_SetSource(DEMO_SAI_TX_DMAMUX_BASEADDR, DEMO_SAI_TX_DMA_CHANNEL, DEMO_SAI_TX_DMA_REQUEST);
/* Enable the 0 channel in the DMAMUX */
DMAMUX_EnableChannel(DEMO_SAI_TX_DMAMUX_BASEADDR, DEMO_SAI_TX_DMA_CHANNEL);
/* Set the source kDmaRequestMuxSai1Rx request in the DMAMUX */
DMAMUX_SetSource(DEMO_SAI_RX_DMAMUX_BASEADDR, DEMO_SAI_RX_DMA_CHANNEL, DEMO_SAI_RX_DMA_REQUEST);
/* Enable the 1 channel in the DMAMUX */
DMAMUX_EnableChannel(DEMO_SAI_RX_DMAMUX_BASEADDR, DEMO_SAI_RX_DMA_CHANNEL);
/* Create the eDMA dmaTxHandle handle */
EDMA_CreateHandle(&dmaTxHandle, DEMO_SAI_TX_DMA_BASEADDR, DEMO_SAI_TX_DMA_CHANNEL);
/* Create the eDMA dmaRxHandle handle */
EDMA_CreateHandle(&dmaRxHandle, DEMO_SAI_RX_DMA_BASEADDR, DEMO_SAI_RX_DMA_CHANNEL);
/* Initialize SAI clock gate */
SAI_Init(DEMO_SAI_PERIPHERAL);
/* Create the SAI Tx eDMA handle */
SAI_TransferTxCreateHandleEDMA(DEMO_SAI_PERIPHERAL, &txHandle, txCallback, NULL, &dmaTxHandle);
/* Create the SAI Rx eDMA handle */
SAI_TransferRxCreateHandleEDMA(DEMO_SAI_PERIPHERAL, &rxHandle, rxCallback, NULL, &dmaRxHandle);
/* Configures SAI Tx sub-module functionality */
SAI_TransferTxSetConfigEDMA(DEMO_SAI_PERIPHERAL, &txHandle, &DEMO_SAI_Tx_config);
/* Configures SAI Rx sub-module functionality */
SAI_TransferRxSetConfigEDMA(DEMO_SAI_PERIPHERAL, &rxHandle, &DEMO_SAI_Rx_config);
/* Set up SAI Tx bitclock rate by calculation of divider. */
SAI_TxSetBitClockRate(DEMO_SAI_PERIPHERAL, DEMO_SAI_TX_BCLK_SOURCE_CLOCK_HZ, DEMO_SAI_TX_SAMPLE_RATE,
DEMO_SAI_TX_WORD_WIDTH, DEMO_SAI_TX_WORDS_PER_FRAME);
/* Set up SAI Rx bitclock rate by calculation of divider. */
SAI_RxSetBitClockRate(DEMO_SAI_PERIPHERAL, DEMO_SAI_RX_BCLK_SOURCE_CLOCK_HZ, DEMO_SAI_RX_SAMPLE_RATE,
DEMO_SAI_RX_WORD_WIDTH, DEMO_SAI_RX_WORDS_PER_FRAME);
}
/***********************************************************************************************************************
* Initialization functions
**********************************************************************************************************************/
void BOARD_InitPeripherals(void)
{
/* Global initialization */
DMAMUX_Init(DEMO_EDMA_DMAMUX_BASEADDR);
EDMA_Init(DEMO_EDMA_DMA_BASEADDR, &DEMO_eDMA_config);
/* Initialize components */
DEMO_eDMA_init();
DEMO_SAI_init();
}
/***********************************************************************************************************************
* BOARD_InitBootPeripherals function
**********************************************************************************************************************/
void BOARD_InitBootPeripherals(void)
{
BOARD_InitPeripherals();
}