forked from xuos/xiuos
support i2c eeprom and rtc for ok1052-c and remove wrong Copyright
This commit is contained in:
parent
169c3c3c5d
commit
2115572813
|
@ -5,18 +5,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file board.c
|
||||
* @brief relative configure for ok1052-c
|
||||
|
|
|
@ -5,19 +5,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (c) 2020 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file board.h
|
||||
* @brief define imxrt1052-board init configure and start-up function
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
/**
|
||||
* @file pin_mux.h
|
||||
* @brief define imxrt1052-board pin configure
|
||||
* @version 1.0
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2021-05-29
|
||||
*/
|
||||
|
@ -71,6 +71,7 @@ void BOARD_InitBootPins(void);
|
|||
*
|
||||
*/
|
||||
void BOARD_InitPins(void);
|
||||
void BOARD_InitI2C1Pins(void);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ menuconfig BSP_USING_LPUART
|
|||
bool "Using UART device"
|
||||
default y
|
||||
select RESOURCES_SERIAL
|
||||
|
||||
if BSP_USING_LPUART
|
||||
source "$BSP_DIR/third_party_driver/uart/Kconfig"
|
||||
endif
|
||||
|
@ -10,3 +11,12 @@ menuconfig BSP_USING_LWIP
|
|||
bool "Using LwIP device"
|
||||
default n
|
||||
select RESOURCES_LWIP
|
||||
|
||||
menuconfig BSP_USING_I2C
|
||||
bool "Using I2C device"
|
||||
default y
|
||||
select RESOURCES_I2C
|
||||
|
||||
if BSP_USING_I2C
|
||||
source "$BSP_DIR/third_party_driver/i2c/Kconfig"
|
||||
endif
|
||||
|
|
|
@ -8,4 +8,8 @@ ifeq ($(CONFIG_BSP_USING_LWIP),y)
|
|||
SRC_DIR += ethernet
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BSP_USING_I2C),y)
|
||||
SRC_DIR += i2c
|
||||
endif
|
||||
|
||||
include $(KERNEL_ROOT)/compiler.mk
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_cache.c
|
||||
* @brief cache drivers
|
||||
|
@ -45,9 +33,9 @@
|
|||
#define L2CACHE_1KBCOVERTOB 1024U
|
||||
#define L2CACHE_SAMLLWAYS_SIZE 16U
|
||||
#define L2CACHE_LOCKDOWN_REGNUM 8 /*!< Lock down register numbers.*/
|
||||
/*******************************************************************************
|
||||
* Prototypes
|
||||
******************************************************************************/
|
||||
/*******************************************************************************
|
||||
* Prototypes
|
||||
******************************************************************************/
|
||||
/*!
|
||||
* @brief Set for all ways and waiting for the operation finished.
|
||||
* This is provided for all the background operations.
|
||||
|
|
|
@ -5,18 +5,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_clock.c
|
||||
* @brief clock drivers
|
||||
|
|
|
@ -7,18 +7,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_common.c
|
||||
* @brief common drivers
|
||||
|
|
|
@ -299,6 +299,38 @@ void BOARD_InitPins(void) {
|
|||
Hyst. Enable Field: Hysteresis Disabled */
|
||||
}
|
||||
|
||||
void BOARD_InitI2C1Pins(void) {
|
||||
CLOCK_EnableClock(kCLOCK_Iomuxc); /* iomuxc clock (iomuxc_clk_enable): 0x03u */
|
||||
|
||||
IOMUXC_SetPinMux(
|
||||
IOMUXC_GPIO_AD_B1_00_LPI2C1_SCL, /* GPIO_AD_B1_00 is configured as LPI2C1_SCL */
|
||||
1U); /* Software Input On Field: Force input path of pad GPIO_AD_B1_00 */
|
||||
IOMUXC_SetPinMux(
|
||||
IOMUXC_GPIO_AD_B1_01_LPI2C1_SDA, /* GPIO_AD_B1_01 is configured as LPI2C1_SDA */
|
||||
1U); /* Software Input On Field: Force input path of pad GPIO_AD_B1_01 */
|
||||
IOMUXC_SetPinConfig(
|
||||
IOMUXC_GPIO_AD_B1_00_LPI2C1_SCL, /* GPIO_AD_B1_00 PAD functional properties : */
|
||||
0xD8B0u); /* Slew Rate Field: Slow Slew Rate
|
||||
Drive Strength Field: R0/6
|
||||
Speed Field: medium(100MHz)
|
||||
Open Drain Enable Field: Open Drain Enabled
|
||||
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||
Pull / Keep Select Field: Keeper
|
||||
Pull Up / Down Config. Field: 22K Ohm Pull Up
|
||||
Hyst. Enable Field: Hysteresis Disabled */
|
||||
IOMUXC_SetPinConfig(
|
||||
IOMUXC_GPIO_AD_B1_01_LPI2C1_SDA, /* GPIO_AD_B1_01 PAD functional properties : */
|
||||
0xD8B0u); /* Slew Rate Field: Slow Slew Rate
|
||||
Drive Strength Field: R0/6
|
||||
Speed Field: medium(100MHz)
|
||||
Open Drain Enable Field: Open Drain Enabled
|
||||
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||
Pull / Keep Select Field: Keeper
|
||||
Pull Up / Down Config. Field: 22K Ohm Pull Up
|
||||
Hyst. Enable Field: Hysteresis Disabled */
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* EOF
|
||||
**********************************************************************************************************************/
|
||||
|
|
|
@ -38,18 +38,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file enet_ethernetif.c
|
||||
* @brief ethernet drivers
|
||||
|
|
|
@ -38,18 +38,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file enet_ethernetif_kinetis.c
|
||||
* @brief ethernet drivers
|
||||
|
|
|
@ -38,18 +38,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file enet_ethernetif_lpc.c
|
||||
* @brief ethernet drivers
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_enet.c
|
||||
* @brief ethernet drivers
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_phy.c
|
||||
* @brief phy drivers for ksz8081
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_phy.h
|
||||
* @brief phy drivers for ksz8081
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
if BSP_USING_I2C
|
||||
config I2C_BUS_NAME_1
|
||||
string "i2c bus 1 name"
|
||||
default "i2c1"
|
||||
config I2C_DRV_NAME_1
|
||||
string "i2c bus 1 driver name"
|
||||
default "i2c1_drv"
|
||||
config I2C_1_DEVICE_NAME_0
|
||||
string "i2c bus 1 device 0 name"
|
||||
default "i2c1_dev0"
|
||||
endif
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
SRC_FILES := i2c_EEPROM.c i2c_EEPROM_test.c fsl_lpi2c.c i2c_RTC_RX8010.c i2c_RTC_RX8010_test.c
|
||||
|
||||
include $(KERNEL_ROOT)/compiler.mk
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* The Clear BSD License
|
||||
* Copyright (c) 2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2017 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted (subject to the limitations in the disclaimer below) provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of the copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "fsl_common.h"
|
||||
#include "fsl_lpi2c.h"
|
||||
#include "i2c_EEPROM.h"
|
||||
|
||||
/////////////////////////////EEPROM INIT/////////////////////////////////////////
|
||||
|
||||
void I2C_EEPROM_Init()
|
||||
{
|
||||
lpi2c_master_config_t masterConfig = {0};
|
||||
/*
|
||||
* masterConfig.debugEnable = false;
|
||||
* masterConfig.ignoreAck = false;
|
||||
* masterConfig.pinConfig = kLPI2C_2PinOpenDrain;
|
||||
* masterConfig.baudRate_Hz = 100000U;
|
||||
* masterConfig.busIdleTimeout_ns = 0;
|
||||
* masterConfig.pinLowTimeout_ns = 0;
|
||||
* masterConfig.sdaGlitchFilterWidth_ns = 0;
|
||||
* masterConfig.sclGlitchFilterWidth_ns = 0;
|
||||
*/
|
||||
LPI2C_MasterGetDefaultConfig ( &masterConfig );
|
||||
/* Change the default baudrate configuration */
|
||||
masterConfig.baudRate_Hz = I2C_EEPROM_BAUDRATE;
|
||||
/* Initialize the LPI2C master peripheral */
|
||||
LPI2C_MasterInit ( I2C_EEPROM_BASE, &masterConfig, I2C_EEPROM_CLOCK_FREQ );
|
||||
}
|
||||
|
||||
//struct _lpi2c_master_transfer
|
||||
//{
|
||||
// uint32_t
|
||||
// flags; /*!< Bit mask of options for the transfer. See enumeration #_lpi2c_master_transfer_flags for available
|
||||
// options. Set to 0 or #kLPI2C_TransferDefaultFlag for normal transfers. */
|
||||
// uint16_t slaveAddress; /*!< The 7-bit slave address. */
|
||||
// lpi2c_direction_t direction; /*!< Either #kLPI2C_Read or #kLPI2C_Write. */
|
||||
// uint32_t subaddress; /*!< Sub address. Transferred MSB first. */
|
||||
// size_t subaddressSize; /*!< Length of sub address to send in bytes. Maximum size is 4 bytes. */
|
||||
// void *data; /*!< Pointer to data to transfer. */
|
||||
// size_t dataSize; /*!< Number of bytes to transfer. */
|
||||
//};
|
||||
|
||||
status_t I2C_EEPROM_Write ( LPI2C_Type* base,uint32_t subAdd,uint8_t* dataBuff,uint16_t dataLen )
|
||||
{
|
||||
// lpi2c_master_transfer_t *xfer = &(handle->xfer);
|
||||
lpi2c_master_transfer_t xfer;
|
||||
status_t status;
|
||||
xfer.slaveAddress = ( 0xA0>>1 );
|
||||
xfer.direction = kLPI2C_Write;
|
||||
xfer.subaddress = subAdd;
|
||||
xfer.subaddressSize = 0x01;
|
||||
xfer.data = dataBuff;
|
||||
xfer.dataSize = dataLen;
|
||||
xfer.flags = kLPI2C_TransferDefaultFlag;
|
||||
status = LPI2C_MasterTransferBlocking ( base, &xfer );
|
||||
return status;
|
||||
}
|
||||
|
||||
uint32_t I2C_EEPROM_Read ( LPI2C_Type* base,uint32_t subAdd,uint8_t* dataBuffer, uint16_t dataLen )
|
||||
{
|
||||
lpi2c_master_transfer_t masterXfer = {0};
|
||||
status_t reVal = kStatus_Fail;
|
||||
masterXfer.slaveAddress = ( 0XA0>>1 );
|
||||
masterXfer.direction = kLPI2C_Read;
|
||||
masterXfer.subaddress = subAdd;
|
||||
masterXfer.subaddressSize = 0x01;
|
||||
masterXfer.data = dataBuffer;
|
||||
masterXfer.dataSize = dataLen;
|
||||
masterXfer.flags = kLPI2C_TransferDefaultFlag;
|
||||
reVal = LPI2C_MasterTransferBlocking ( base, &masterXfer );
|
||||
|
||||
if ( reVal != kStatus_Success )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
#ifndef __I2C_EEPROM_H_
|
||||
#define __I2C_EEPROM_H_
|
||||
|
||||
#include "fsl_common.h"
|
||||
|
||||
|
||||
/* Macros for the touch touch controller. */
|
||||
#define I2C_EEPROM_BASE LPI2C1
|
||||
|
||||
/* Select USB1 PLL (480 MHz) as master lpi2c clock source */
|
||||
#define LPI2C_CLOCK_SOURCE_SELECT (0U)
|
||||
/* Clock divider for master lpi2c clock source */
|
||||
#define LPI2C_CLOCK_SOURCE_DIVIDER (5U)
|
||||
|
||||
|
||||
#define I2C_EEPROM_CLOCK_FREQ ((CLOCK_GetFreq(kCLOCK_Usb1PllClk) / 8) / (LPI2C_CLOCK_SOURCE_DIVIDER + 1U))
|
||||
#define I2C_EEPROM_BAUDRATE 100000U
|
||||
|
||||
|
||||
void I2C_EEPROM_Init ( void );
|
||||
status_t I2C_EEPROM_Write ( LPI2C_Type* base,uint32_t subAdd,uint8_t* dataBuff,uint16_t dataLen );
|
||||
uint32_t I2C_EEPROM_Read ( LPI2C_Type* base,uint32_t subAdd,uint8_t* dataBuff, uint16_t dataLen );
|
||||
|
||||
#endif
|
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* The Clear BSD License
|
||||
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2017 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted (subject to the limitations in the disclaimer below) provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of the copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "board.h"
|
||||
#include "fsl_debug_console.h"
|
||||
#include "fsl_gpio.h"
|
||||
|
||||
#include "fsl_lpi2c.h"
|
||||
#include "i2c_EEPROM.h"
|
||||
|
||||
#include "pin_mux.h"
|
||||
#include "clock_config.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
|
||||
#define i2c_print KPrintf
|
||||
|
||||
/*******************************************************************************
|
||||
* Prototypes
|
||||
******************************************************************************/
|
||||
/*!
|
||||
* @brief delay a while.
|
||||
*/
|
||||
void I2C_EEPROM_TEST ( void );
|
||||
|
||||
/*******************************************************************************
|
||||
* Variables
|
||||
******************************************************************************/
|
||||
/* The PIN status */
|
||||
volatile bool g_pinSet = false;
|
||||
/*******************************************************************************
|
||||
* Code
|
||||
******************************************************************************/
|
||||
|
||||
/*!
|
||||
* @brief I2C_EEPROM_TEST: Write and Read
|
||||
*/
|
||||
|
||||
void I2C_EEPROM_TEST()
|
||||
{
|
||||
uint8_t dataBuff[8] = {0};
|
||||
|
||||
// read eeprom
|
||||
if ( !I2C_EEPROM_Read ( I2C_EEPROM_BASE, 0, dataBuff, 8 ) )
|
||||
{
|
||||
i2c_print ( "Read from EEPROM Success!!! dataBuff = %d , %d , %d , %d , %d , %d , %d , %d\r\n",
|
||||
dataBuff[0], dataBuff[1], dataBuff[2], dataBuff[3], dataBuff[4], dataBuff[5], dataBuff[6], dataBuff[7] );
|
||||
}
|
||||
|
||||
//set data
|
||||
for ( uint8_t i = 0; i < 8; i++ )
|
||||
{
|
||||
dataBuff[i] = 8 - i;
|
||||
}
|
||||
|
||||
//write data
|
||||
if ( !I2C_EEPROM_Write ( I2C_EEPROM_BASE, 0, dataBuff, 8 ) )
|
||||
{
|
||||
i2c_print ( "Write to EEPROM Success!!! dataBuff = %d , %d , %d , %d , %d , %d , %d , %d\r\n",
|
||||
dataBuff[0], dataBuff[1], dataBuff[2], dataBuff[3], dataBuff[4], dataBuff[5], dataBuff[6], dataBuff[7] );
|
||||
}
|
||||
|
||||
//clear data
|
||||
memset ( dataBuff, 0, 8 );
|
||||
|
||||
//read data
|
||||
if ( !I2C_EEPROM_Read ( I2C_EEPROM_BASE, 0, dataBuff, 8 ) )
|
||||
{
|
||||
i2c_print ( "Read from EEPROM Success!!! dataBuff = %d , %d , %d , %d , %d , %d , %d , %d\r\n",
|
||||
dataBuff[0], dataBuff[1], dataBuff[2], dataBuff[3], dataBuff[4], dataBuff[5], dataBuff[6], dataBuff[7] );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @brief Main function
|
||||
*/
|
||||
int test_i2c ( void )
|
||||
{
|
||||
BOARD_InitI2C1Pins();
|
||||
|
||||
/* Print a note to terminal. */
|
||||
i2c_print ( "\r\n I2C_EEPROM example start ... \r\n" );
|
||||
I2C_EEPROM_Init();
|
||||
I2C_EEPROM_TEST();
|
||||
}
|
||||
|
||||
SHELL_EXPORT_CMD ( SHELL_CMD_PERMISSION ( 0 ) | SHELL_CMD_TYPE ( SHELL_TYPE_CMD_MAIN ) | SHELL_CMD_PARAM_NUM ( 0 ),
|
||||
I2cEE, test_i2c, i2c eeprom );
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
* The Clear BSD License
|
||||
* Copyright (c) 2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2017 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted (subject to the limitations in the disclaimer below) provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of the copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file i2c_RTC_RX8010.c
|
||||
* @brief I2C RTC drivers
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022.1.18
|
||||
*/
|
||||
|
||||
#include "fsl_common.h"
|
||||
#include "fsl_debug_console.h"
|
||||
#include "fsl_lpi2c.h"
|
||||
#include "i2c_RTC_RX8010.h"
|
||||
|
||||
|
||||
/////////////////////////////EEPROM INIT/////////////////////////////////////////
|
||||
|
||||
void I2C_Init()
|
||||
{
|
||||
lpi2c_master_config_t masterConfig = {0};
|
||||
/*
|
||||
* masterConfig.debugEnable = false;
|
||||
* masterConfig.ignoreAck = false;
|
||||
* masterConfig.pinConfig = kLPI2C_2PinOpenDrain;
|
||||
* masterConfig.baudRate_Hz = 100000U;
|
||||
* masterConfig.busIdleTimeout_ns = 0;
|
||||
* masterConfig.pinLowTimeout_ns = 0;
|
||||
* masterConfig.sdaGlitchFilterWidth_ns = 0;
|
||||
* masterConfig.sclGlitchFilterWidth_ns = 0;
|
||||
*/
|
||||
LPI2C_MasterGetDefaultConfig(&masterConfig);
|
||||
|
||||
/* Change the default baudrate configuration */
|
||||
masterConfig.baudRate_Hz = I2C_BAUDRATE;
|
||||
|
||||
/* Initialize the LPI2C master peripheral */
|
||||
LPI2C_MasterInit(I2C_BASE, &masterConfig, I2C_CLOCK_FREQ);
|
||||
}
|
||||
|
||||
//struct _lpi2c_master_transfer
|
||||
//{
|
||||
// uint32_t
|
||||
// flags; /*!< Bit mask of options for the transfer. See enumeration #_lpi2c_master_transfer_flags for available
|
||||
// options. Set to 0 or #kLPI2C_TransferDefaultFlag for normal transfers. */
|
||||
// uint16_t slaveAddress; /*!< The 7-bit slave address. */
|
||||
// lpi2c_direction_t direction; /*!< Either #kLPI2C_Read or #kLPI2C_Write. */
|
||||
// uint32_t subaddress; /*!< Sub address. Transferred MSB first. */
|
||||
// size_t subaddressSize; /*!< Length of sub address to send in bytes. Maximum size is 4 bytes. */
|
||||
// void *data; /*!< Pointer to data to transfer. */
|
||||
// size_t dataSize; /*!< Number of bytes to transfer. */
|
||||
//};
|
||||
|
||||
status_t I2C_Write(LPI2C_Type *base,uint32_t subAdd,uint8_t *dataBuff,uint16_t dataLen)
|
||||
{
|
||||
// lpi2c_master_transfer_t *xfer = &(handle->xfer);
|
||||
lpi2c_master_transfer_t xfer;
|
||||
status_t status;
|
||||
|
||||
xfer.slaveAddress = 0x32; ////RX8010 SLEVEADDRESS 7BIT
|
||||
xfer.direction = kLPI2C_Write;
|
||||
xfer.subaddress = subAdd;
|
||||
xfer.subaddressSize = 0x01;
|
||||
xfer.data = dataBuff;
|
||||
xfer.dataSize = dataLen;
|
||||
xfer.flags = kLPI2C_TransferDefaultFlag;
|
||||
|
||||
status = LPI2C_MasterTransferBlocking(base, &xfer);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
uint32_t I2C_Read(LPI2C_Type *base,uint32_t subAdd,uint8_t* dataBuffer, uint16_t dataLen)
|
||||
{
|
||||
lpi2c_master_transfer_t masterXfer = {0};
|
||||
status_t reVal = kStatus_Fail;
|
||||
|
||||
masterXfer.slaveAddress = 0x32;
|
||||
masterXfer.direction = kLPI2C_Read;
|
||||
masterXfer.subaddress = subAdd;
|
||||
masterXfer.subaddressSize = 0x01;
|
||||
masterXfer.data = dataBuffer;
|
||||
masterXfer.dataSize = dataLen;
|
||||
masterXfer.flags = kLPI2C_TransferDefaultFlag;
|
||||
|
||||
reVal = LPI2C_MasterTransferBlocking(base, &masterXfer);
|
||||
|
||||
if (reVal != kStatus_Success)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
#include "fsl_common.h"
|
||||
|
||||
|
||||
/* Macros for the touch touch controller. */
|
||||
#define I2C_BASE LPI2C1
|
||||
|
||||
/* Select USB1 PLL (480 MHz) as master lpi2c clock source */
|
||||
#define LPI2C_CLOCK_SOURCE_SELECT (0U)
|
||||
/* Clock divider for master lpi2c clock source */
|
||||
#define LPI2C_CLOCK_SOURCE_DIVIDER (5U)
|
||||
|
||||
|
||||
#define I2C_CLOCK_FREQ ((CLOCK_GetFreq(kCLOCK_Usb1PllClk) / 8) / (LPI2C_CLOCK_SOURCE_DIVIDER + 1U))
|
||||
#define I2C_BAUDRATE 100000U
|
||||
|
||||
|
||||
|
||||
void I2C_Init(void);
|
||||
status_t I2C_Write(LPI2C_Type *base,uint32_t subAdd,uint8_t *dataBuff,uint16_t dataLen);
|
||||
uint32_t I2C_Read(LPI2C_Type *base,uint32_t subAdd,uint8_t* dataBuff, uint16_t dataLen);
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,358 @@
|
|||
/*
|
||||
* The Clear BSD License
|
||||
* Copyright (c) 2015, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2017 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted (subject to the limitations in the disclaimer below) provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of the copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "board.h"
|
||||
#include "fsl_debug_console.h"
|
||||
|
||||
#include "fsl_lpi2c.h"
|
||||
#include "i2c_RTC_RX8010.h"
|
||||
|
||||
#include "pin_mux.h"
|
||||
#include "clock_config.h"
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
#define EXAMPLE_DELAY_COUNT 8000000
|
||||
|
||||
#undef GETCHAR
|
||||
#define GETCHAR getchar
|
||||
#undef PUTCHAR
|
||||
#define PUTCHAR putchar
|
||||
|
||||
#define rtc_print KPrintf
|
||||
|
||||
///////////RX8010///////////
|
||||
|
||||
#define RX8010_SEC 0x10
|
||||
#define RX8010_MIN 0x11
|
||||
#define RX8010_HOUR 0x12
|
||||
#define RX8010_WDAY 0x13
|
||||
#define RX8010_MDAY 0x14
|
||||
#define RX8010_MONTH 0x15
|
||||
#define RX8010_YEAR 0x16
|
||||
#define RX8010_YEAR 0x16
|
||||
#define RX8010_RESV17 0x17
|
||||
#define RX8010_ALMIN 0x18
|
||||
#define RX8010_ALHOUR 0x19
|
||||
#define RX8010_ALWDAY 0x1A
|
||||
#define RX8010_TCOUNT0 0x1B
|
||||
#define RX8010_TCOUNT1 0x1C
|
||||
#define RX8010_EXT 0x1D
|
||||
#define RX8010_FLAG 0x1E
|
||||
#define RX8010_CTRL 0x1F
|
||||
|
||||
/* 0x20 to 0x2F are user registers */
|
||||
#define RX8010_RESV30 0x30
|
||||
#define RX8010_RESV31 0x31
|
||||
#define RX8010_IRQ 0x32
|
||||
|
||||
#define RX8010_EXT_WADA 0x04 //BIT(3)
|
||||
|
||||
#define RX8010_FLAG_VLF 0x02 //BIT(1)
|
||||
#define RX8010_FLAG_AF 0x04 //BIT(3)
|
||||
#define RX8010_FLAG_TF 0x08 //BIT(4)
|
||||
#define RX8010_FLAG_UF 0x10 //BIT(5)
|
||||
|
||||
#define RX8010_CTRL_AIE 0x04 //BIT(3)
|
||||
#define RX8010_CTRL_UIE 0x10 //BIT(5)
|
||||
#define RX8010_CTRL_STOP 0x20 //BIT(6)
|
||||
#define RX8010_CTRL_TEST 0x40 //BIT(7)
|
||||
|
||||
#define RX8010_ALARM_AE 0x40 //BIT(7)
|
||||
|
||||
#define RX8010_TEST_TIME 10000
|
||||
|
||||
#define BCD_DATA_LEN 20
|
||||
|
||||
/*******************************************************************************
|
||||
* Prototypes
|
||||
******************************************************************************/
|
||||
/*******************************************************************************
|
||||
* Variables
|
||||
******************************************************************************/
|
||||
/*******************************************************************************
|
||||
* Code
|
||||
******************************************************************************/
|
||||
|
||||
// change BCD format date to BIN format
|
||||
uint8_t bcd2bin(uint8_t data)
|
||||
{
|
||||
int i = 0;
|
||||
uint8_t ret = 0;
|
||||
uint8_t mask[4] = {0x01, 0x02, 0x04, 0x08};
|
||||
|
||||
//LOW
|
||||
for(i = 0; i < 4; i++)
|
||||
{
|
||||
if(mask[i] & data)
|
||||
{
|
||||
ret += mask[i];
|
||||
}
|
||||
}
|
||||
|
||||
//HIGH
|
||||
for(i = 0; i < 4; i++)
|
||||
{
|
||||
if(mask[i] & (data >> 4))
|
||||
{
|
||||
ret += (mask[i] * 10);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// change BIN format to BCD format
|
||||
uint8_t bin2bcd(uint8_t dataH, uint8_t dataL)
|
||||
{
|
||||
return (dataH << 4) | dataL;
|
||||
}
|
||||
|
||||
// 8010 initialization
|
||||
int rx8010_init(void)
|
||||
{
|
||||
uint8_t flag = 0;
|
||||
uint8_t data = 0;
|
||||
uint8_t ctrl[2];
|
||||
int need_clear = 0, err = 0;
|
||||
|
||||
err = I2C_Read(I2C_BASE, RX8010_FLAG, &flag, 1);
|
||||
flag &= ~(RX8010_FLAG_VLF);
|
||||
|
||||
err = I2C_Write(I2C_BASE, RX8010_FLAG, &flag, 1);
|
||||
/* Initialize reserved registers as specified in datasheet */
|
||||
|
||||
data = 0xD8;
|
||||
err = I2C_Write(I2C_BASE, RX8010_RESV17, &data, 1);
|
||||
|
||||
data = 0x00;
|
||||
err = I2C_Write(I2C_BASE, RX8010_RESV30, &data, 1);
|
||||
|
||||
data = 0x08;
|
||||
err = I2C_Write(I2C_BASE, RX8010_RESV31, &data, 1);
|
||||
|
||||
data = 0x00;
|
||||
err = I2C_Write(I2C_BASE, RX8010_IRQ, &data, 1);
|
||||
|
||||
err = I2C_Read(I2C_BASE, RX8010_FLAG, ctrl, 2);
|
||||
|
||||
if(ctrl[0] & RX8010_FLAG_VLF)
|
||||
{
|
||||
rtc_print("\r\n Frequency stop was detected\r\n");
|
||||
}
|
||||
|
||||
if(ctrl[0] & RX8010_FLAG_AF)
|
||||
{
|
||||
rtc_print("\r\n Alarm was detected\r\n");
|
||||
need_clear = 1;
|
||||
}
|
||||
|
||||
if(ctrl[0] & RX8010_FLAG_TF)
|
||||
{
|
||||
need_clear = 1;
|
||||
}
|
||||
|
||||
if(ctrl[0] & RX8010_FLAG_UF)
|
||||
{
|
||||
need_clear = 1;
|
||||
}
|
||||
|
||||
if(need_clear)
|
||||
{
|
||||
ctrl[0] &= ~(RX8010_FLAG_AF | RX8010_FLAG_TF | RX8010_FLAG_UF);
|
||||
err = I2C_Write(I2C_BASE, RX8010_FLAG, ctrl,1);
|
||||
|
||||
if(!err)
|
||||
{
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
// check format and get BCD format date like 2018-06-21 16:29:30
|
||||
int get_bcd_date(uint8_t* date, uint8_t* bcd_date)
|
||||
{
|
||||
uint8_t tempBuff[BCD_DATA_LEN] = {0};
|
||||
uint8_t temp = 0;
|
||||
int j = 0;
|
||||
|
||||
if(( date[0] != '2')
|
||||
||(date[1] != '0')
|
||||
||(date[4] != '-')
|
||||
||(date[7] != '-')
|
||||
||(date[10] != ' ')
|
||||
||(date[13] != ':')
|
||||
||(date[16] != ':'))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
for(int i = 0; i < BCD_DATA_LEN - 1; i++)
|
||||
{
|
||||
if((date[i] >= '0') && (date[i] <= '9'))
|
||||
{
|
||||
tempBuff[j] = date[i] - '0';
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
if(j != 14)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
// year
|
||||
bcd_date[5] = bin2bcd(tempBuff[2], tempBuff[3]);
|
||||
|
||||
// month
|
||||
temp = tempBuff[4] * 10 + tempBuff[5];
|
||||
|
||||
if((temp < 1) || (temp > 12))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
bcd_date[4] = bin2bcd(tempBuff[4], tempBuff[5]);
|
||||
|
||||
// day
|
||||
temp = tempBuff[6] * 10 + tempBuff[7];
|
||||
|
||||
if((temp < 1)||(temp > 31))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
bcd_date[3] = bin2bcd(tempBuff[6], tempBuff[7]);
|
||||
|
||||
// hour
|
||||
temp = tempBuff[8] * 10 + tempBuff[9];
|
||||
|
||||
if((temp < 1)||(temp > 24))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
bcd_date[2] = bin2bcd(tempBuff[8], tempBuff[9]);
|
||||
|
||||
// minute
|
||||
temp = tempBuff[10] * 10 + tempBuff[11];
|
||||
|
||||
if((temp < 1)||(temp > 59))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
bcd_date[1] = bin2bcd(tempBuff[10], tempBuff[11]);
|
||||
|
||||
// second
|
||||
temp = tempBuff[12] * 10 + tempBuff[13];
|
||||
|
||||
if(( temp < 1)||(temp > 59))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
bcd_date[0] = bin2bcd(tempBuff[12], tempBuff[13]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// setup time
|
||||
int rx8010_set_time(uint8_t* asc_date)
|
||||
{
|
||||
uint8_t bcd_date[6];
|
||||
int ret, err;
|
||||
|
||||
if(get_bcd_date(asc_date, bcd_date))
|
||||
{
|
||||
rtc_print("\r\n Date format error! \r\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
err = I2C_Write(I2C_BASE, RX8010_SEC, bcd_date, 3);
|
||||
err |= I2C_Write(I2C_BASE, RX8010_MDAY, &bcd_date[3], 3);
|
||||
return err;
|
||||
}
|
||||
|
||||
// get rx8010 time
|
||||
int rx8010_get_time(void)
|
||||
{
|
||||
uint8_t date[7];
|
||||
uint8_t dateRsul[7];
|
||||
uint8_t flagreg;
|
||||
int err;
|
||||
err = I2C_Read(I2C_BASE, RX8010_FLAG, &flagreg, 1);
|
||||
|
||||
if(flagreg & RX8010_FLAG_VLF)
|
||||
{
|
||||
rtc_print("\r\n Frequency stop was detected\r\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
err = I2C_Read(I2C_BASE, RX8010_SEC, date, 7);
|
||||
dateRsul[0] = bcd2bin(date[RX8010_SEC - RX8010_SEC] & 0x7f);
|
||||
dateRsul[1] = bcd2bin(date[RX8010_MIN - RX8010_SEC] & 0x7f);
|
||||
dateRsul[2] = bcd2bin(date[RX8010_HOUR - RX8010_SEC] & 0x3f);
|
||||
dateRsul[4] = bcd2bin(date[RX8010_MDAY - RX8010_SEC] & 0x3f);
|
||||
dateRsul[5] = bcd2bin(date[RX8010_MONTH - RX8010_SEC] & 0x1f);
|
||||
dateRsul[6] = bcd2bin(date[RX8010_YEAR - RX8010_SEC]);
|
||||
dateRsul[3] = date[RX8010_WDAY - RX8010_SEC] & 0x7f;
|
||||
rtc_print("\r\n Read datetime from RX8010: 20%d%d-%d%d-%d%d %d%d:%d%d:%d%d \r\n",
|
||||
dateRsul[6]/10, dateRsul[6]%10, dateRsul[5]/10, dateRsul[5]%10, dateRsul[4]/10, dateRsul[4]%10,
|
||||
dateRsul[2]/10, dateRsul[2]%10, dateRsul[1]/10, dateRsul[1]%10, dateRsul[0]/10, dateRsul[0]%10);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void test_rtc_rx8010(int argc, char *argv[])
|
||||
{
|
||||
BOARD_InitI2C1Pins();
|
||||
I2C_Init();
|
||||
rx8010_init();
|
||||
|
||||
if(argc == 2)
|
||||
{
|
||||
rx8010_set_time(argv[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
rx8010_get_time();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)| SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)| SHELL_CMD_PARAM_NUM(3),
|
||||
rtc, test_rtc_rx8010, i2c rtc "date time");
|
||||
|
|
@ -38,18 +38,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file enet_ethernetif.h
|
||||
* @brief ethernet drivers
|
||||
|
|
|
@ -5,18 +5,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file enet_ethernetif_priv.h
|
||||
* @brief ethernet drivers
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_cache.h
|
||||
* @brief cache drivers
|
||||
|
|
|
@ -5,18 +5,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_clock.h
|
||||
* @brief clock drivers
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_common.h
|
||||
* @brief common drivers header
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#define _FSL_DEBUGCONSOLE_H_
|
||||
|
||||
#include "fsl_common.h"
|
||||
//#include "serial_manager.h"
|
||||
#include "serial_manager.h"
|
||||
|
||||
/*!
|
||||
* @addtogroup debugconsole
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_enet.h
|
||||
* @brief ethernet drivers
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_iomuxc.h
|
||||
* @brief io mux drivers
|
||||
|
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_lpuart.h
|
||||
* @brief fsl uart drivers
|
||||
|
|
|
@ -0,0 +1,548 @@
|
|||
/*
|
||||
* Copyright 2018 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef __SERIAL_MANAGER_H__
|
||||
#define __SERIAL_MANAGER_H__
|
||||
|
||||
/*!
|
||||
* @addtogroup serialmanager
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
#ifdef DEBUG_CONSOLE_TRANSFER_NON_BLOCKING
|
||||
/*! @brief Enable or disable serial manager non-blocking mode (1 - enable, 0 - disable) */
|
||||
#define SERIAL_MANAGER_NON_BLOCKING_MODE (1U)
|
||||
#else
|
||||
#ifndef SERIAL_MANAGER_NON_BLOCKING_MODE
|
||||
#define SERIAL_MANAGER_NON_BLOCKING_MODE (0U)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*! @brief Enable or disable uart port (1 - enable, 0 - disable) */
|
||||
#ifndef SERIAL_PORT_TYPE_UART
|
||||
#define SERIAL_PORT_TYPE_UART (1U)
|
||||
#endif
|
||||
|
||||
/*! @brief Enable or disable USB CDC port (1 - enable, 0 - disable) */
|
||||
#ifndef SERIAL_PORT_TYPE_USBCDC
|
||||
#define SERIAL_PORT_TYPE_USBCDC (0U)
|
||||
#endif
|
||||
|
||||
/*! @brief Enable or disable SWO port (1 - enable, 0 - disable) */
|
||||
#ifndef SERIAL_PORT_TYPE_SWO
|
||||
#define SERIAL_PORT_TYPE_SWO (0U)
|
||||
#endif
|
||||
|
||||
/*! @brief Enable or disable USB CDC virtual port (1 - enable, 0 - disable) */
|
||||
#ifndef SERIAL_PORT_TYPE_USBCDC_VIRTUAL
|
||||
#define SERIAL_PORT_TYPE_USBCDC_VIRTUAL (0U)
|
||||
#endif
|
||||
|
||||
/*! @brief Set serial manager write handle size */
|
||||
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
|
||||
#define SERIAL_MANAGER_WRITE_HANDLE_SIZE (44U)
|
||||
#define SERIAL_MANAGER_READ_HANDLE_SIZE (44U)
|
||||
#else
|
||||
#define SERIAL_MANAGER_WRITE_HANDLE_SIZE (4U)
|
||||
#define SERIAL_MANAGER_READ_HANDLE_SIZE (4U)
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT_TYPE_UART) && (SERIAL_PORT_TYPE_UART > 0U))
|
||||
#include "serial_port_uart.h"
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT_TYPE_USBCDC) && (SERIAL_PORT_TYPE_USBCDC > 0U))
|
||||
|
||||
#if !(defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
|
||||
#error The serial manager blocking mode cannot be supported for USB CDC.
|
||||
#endif
|
||||
|
||||
#include "serial_port_usb.h"
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT_TYPE_SWO) && (SERIAL_PORT_TYPE_SWO > 0U))
|
||||
#include "serial_port_swo.h"
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT_TYPE_USBCDC_VIRTUAL) && (SERIAL_PORT_TYPE_USBCDC_VIRTUAL > 0U))
|
||||
|
||||
#if !(defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
|
||||
#error The serial manager blocking mode cannot be supported for USB CDC.
|
||||
#endif
|
||||
|
||||
#include "serial_port_usb_virtual.h"
|
||||
#endif
|
||||
|
||||
#define SERIAL_MANAGER_HANDLE_SIZE_TEMP 0U
|
||||
#if (defined(SERIAL_PORT_TYPE_UART) && (SERIAL_PORT_TYPE_UART > 0U))
|
||||
|
||||
#if (SERIAL_PORT_UART_HANDLE_SIZE > SERIAL_MANAGER_HANDLE_SIZE_TEMP)
|
||||
#undef SERIAL_MANAGER_HANDLE_SIZE_TEMP
|
||||
#define SERIAL_MANAGER_HANDLE_SIZE_TEMP SERIAL_PORT_UART_HANDLE_SIZE
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT_TYPE_USBCDC) && (SERIAL_PORT_TYPE_USBCDC > 0U))
|
||||
|
||||
#if (SERIAL_PORT_USB_CDC_HANDLE_SIZE > SERIAL_MANAGER_HANDLE_SIZE_TEMP)
|
||||
#undef SERIAL_MANAGER_HANDLE_SIZE_TEMP
|
||||
#define SERIAL_MANAGER_HANDLE_SIZE_TEMP SERIAL_PORT_USB_CDC_HANDLE_SIZE
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT_TYPE_SWO) && (SERIAL_PORT_TYPE_SWO > 0U))
|
||||
|
||||
#if (SERIAL_PORT_SWO_HANDLE_SIZE > SERIAL_MANAGER_HANDLE_SIZE_TEMP)
|
||||
#undef SERIAL_MANAGER_HANDLE_SIZE_TEMP
|
||||
#define SERIAL_MANAGER_HANDLE_SIZE_TEMP SERIAL_PORT_SWO_HANDLE_SIZE
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_PORT_TYPE_USBCDC_VIRTUAL) && (SERIAL_PORT_TYPE_USBCDC_VIRTUAL > 0U))
|
||||
|
||||
#if (SERIAL_PORT_USB_VIRTUAL_HANDLE_SIZE > SERIAL_MANAGER_HANDLE_SIZE_TEMP)
|
||||
#undef SERIAL_MANAGER_HANDLE_SIZE_TEMP
|
||||
#define SERIAL_MANAGER_HANDLE_SIZE_TEMP SERIAL_PORT_USB_VIRTUAL_HANDLE_SIZE
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*! @brief SERIAL_PORT_UART_HANDLE_SIZE/SERIAL_PORT_USB_CDC_HANDLE_SIZE + serial manager dedicated size */
|
||||
#if ((defined(SERIAL_MANAGER_HANDLE_SIZE_TEMP) && (SERIAL_MANAGER_HANDLE_SIZE_TEMP > 0U)))
|
||||
#else
|
||||
#error SERIAL_PORT_TYPE_UART, SERIAL_PORT_TYPE_USBCDC, SERIAL_PORT_TYPE_SWO and SERIAL_PORT_TYPE_USBCDC_VIRTUAL should not be cleared at same time.
|
||||
#endif
|
||||
|
||||
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
|
||||
#define SERIAL_MANAGER_HANDLE_SIZE (SERIAL_MANAGER_HANDLE_SIZE_TEMP + 120U)
|
||||
#else
|
||||
#define SERIAL_MANAGER_HANDLE_SIZE (SERIAL_MANAGER_HANDLE_SIZE_TEMP + 12U)
|
||||
#endif
|
||||
|
||||
#define SERIAL_MANAGER_USE_COMMON_TASK (1U)
|
||||
#define SERIAL_MANAGER_TASK_PRIORITY (2U)
|
||||
#define SERIAL_MANAGER_TASK_STACK_SIZE (1000U)
|
||||
|
||||
typedef void *serial_handle_t;
|
||||
typedef void *serial_write_handle_t;
|
||||
typedef void *serial_read_handle_t;
|
||||
|
||||
/*! @brief serial port type*/
|
||||
typedef enum _serial_port_type
|
||||
{
|
||||
kSerialPort_Uart = 1U, /*!< Serial port UART */
|
||||
kSerialPort_UsbCdc, /*!< Serial port USB CDC */
|
||||
kSerialPort_Swo, /*!< Serial port SWO */
|
||||
kSerialPort_UsbCdcVirtual, /*!< Serial port USB CDC Virtual */
|
||||
} serial_port_type_t;
|
||||
|
||||
/*! @brief serial manager config structure*/
|
||||
typedef struct _serial_manager_config
|
||||
{
|
||||
uint8_t *ringBuffer; /*!< Ring buffer address, it is used to buffer data received by the hardware.
|
||||
Besides, the memory space cannot be free during the lifetime of the serial
|
||||
manager module. */
|
||||
uint32_t ringBufferSize; /*!< The size of the ring buffer */
|
||||
serial_port_type_t type; /*!< Serial port type */
|
||||
void *portConfig; /*!< Serial port configuration */
|
||||
} serial_manager_config_t;
|
||||
|
||||
/*! @brief serial manager error code*/
|
||||
typedef enum _serial_manager_status
|
||||
{
|
||||
kStatus_SerialManager_Success = kStatus_Success, /*!< Success */
|
||||
kStatus_SerialManager_Error = MAKE_STATUS(kStatusGroup_SERIALMANAGER, 1), /*!< Failed */
|
||||
kStatus_SerialManager_Busy = MAKE_STATUS(kStatusGroup_SERIALMANAGER, 2), /*!< Busy */
|
||||
kStatus_SerialManager_Notify = MAKE_STATUS(kStatusGroup_SERIALMANAGER, 3), /*!< Ring buffer is not empty */
|
||||
kStatus_SerialManager_Canceled =
|
||||
MAKE_STATUS(kStatusGroup_SERIALMANAGER, 4), /*!< the non-blocking request is canceled */
|
||||
kStatus_SerialManager_HandleConflict = MAKE_STATUS(kStatusGroup_SERIALMANAGER, 5), /*!< The handle is opened */
|
||||
kStatus_SerialManager_RingBufferOverflow =
|
||||
MAKE_STATUS(kStatusGroup_SERIALMANAGER, 6), /*!< The ring buffer is overflowed */
|
||||
} serial_manager_status_t;
|
||||
|
||||
/*! @brief Callback message structure */
|
||||
typedef struct _serial_manager_callback_message
|
||||
{
|
||||
uint8_t *buffer; /*!< Transferred buffer */
|
||||
uint32_t length; /*!< Transferred data length */
|
||||
} serial_manager_callback_message_t;
|
||||
|
||||
/*! @brief callback function */
|
||||
typedef void (*serial_manager_callback_t)(void *callbackParam,
|
||||
serial_manager_callback_message_t *message,
|
||||
serial_manager_status_t status);
|
||||
|
||||
/*******************************************************************************
|
||||
* API
|
||||
******************************************************************************/
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif /* _cplusplus */
|
||||
|
||||
/*!
|
||||
* @brief Initializes a serial manager module with the serial manager handle and the user configuration structure.
|
||||
*
|
||||
* This function configures the Serial Manager module with user-defined settings. The user can configure the
|
||||
* configuration
|
||||
* structure. The parameter serialHandle is a pointer to point to a memory space of size #SERIAL_MANAGER_HANDLE_SIZE
|
||||
* allocated by the caller.
|
||||
* The Serial Manager module supports two types of serial port, UART (includes UART, USART, LPSCI, LPUART, etc) and USB
|
||||
* CDC.
|
||||
* Please refer to #serial_port_type_t for serial port setting. These two types can be set by using
|
||||
* #serial_manager_config_t.
|
||||
*
|
||||
* Example below shows how to use this API to configure the Serial Manager.
|
||||
* For UART,
|
||||
* @code
|
||||
* #define SERIAL_MANAGER_RING_BUFFER_SIZE (256U)
|
||||
* static uint8_t s_serialHandleBuffer[SERIAL_MANAGER_HANDLE_SIZE];
|
||||
* static serial_handle_t s_serialHandle = &s_serialHandleBuffer[0];
|
||||
* static uint8_t s_ringBuffer[SERIAL_MANAGER_RING_BUFFER_SIZE];
|
||||
*
|
||||
* serial_manager_config_t config;
|
||||
* serial_port_uart_config_t uartConfig;
|
||||
* config.type = kSerialPort_Uart;
|
||||
* config.ringBuffer = &s_ringBuffer[0];
|
||||
* config.ringBufferSize = SERIAL_MANAGER_RING_BUFFER_SIZE;
|
||||
* uartConfig.instance = 0;
|
||||
* uartConfig.clockRate = 24000000;
|
||||
* uartConfig.baudRate = 115200;
|
||||
* uartConfig.parityMode = kSerialManager_UartParityDisabled;
|
||||
* uartConfig.stopBitCount = kSerialManager_UartOneStopBit;
|
||||
* uartConfig.enableRx = 1;
|
||||
* uartConfig.enableTx = 1;
|
||||
* config.portConfig = &uartConfig;
|
||||
* SerialManager_Init(s_serialHandle, &config);
|
||||
* @endcode
|
||||
* For USB CDC,
|
||||
* @code
|
||||
* #define SERIAL_MANAGER_RING_BUFFER_SIZE (256U)
|
||||
* static uint8_t s_serialHandleBuffer[SERIAL_MANAGER_HANDLE_SIZE];
|
||||
* static serial_handle_t s_serialHandle = &s_serialHandleBuffer[0];
|
||||
* static uint8_t s_ringBuffer[SERIAL_MANAGER_RING_BUFFER_SIZE];
|
||||
*
|
||||
* serial_manager_config_t config;
|
||||
* serial_port_usb_cdc_config_t usbCdcConfig;
|
||||
* config.type = kSerialPort_UsbCdc;
|
||||
* config.ringBuffer = &s_ringBuffer[0];
|
||||
* config.ringBufferSize = SERIAL_MANAGER_RING_BUFFER_SIZE;
|
||||
* usbCdcConfig.controllerIndex = kSerialManager_UsbControllerKhci0;
|
||||
* config.portConfig = &usbCdcConfig;
|
||||
* SerialManager_Init(s_serialHandle, &config);
|
||||
* @endcode
|
||||
*
|
||||
* @param serialHandle Pointer to point to a memory space of size #SERIAL_MANAGER_HANDLE_SIZE allocated by the caller.
|
||||
* @param config Pointer to user-defined configuration structure.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
* @retval kStatus_SerialManager_Success The Serial Manager module initialization succeed.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_Init(serial_handle_t serialHandle, serial_manager_config_t *config);
|
||||
|
||||
/*!
|
||||
* @brief De-initializes the serial manager module instance.
|
||||
*
|
||||
* This function de-initializes the serial manager module instance. If the opened writing or
|
||||
* reading handle is not closed, the function will return kStatus_SerialManager_Busy.
|
||||
*
|
||||
* @param serialHandle The serial manager module handle pointer.
|
||||
* @retval kStatus_SerialManager_Success The serial manager de-initialization succeed.
|
||||
* @retval kStatus_SerialManager_Busy Opened reading or writing handle is not closed.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_Deinit(serial_handle_t serialHandle);
|
||||
|
||||
/*!
|
||||
* @brief Opens a writing handle for the serial manager module.
|
||||
*
|
||||
* This function Opens a writing handle for the serial manager module. If the serial manager needs to
|
||||
* be used in different tasks, the task should open a dedicated write handle for itself by calling
|
||||
* #SerialManager_OpenWriteHandle. Since there can only one buffer for transmission for the writing
|
||||
* handle at the same time, multiple writing handles need to be opened when the multiple transmission
|
||||
* is needed for a task.
|
||||
*
|
||||
* @param serialHandle The serial manager module handle pointer.
|
||||
* @param writeHandle The serial manager module writing handle pointer.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
* @retval kStatus_SerialManager_HandleConflict The writing handle was opened.
|
||||
* @retval kStatus_SerialManager_Success The writing handle is opened.
|
||||
*
|
||||
* Example below shows how to use this API to write data.
|
||||
* For task 1,
|
||||
* @code
|
||||
* static uint8_t s_serialWriteHandleBuffer1[SERIAL_MANAGER_WRITE_HANDLE_SIZE];
|
||||
* static serial_write_handle_t s_serialWriteHandle1 = &s_serialWriteHandleBuffer1[0];
|
||||
* static uint8_t s_nonBlockingWelcome1[] = "This is non-blocking writing log for task1!\r\n";
|
||||
* SerialManager_OpenWriteHandle(serialHandle, s_serialWriteHandle1);
|
||||
* SerialManager_InstallTxCallback(s_serialWriteHandle1, Task1_SerialManagerTxCallback, s_serialWriteHandle1);
|
||||
* SerialManager_WriteNonBlocking(s_serialWriteHandle1, s_nonBlockingWelcome1, sizeof(s_nonBlockingWelcome1) - 1);
|
||||
* @endcode
|
||||
* For task 2,
|
||||
* @code
|
||||
* static uint8_t s_serialWriteHandleBuffer2[SERIAL_MANAGER_WRITE_HANDLE_SIZE];
|
||||
* static serial_write_handle_t s_serialWriteHandle2 = &s_serialWriteHandleBuffer2[0];
|
||||
* static uint8_t s_nonBlockingWelcome2[] = "This is non-blocking writing log for task2!\r\n";
|
||||
* SerialManager_OpenWriteHandle(serialHandle, s_serialWriteHandle2);
|
||||
* SerialManager_InstallTxCallback(s_serialWriteHandle2, Task2_SerialManagerTxCallback, s_serialWriteHandle2);
|
||||
* SerialManager_WriteNonBlocking(s_serialWriteHandle2, s_nonBlockingWelcome2, sizeof(s_nonBlockingWelcome2) - 1);
|
||||
* @endcode
|
||||
*/
|
||||
serial_manager_status_t SerialManager_OpenWriteHandle(serial_handle_t serialHandle, serial_write_handle_t writeHandle);
|
||||
|
||||
/*!
|
||||
* @brief Closes a writing handle for the serial manager module.
|
||||
*
|
||||
* This function Closes a writing handle for the serial manager module.
|
||||
*
|
||||
* @param writeHandle The serial manager module writing handle pointer.
|
||||
* @retval kStatus_SerialManager_Success The writing handle is closed.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_CloseWriteHandle(serial_write_handle_t writeHandle);
|
||||
|
||||
/*!
|
||||
* @brief Opens a reading handle for the serial manager module.
|
||||
*
|
||||
* This function Opens a reading handle for the serial manager module. The reading handle can not be
|
||||
* opened multiple at the same time. The error code kStatus_SerialManager_Busy would be returned when
|
||||
* the previous reading handle is not closed. And There can only be one buffer for receiving for the
|
||||
* reading handle at the same time.
|
||||
*
|
||||
* @param serialHandle The serial manager module handle pointer.
|
||||
* @param readHandle The serial manager module reading handle pointer.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
* @retval kStatus_SerialManager_Success The reading handle is opened.
|
||||
* @retval kStatus_SerialManager_Busy Previous reading handle is not closed.
|
||||
*
|
||||
* Example below shows how to use this API to read data.
|
||||
* @code
|
||||
* static uint8_t s_serialReadHandleBuffer[SERIAL_MANAGER_READ_HANDLE_SIZE];
|
||||
* static serial_read_handle_t s_serialReadHandle = &s_serialReadHandleBuffer[0];
|
||||
* SerialManager_OpenReadHandle(serialHandle, s_serialReadHandle);
|
||||
* static uint8_t s_nonBlockingBuffer[64];
|
||||
* SerialManager_InstallRxCallback(s_serialReadHandle, APP_SerialManagerRxCallback, s_serialReadHandle);
|
||||
* SerialManager_ReadNonBlocking(s_serialReadHandle, s_nonBlockingBuffer, sizeof(s_nonBlockingBuffer));
|
||||
* @endcode
|
||||
*/
|
||||
serial_manager_status_t SerialManager_OpenReadHandle(serial_handle_t serialHandle, serial_read_handle_t readHandle);
|
||||
|
||||
/*!
|
||||
* @brief Closes a reading for the serial manager module.
|
||||
*
|
||||
* This function Closes a reading for the serial manager module.
|
||||
*
|
||||
* @param readHandle The serial manager module reading handle pointer.
|
||||
* @retval kStatus_SerialManager_Success The reading handle is closed.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_CloseReadHandle(serial_read_handle_t readHandle);
|
||||
|
||||
/*!
|
||||
* @brief Transmits data with the blocking mode.
|
||||
*
|
||||
* This is a blocking function, which polls the sending queue, waits for the sending queue to be empty.
|
||||
* This function sends data using an interrupt method. The interrupt of the hardware could not be disabled.
|
||||
* And There can only one buffer for transmission for the writing handle at the same time.
|
||||
*
|
||||
* @note The function #SerialManager_WriteBlocking and the function #SerialManager_WriteNonBlocking
|
||||
* cannot be used at the same time.
|
||||
* And, the function #SerialManager_CancelWriting cannot be used to abort the transmission of this function.
|
||||
*
|
||||
* @param writeHandle The serial manager module handle pointer.
|
||||
* @param buffer Start address of the data to write.
|
||||
* @param length Length of the data to write.
|
||||
* @retval kStatus_SerialManager_Success Successfully sent all data.
|
||||
* @retval kStatus_SerialManager_Busy Previous transmission still not finished; data not all sent yet.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_WriteBlocking(serial_write_handle_t writeHandle,
|
||||
uint8_t *buffer,
|
||||
uint32_t length);
|
||||
|
||||
/*!
|
||||
* @brief Reads data with the blocking mode.
|
||||
*
|
||||
* This is a blocking function, which polls the receiving buffer, waits for the receiving buffer to be full.
|
||||
* This function receives data using an interrupt method. The interrupt of the hardware could not be disabled.
|
||||
* And There can only one buffer for receiving for the reading handle at the same time.
|
||||
*
|
||||
* @note The function #SerialManager_ReadBlocking and the function #SerialManager_ReadNonBlocking
|
||||
* cannot be used at the same time.
|
||||
* And, the function #SerialManager_CancelReading cannot be used to abort the transmission of this function.
|
||||
*
|
||||
* @param readHandle The serial manager module handle pointer.
|
||||
* @param buffer Start address of the data to store the received data.
|
||||
* @param length The length of the data to be received.
|
||||
* @retval kStatus_SerialManager_Success Successfully received all data.
|
||||
* @retval kStatus_SerialManager_Busy Previous transmission still not finished; data not all received yet.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_ReadBlocking(serial_read_handle_t readHandle, uint8_t *buffer, uint32_t length);
|
||||
|
||||
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
|
||||
/*!
|
||||
* @brief Transmits data with the non-blocking mode.
|
||||
*
|
||||
* This is a non-blocking function, which returns directly without waiting for all data to be sent.
|
||||
* When all data is sent, the module notifies the upper layer through a TX callback function and passes
|
||||
* the status parameter @ref kStatus_SerialManager_Success.
|
||||
* This function sends data using an interrupt method. The interrupt of the hardware could not be disabled.
|
||||
* And There can only one buffer for transmission for the writing handle at the same time.
|
||||
*
|
||||
* @note The function #SerialManager_WriteBlocking and the function #SerialManager_WriteNonBlocking
|
||||
* cannot be used at the same time. And, the TX callback is mandatory before the function could be used.
|
||||
*
|
||||
* @param writeHandle The serial manager module handle pointer.
|
||||
* @param buffer Start address of the data to write.
|
||||
* @param length Length of the data to write.
|
||||
* @retval kStatus_SerialManager_Success Successfully sent all data.
|
||||
* @retval kStatus_SerialManager_Busy Previous transmission still not finished; data not all sent yet.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_WriteNonBlocking(serial_write_handle_t writeHandle,
|
||||
uint8_t *buffer,
|
||||
uint32_t length);
|
||||
|
||||
/*!
|
||||
* @brief Reads data with the non-blocking mode.
|
||||
*
|
||||
* This is a non-blocking function, which returns directly without waiting for all data to be received.
|
||||
* When all data is received, the module driver notifies the upper layer
|
||||
* through a RX callback function and passes the status parameter @ref kStatus_SerialManager_Success.
|
||||
* This function receives data using an interrupt method. The interrupt of the hardware could not be disabled.
|
||||
* And There can only one buffer for receiving for the reading handle at the same time.
|
||||
*
|
||||
* @note The function #SerialManager_ReadBlocking and the function #SerialManager_ReadNonBlocking
|
||||
* cannot be used at the same time. And, the RX callback is mandatory before the function could be used.
|
||||
*
|
||||
* @param readHandle The serial manager module handle pointer.
|
||||
* @param buffer Start address of the data to store the received data.
|
||||
* @param length The length of the data to be received.
|
||||
* @retval kStatus_SerialManager_Success Successfully received all data.
|
||||
* @retval kStatus_SerialManager_Busy Previous transmission still not finished; data not all received yet.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_ReadNonBlocking(serial_read_handle_t readHandle,
|
||||
uint8_t *buffer,
|
||||
uint32_t length);
|
||||
|
||||
/*!
|
||||
* @brief Tries to read data.
|
||||
*
|
||||
* The function tries to read data from internal ring buffer. If the ring buffer is not empty, the data will be
|
||||
* copied from ring buffer to up layer buffer. The copied length is the minimum of the ring buffer and up layer length.
|
||||
* After the data is copied, the actual data length is passed by the parameter length.
|
||||
* And There can only one buffer for receiving for the reading handle at the same time.
|
||||
*
|
||||
* @param readHandle The serial manager module handle pointer.
|
||||
* @param buffer Start address of the data to store the received data.
|
||||
* @param length The length of the data to be received.
|
||||
* @param receivedLength Length received from the ring buffer directly.
|
||||
* @retval kStatus_SerialManager_Success Successfully received all data.
|
||||
* @retval kStatus_SerialManager_Busy Previous transmission still not finished; data not all received yet.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_TryRead(serial_read_handle_t readHandle,
|
||||
uint8_t *buffer,
|
||||
uint32_t length,
|
||||
uint32_t *receivedLength);
|
||||
|
||||
/*!
|
||||
* @brief Cancels unfinished send transmission.
|
||||
*
|
||||
* The function cancels unfinished send transmission. When the transfer is canceled, the module notifies the upper layer
|
||||
* through a TX callback function and passes the status parameter @ref kStatus_SerialManager_Canceled.
|
||||
*
|
||||
* @note The function #SerialManager_CancelWriting cannot be used to abort the transmission of
|
||||
* the function #SerialManager_WriteBlocking.
|
||||
*
|
||||
* @param writeHandle The serial manager module handle pointer.
|
||||
* @retval kStatus_SerialManager_Success Get successfully abort the sending.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_CancelWriting(serial_write_handle_t writeHandle);
|
||||
|
||||
/*!
|
||||
* @brief Cancels unfinished receive transmission.
|
||||
*
|
||||
* The function cancels unfinished receive transmission. When the transfer is canceled, the module notifies the upper
|
||||
* layer
|
||||
* through a RX callback function and passes the status parameter @ref kStatus_SerialManager_Canceled.
|
||||
*
|
||||
* @note The function #SerialManager_CancelReading cannot be used to abort the transmission of
|
||||
* the function #SerialManager_ReadBlocking.
|
||||
*
|
||||
* @param readHandle The serial manager module handle pointer.
|
||||
* @retval kStatus_SerialManager_Success Get successfully abort the receiving.
|
||||
* @retval kStatus_SerialManager_Error An error occurred.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_CancelReading(serial_read_handle_t readHandle);
|
||||
|
||||
/*!
|
||||
* @brief Installs a TX callback and callback parameter.
|
||||
*
|
||||
* This function is used to install the TX callback and callback parameter for the serial manager module.
|
||||
* When any status of TX transmission changed, the driver will notify the upper layer by the installed callback
|
||||
* function. And the status is also passed as status parameter when the callback is called.
|
||||
*
|
||||
* @param writeHandle The serial manager module handle pointer.
|
||||
* @param callback The callback function.
|
||||
* @param callbackParam The parameter of the callback function.
|
||||
* @retval kStatus_SerialManager_Success Successfully install the callback.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_InstallTxCallback(serial_write_handle_t writeHandle,
|
||||
serial_manager_callback_t callback,
|
||||
void *callbackParam);
|
||||
|
||||
/*!
|
||||
* @brief Installs a RX callback and callback parameter.
|
||||
*
|
||||
* This function is used to install the RX callback and callback parameter for the serial manager module.
|
||||
* When any status of RX transmission changed, the driver will notify the upper layer by the installed callback
|
||||
* function. And the status is also passed as status parameter when the callback is called.
|
||||
*
|
||||
* @param readHandle The serial manager module handle pointer.
|
||||
* @param callback The callback function.
|
||||
* @param callbackParam The parameter of the callback function.
|
||||
* @retval kStatus_SerialManager_Success Successfully install the callback.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_InstallRxCallback(serial_read_handle_t readHandle,
|
||||
serial_manager_callback_t callback,
|
||||
void *callbackParam);
|
||||
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @brief Prepares to enter low power consumption.
|
||||
*
|
||||
* This function is used to prepare to enter low power consumption.
|
||||
*
|
||||
* @param serialHandle The serial manager module handle pointer.
|
||||
* @retval kStatus_SerialManager_Success Successful operation.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_EnterLowpower(serial_handle_t serialHandle);
|
||||
|
||||
/*!
|
||||
* @brief Restores from low power consumption.
|
||||
*
|
||||
* This function is used to restore from low power consumption.
|
||||
*
|
||||
* @param serialHandle The serial manager module handle pointer.
|
||||
* @retval kStatus_SerialManager_Success Successful operation.
|
||||
*/
|
||||
serial_manager_status_t SerialManager_ExitLowpower(serial_handle_t serialHandle);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
/*! @} */
|
||||
#endif /* __SERIAL_MANAGER_H__ */
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* Copyright 2018 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef __SERIAL_PORT_UART_H__
|
||||
#define __SERIAL_PORT_UART_H__
|
||||
|
||||
/*!
|
||||
* @addtogroup serial_port_uart
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
/*! @brief serial port uart handle size*/
|
||||
#if (defined(SERIAL_MANAGER_NON_BLOCKING_MODE) && (SERIAL_MANAGER_NON_BLOCKING_MODE > 0U))
|
||||
#define SERIAL_PORT_UART_HANDLE_SIZE (166U)
|
||||
#else
|
||||
#define SERIAL_PORT_UART_HANDLE_SIZE (4U)
|
||||
#endif
|
||||
|
||||
/*! @brief serial port uart parity mode*/
|
||||
typedef enum _serial_port_uart_parity_mode
|
||||
{
|
||||
kSerialManager_UartParityDisabled = 0x0U, /*!< Parity disabled */
|
||||
kSerialManager_UartParityEven = 0x1U, /*!< Parity even enabled */
|
||||
kSerialManager_UartParityOdd = 0x2U, /*!< Parity odd enabled */
|
||||
} serial_port_uart_parity_mode_t;
|
||||
|
||||
/*! @brief serial port uart stop bit count*/
|
||||
typedef enum _serial_port_uart_stop_bit_count
|
||||
{
|
||||
kSerialManager_UartOneStopBit = 0U, /*!< One stop bit */
|
||||
kSerialManager_UartTwoStopBit = 1U, /*!< Two stop bits */
|
||||
} serial_port_uart_stop_bit_count_t;
|
||||
|
||||
/*! @brief serial port uart config struct*/
|
||||
typedef struct _serial_port_uart_config
|
||||
{
|
||||
uint32_t clockRate; /*!< clock rate */
|
||||
uint32_t baudRate; /*!< baud rate */
|
||||
serial_port_uart_parity_mode_t parityMode; /*!< Parity mode, disabled (default), even, odd */
|
||||
serial_port_uart_stop_bit_count_t stopBitCount; /*!< Number of stop bits, 1 stop bit (default) or 2 stop bits */
|
||||
uint8_t instance; /*!< Instance (0 - UART0, 1 - UART1, ...), detail information
|
||||
please refer to the SOC corresponding RM. */
|
||||
uint8_t enableRx; /*!< Enable RX */
|
||||
uint8_t enableTx; /*!< Enable TX */
|
||||
} serial_port_uart_config_t;
|
||||
/*! @} */
|
||||
#endif /* __SERIAL_PORT_UART_H__ */
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* Copyright (c) 2015 - 2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016 - 2018 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef __SERIAL_PORT_USB_H__
|
||||
#define __SERIAL_PORT_USB_H__
|
||||
|
||||
#if defined(FSL_RTOS_FREE_RTOS)
|
||||
#include "FreeRTOS.h"
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @addtogroup serial_port_usb
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
/*! @brief serial port usb handle size*/
|
||||
#define SERIAL_PORT_USB_CDC_HANDLE_SIZE (72)
|
||||
|
||||
/*! @brief USB interrupt priority*/
|
||||
#if defined(__GIC_PRIO_BITS)
|
||||
#define USB_DEVICE_INTERRUPT_PRIORITY (25U)
|
||||
#else
|
||||
#if defined(configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY)
|
||||
#define USB_DEVICE_INTERRUPT_PRIORITY (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY)
|
||||
#else
|
||||
/* The default value 3 is used to support different ARM Core, such as CM0P, CM4, CM7, and CM33, etc.
|
||||
* The minimum number of priority bits implemented in the NVIC is 2 on these SOCs. The value of mininum
|
||||
* priority is 3 (2^2 - 1). So, the default value is 3.
|
||||
*/
|
||||
#define USB_DEVICE_INTERRUPT_PRIORITY (3U)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*! @brief USB controller ID */
|
||||
typedef enum _serial_port_usb_cdc_controller_index
|
||||
{
|
||||
kSerialManager_UsbControllerKhci0 = 0U, /*!< KHCI 0U */
|
||||
kSerialManager_UsbControllerKhci1 = 1U, /*!< KHCI 1U, Currently, there are no platforms which have two KHCI IPs,
|
||||
this is reserved to be used in the future. */
|
||||
kSerialManager_UsbControllerEhci0 = 2U, /*!< EHCI 0U */
|
||||
kSerialManager_UsbControllerEhci1 = 3U, /*!< EHCI 1U, Currently, there are no platforms which have two EHCI IPs,
|
||||
this is reserved to be used in the future. */
|
||||
|
||||
kSerialManager_UsbControllerLpcIp3511Fs0 = 4U, /*!< LPC USB IP3511 FS controller 0 */
|
||||
kSerialManager_UsbControllerLpcIp3511Fs1 = 5U, /*!< LPC USB IP3511 FS controller 1, there are no platforms which
|
||||
have two IP3511 IPs, this is reserved to be used in the future. */
|
||||
|
||||
kSerialManager_UsbControllerLpcIp3511Hs0 = 6U, /*!< LPC USB IP3511 HS controller 0 */
|
||||
kSerialManager_UsbControllerLpcIp3511Hs1 = 7U, /*!< LPC USB IP3511 HS controller 1, there are no platforms which
|
||||
have two IP3511 IPs, this is reserved to be used in the future. */
|
||||
|
||||
kSerialManager_UsbControllerOhci0 = 8U, /*!< OHCI 0U */
|
||||
kSerialManager_UsbControllerOhci1 = 9U, /*!< OHCI 1U, Currently, there are no platforms which have two OHCI IPs,
|
||||
this is reserved to be used in the future. */
|
||||
|
||||
kSerialManager_UsbControllerIp3516Hs0 = 10U, /*!< IP3516HS 0U */
|
||||
kSerialManager_UsbControllerIp3516Hs1 = 11U, /*!< IP3516HS 1U, Currently, there are no platforms which have two
|
||||
IP3516HS IPs, this is reserved to be used in the future. */
|
||||
} serial_port_usb_cdc_controller_index_t;
|
||||
|
||||
/*! @brief serial port usb config struct*/
|
||||
typedef struct _serial_port_usb_cdc_config
|
||||
{
|
||||
serial_port_usb_cdc_controller_index_t controllerIndex; /*!< controller index */
|
||||
} serial_port_usb_cdc_config_t;
|
||||
|
||||
/*! @} */
|
||||
#endif /* __SERIAL_PORT_USB_H__ */
|
|
@ -6,18 +6,6 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file fsl_lpuart.c
|
||||
* @brief fsl uart drivers
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
/**
|
||||
* @file test_i2c.c
|
||||
* @brief support to test i2c function
|
||||
* @version 1.0
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2021-04-24
|
||||
*/
|
||||
|
@ -24,15 +24,15 @@
|
|||
|
||||
/*********************************************************************************************************************************************************/
|
||||
/*
|
||||
* function:I2C device sample support reading temperature and humidity sensor data and printfing on the terminal
|
||||
* shell cmd:i2c_HS3000_sample i2c1
|
||||
* shell cmd param:i2c device name,if null means default i2c device name
|
||||
* function: I2C device sample support reading temperature and humidity sensor data and printfing on the terminal
|
||||
* shell cmd: i2c_HS3000_sample i2c1
|
||||
* shell cmd param: i2c device name,if null means default i2c device name
|
||||
*/
|
||||
|
||||
#define HS_I2C_BUS_NAME I2C_BUS_NAME_1 /* I2C bus name */
|
||||
#define HS_I2C_DEV_NAME I2C_1_DEVICE_NAME_0/* I2C device name */
|
||||
#define HS_I2C_DRV_NAME I2C_DRV_NAME_1 /* I2C driver name */
|
||||
#define ADDR 0x44 /* slave address */
|
||||
#define HS_I2C_BUS_NAME I2C_BUS_NAME_1 /* I2C bus name */
|
||||
#define HS_I2C_DEV_NAME I2C_1_DEVICE_NAME_0 /* I2C device name */
|
||||
#define HS_I2C_DRV_NAME I2C_DRV_NAME_1 /* I2C driver name */
|
||||
#define ADDR 0x44 /* slave address */
|
||||
|
||||
static struct Bus *i2c_bus = NONE; /* I2C bus handle */
|
||||
|
||||
|
@ -55,7 +55,7 @@ static x_err_t WriteReg(struct HardwareDev *dev)
|
|||
return EOK;
|
||||
}
|
||||
else{
|
||||
return -ERROR;
|
||||
return -ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ static void ReadTempHumi(float *cur_temp, float *cur_humi)
|
|||
if(EOK != ret){
|
||||
KPrintf("ReadTempHumi ReadRegs failed\n");
|
||||
}
|
||||
|
||||
|
||||
*cur_humi = ((temp[0] <<8 | temp[1] )& 0x3fff ) * 100.0 / ( (1 << 14) - 1); /* humidity data */
|
||||
|
||||
*cur_temp = ((temp[2] << 8 | temp[3]) >> 2) * 165.0 /( (1 << 14) - 1) - 40.0; /* temperature data */
|
||||
|
@ -113,7 +113,7 @@ static void HS3000Init(const char *bus_name, const char *dev_name, const char *
|
|||
KPrintf("i2c match drv %s %p dev %s %p error\n", drv_name, i2c_bus->owner_driver, dev_name, i2c_bus->owner_haldev);
|
||||
}
|
||||
else{
|
||||
KPrintf("HS3000Init successfully!write %p read %p\n",
|
||||
KPrintf("HS3000Init successfully!write %p read %p\n",
|
||||
i2c_bus->owner_haldev->dev_done->write,
|
||||
i2c_bus->owner_haldev->dev_done->read);
|
||||
}
|
||||
|
@ -144,15 +144,15 @@ void TskHs300xTest()
|
|||
{
|
||||
memset(&g_hs300x_data, 0, sizeof(Hs300xDataType));
|
||||
KPrintf("Tsk create successfully!\n");
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
Hs300xRead(&g_hs300x_data);
|
||||
|
||||
KPrintf("HS300X:I2C humidity:%d.%d temperature:%d.%d\n",
|
||||
g_hs300x_data.humi_high,
|
||||
g_hs300x_data.humi_low,
|
||||
g_hs300x_data.temp_high,
|
||||
KPrintf("HS300X:I2C humidity:%d.%d temperature:%d.%d\n",
|
||||
g_hs300x_data.humi_high,
|
||||
g_hs300x_data.humi_low,
|
||||
g_hs300x_data.temp_high,
|
||||
g_hs300x_data.temp_low);
|
||||
|
||||
MdelayKTask(1000);
|
||||
|
@ -167,12 +167,14 @@ void Hs300xI2cTest(void)
|
|||
MdelayKTask(1000);
|
||||
|
||||
x_err_t flag;
|
||||
int32 Tsk_hs300x = KTaskCreate("Tsk_hs300x", TskHs300xTest, NONE, 2048, 10);
|
||||
flag = StartupKTask(Tsk_hs300x);
|
||||
int32 Tsk_hs300x = KTaskCreate("Tsk_hs300x", TskHs300xTest, NONE, 2048, 10);
|
||||
flag = StartupKTask(Tsk_hs300x);
|
||||
if (EOK != flag){
|
||||
KPrintf("Hs300xI2cTest StartupKTask failed!\n");
|
||||
return;
|
||||
}
|
||||
KPrintf("Hs300xI2cTest StartupKTask failed!\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_PARAM_NUM(0),
|
||||
Hs300xI2cTest, Hs300xI2cTest, Test the HS300X using I2C);
|
||||
|
||||
|
||||
|
|
|
@ -5,6 +5,10 @@ ifeq ($(CONFIG_KERNEL_DEVICE),y)
|
|||
SRC_FILES += device.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_RESOURCES_ADC),y)
|
||||
SRC_DIR += adc
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_RESOURCES_CAN),y)
|
||||
SRC_DIR += can
|
||||
endif
|
||||
|
|
|
@ -12,8 +12,7 @@
|
|||
|
||||
/**
|
||||
* @file bus.c
|
||||
* @brief 1、support bus driver framework;2、provide bus API。
|
||||
* @version 1.0
|
||||
* @brief Support bus driver framework provide bus API version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2021-04-24
|
||||
*/
|
||||
|
@ -71,7 +70,7 @@ static int BusMatchDrvDev(struct Driver *driver, struct HardwareDev *device)
|
|||
* @param dev - dev pointer
|
||||
* @param drv_name - drv name
|
||||
* @param configure_info - BusConfigureInfo pointer
|
||||
* @return successful:EOK,failed:ERROR
|
||||
* @return successful:EOK,failed:ERROR
|
||||
*/
|
||||
int DeviceObtainBus(struct Bus *bus, struct HardwareDev *dev, const char *drv_name, struct BusConfigureInfo *configure_info)
|
||||
{
|
||||
|
@ -88,7 +87,7 @@ int DeviceObtainBus(struct Bus *bus, struct HardwareDev *dev, const char *drv_na
|
|||
|
||||
if(bus->owner_haldev != dev) {
|
||||
struct Driver *drv = BusFindDriver(bus, drv_name);
|
||||
|
||||
|
||||
configure_info->configure_cmd = OPE_CFG;
|
||||
drv->configure(drv, configure_info);
|
||||
|
||||
|
@ -104,7 +103,7 @@ int DeviceObtainBus(struct Bus *bus, struct HardwareDev *dev, const char *drv_na
|
|||
/**
|
||||
* @Description: support to register bus pointer with linklist
|
||||
* @param bus - bus pointer
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
int BusRegister(struct Bus *bus)
|
||||
{
|
||||
|
@ -125,7 +124,7 @@ int BusRegister(struct Bus *bus)
|
|||
/**
|
||||
* @Description: support to release bus pointer in linklist
|
||||
* @param bus - bus pointer
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
int BusRelease(struct Bus *bus)
|
||||
{
|
||||
|
@ -147,7 +146,7 @@ int BusRelease(struct Bus *bus)
|
|||
/**
|
||||
* @Description: support to unregister bus pointer and delete its linklist node
|
||||
* @param bus - bus pointer
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
int BusUnregister(struct Bus *bus)
|
||||
{
|
||||
|
@ -164,7 +163,7 @@ int BusUnregister(struct Bus *bus)
|
|||
* @Description: support to register driver pointer to bus pointer
|
||||
* @param bus - bus pointer
|
||||
* @param driver - driver pointer
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
int DriverRegisterToBus(struct Bus *bus, struct Driver *driver)
|
||||
{
|
||||
|
@ -183,12 +182,12 @@ int DriverRegisterToBus(struct Bus *bus, struct Driver *driver)
|
|||
* @Description: support to register dev pointer to bus pointer
|
||||
* @param bus - bus pointer
|
||||
* @param device - device pointer
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
int DeviceRegisterToBus(struct Bus *bus, struct HardwareDev *device)
|
||||
{
|
||||
NULL_PARAM_CHECK(bus);
|
||||
NULL_PARAM_CHECK(device);
|
||||
NULL_PARAM_CHECK(device);
|
||||
|
||||
device->owner_bus = bus;
|
||||
bus->haldev_cnt++;
|
||||
|
@ -202,7 +201,7 @@ int DeviceRegisterToBus(struct Bus *bus, struct HardwareDev *device)
|
|||
* @Description: support to delete driver pointer from bus pointer
|
||||
* @param bus - bus pointer
|
||||
* @param driver - driver pointer
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
int DriverDeleteFromBus(struct Bus *bus, struct Driver *driver)
|
||||
{
|
||||
|
@ -222,12 +221,12 @@ int DriverDeleteFromBus(struct Bus *bus, struct Driver *driver)
|
|||
* @Description: support to delete dev pointer from bus pointer
|
||||
* @param bus - bus pointer
|
||||
* @param device - device pointer
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
int DeviceDeleteFromBus(struct Bus *bus, struct HardwareDev *device)
|
||||
{
|
||||
NULL_PARAM_CHECK(bus);
|
||||
NULL_PARAM_CHECK(device);
|
||||
NULL_PARAM_CHECK(device);
|
||||
|
||||
bus->haldev_cnt--;
|
||||
|
||||
|
@ -241,7 +240,7 @@ int DeviceDeleteFromBus(struct Bus *bus, struct HardwareDev *device)
|
|||
/**
|
||||
* @Description: support to find bus pointer by bus name
|
||||
* @param bus_name - bus name
|
||||
* @return successful:bus pointer,failed:NONE
|
||||
* @return successful:bus pointer,failed:NONE
|
||||
*/
|
||||
BusType BusFind(const char *bus_name)
|
||||
{
|
||||
|
@ -266,7 +265,7 @@ BusType BusFind(const char *bus_name)
|
|||
* @Description: support to find driver pointer of certain bus by driver name
|
||||
* @param bus - bus pointer
|
||||
* @param driver_name - driver name
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
DriverType BusFindDriver(struct Bus *bus, const char *driver_name)
|
||||
{
|
||||
|
@ -292,7 +291,7 @@ DriverType BusFindDriver(struct Bus *bus, const char *driver_name)
|
|||
* @Description: support to find device pointer of certain bus by device name
|
||||
* @param bus - bus pointer
|
||||
* @param device_name - device name
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
HardwareDevType BusFindDevice(struct Bus *bus, const char *device_name)
|
||||
{
|
||||
|
@ -319,7 +318,7 @@ HardwareDevType BusFindDevice(struct Bus *bus, const char *device_name)
|
|||
* @Description: support to set dev receive function callback
|
||||
* @param dev - dev pointer
|
||||
* @param dev_recv_callback - callback function
|
||||
* @return successful:EOK,failed:ERROR
|
||||
* @return successful:EOK,failed:ERROR
|
||||
*/
|
||||
uint32 BusDevRecvCallback(struct HardwareDev *dev, int (*dev_recv_callback) (void *dev, x_size_t length))
|
||||
{
|
||||
|
@ -333,7 +332,7 @@ uint32 BusDevRecvCallback(struct HardwareDev *dev, int (*dev_recv_callback) (voi
|
|||
/**
|
||||
* @Description: support to open dev
|
||||
* @param dev - dev pointer
|
||||
* @return successful:EOK,failed:ERROR
|
||||
* @return successful:EOK,failed:ERROR
|
||||
*/
|
||||
uint32 BusDevOpen(struct HardwareDev *dev)
|
||||
{
|
||||
|
@ -355,7 +354,7 @@ uint32 BusDevOpen(struct HardwareDev *dev)
|
|||
/**
|
||||
* @Description: support to close dev
|
||||
* @param dev - dev pointer
|
||||
* @return successful:EOK,failed:ERROR
|
||||
* @return successful:EOK,failed:ERROR
|
||||
*/
|
||||
uint32 BusDevClose(struct HardwareDev *dev)
|
||||
{
|
||||
|
@ -378,12 +377,12 @@ uint32 BusDevClose(struct HardwareDev *dev)
|
|||
* @Description: support to write data to dev
|
||||
* @param dev - dev pointer
|
||||
* @param write_param - BusBlockWriteParam
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
uint32 BusDevWriteData(struct HardwareDev *dev, struct BusBlockWriteParam *write_param)
|
||||
{
|
||||
NULL_PARAM_CHECK(dev);
|
||||
|
||||
|
||||
if (dev->dev_done->write) {
|
||||
return dev->dev_done->write(dev, write_param);
|
||||
}
|
||||
|
@ -395,12 +394,12 @@ uint32 BusDevWriteData(struct HardwareDev *dev, struct BusBlockWriteParam *write
|
|||
* @Description: support to read data from dev
|
||||
* @param dev - dev pointer
|
||||
* @param read_param - BusBlockReadParam
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
uint32 BusDevReadData(struct HardwareDev *dev, struct BusBlockReadParam *read_param)
|
||||
{
|
||||
NULL_PARAM_CHECK(dev);
|
||||
|
||||
|
||||
if (dev->dev_done->read) {
|
||||
return dev->dev_done->read(dev, read_param);
|
||||
}
|
||||
|
@ -412,7 +411,7 @@ uint32 BusDevReadData(struct HardwareDev *dev, struct BusBlockReadParam *read_pa
|
|||
* @Description: support to configure drv, include OPE_CFG and OPE_INT
|
||||
* @param drv - drv pointer
|
||||
* @param configure_info - BusConfigureInfo
|
||||
* @return successful:EOK,failed:NONE
|
||||
* @return successful:EOK,failed:NONE
|
||||
*/
|
||||
uint32 BusDrvConfigure(struct Driver *drv, struct BusConfigureInfo *configure_info)
|
||||
{
|
||||
|
@ -430,4 +429,4 @@ uint32 BusDrvConfigure(struct Driver *drv, struct BusConfigureInfo *configure_in
|
|||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,17 +29,6 @@
|
|||
* Author: Simon Goldschmidt
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2020 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sys_arch.c
|
||||
|
@ -48,6 +37,7 @@
|
|||
* @author AIIT XUOS Lab
|
||||
* @date 2021-05-29
|
||||
*/
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
#include <lwip/opt.h>
|
||||
|
|
|
@ -29,17 +29,6 @@
|
|||
* Author: Simon Goldschmidt
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2020 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sys_arch.h
|
||||
|
|
|
@ -1,12 +1,3 @@
|
|||
/*
|
||||
* Copyright (c) 2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2019 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
|
|
|
@ -1,3 +1,23 @@
|
|||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file lwip_demo.h
|
||||
* @brief lwip demo header
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2022.1.18
|
||||
*/
|
||||
|
||||
#ifndef __LWIP_DEMO_H__
|
||||
#define __LWIP_DEMO_H__
|
||||
|
||||
|
|
|
@ -7,6 +7,14 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file lwip_dhcp_demo.c
|
||||
* @brief Demo for DHCP function
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
* @date 2021.12.15
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* Includes
|
||||
******************************************************************************/
|
||||
|
|
|
@ -1,12 +1,3 @@
|
|||
/*
|
||||
* Copyright (c) 2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2019 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 AIIT XUOS Lab
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
|
@ -27,7 +18,6 @@
|
|||
* @date 2021.12.15
|
||||
*/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Includes
|
||||
******************************************************************************/
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file tcp_echo_socket_demo.c
|
||||
* @file lwip_udp_demo.c
|
||||
* @brief One UDP demo based on LwIP
|
||||
* @version 1.0
|
||||
* @author AIIT XUOS Lab
|
||||
|
|
Loading…
Reference in New Issue