From 44ffb3af2a28564b9329782f67f18f1bc5640b17 Mon Sep 17 00:00:00 2001 From: wgzAIIT <820906721@qq.com> Date: Mon, 12 Dec 2022 14:23:34 +0800 Subject: [PATCH] =?UTF-8?q?Add=20support=20ch376=20usb=20fuction=E3=80=81l?= =?UTF-8?q?ora=20e220=20and=20wifi=20esp8285=20for=20edu-riscv64=20board?= =?UTF-8?q?=20on=20Nuttx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edu-riscv64/configs/loransh/defconfig | 5 +- .../edu-riscv64/configs/usbnsh/defconfig | 61 +++ .../edu-riscv64/configs/wifinsh/defconfig | 77 ++++ .../aiit_board/edu-riscv64/include/board.h | 30 +- .../aiit_board/edu-riscv64/src/Makefile | 8 +- .../aiit_board/edu-riscv64/src/ch376_demo.c | 4 +- .../aiit_board/edu-riscv64/src/k210_bringup.c | 9 - .../aiit_board/edu-riscv64/src/k210_ch376.c | 2 +- .../aiit_board/edu-riscv64/src/k210_gpio.c | 6 +- .../aiit_board/edu-riscv64/src/k210_lcd.c | 353 ------------------ .../edu-riscv64/src/test_loraE220.c | 96 +++++ .../app_match_nuttx/apps/nshlib/nsh.h | 4 + .../apps/nshlib/nsh_Applicationscmd.c | 10 + .../app_match_nuttx/apps/nshlib/nsh_command.c | 4 + 14 files changed, 267 insertions(+), 402 deletions(-) create mode 100644 Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/usbnsh/defconfig create mode 100644 Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/wifinsh/defconfig delete mode 100644 Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_lcd.c create mode 100644 Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/test_loraE220.c diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/loransh/defconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/loransh/defconfig index 3a71cf017..882bfd930 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/loransh/defconfig +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/loransh/defconfig @@ -9,8 +9,8 @@ # CONFIG_STANDARD_SERIAL is not set CONFIG_ADD_NUTTX_FETURES=y CONFIG_ARCH="risc-v" -CONFIG_ARCH_BOARD="xidatong-riscv64" -CONFIG_ARCH_BOARD_XIDATONG_RISCV64=y +CONFIG_ARCH_BOARD="edu-riscv64" +CONFIG_ARCH_BOARD_EDU_RISCV64=y CONFIG_ARCH_CHIP="k210" CONFIG_ARCH_CHIP_K210=y CONFIG_ARCH_INTERRUPTSTACK=2048 @@ -69,6 +69,7 @@ CONFIG_K210_UART2_BITS=8 CONFIG_K210_UART2_2STOP=0 CONFIG_K210_UART2_RXBUFSIZE=128 CONFIG_K210_UART2_TXBUFSIZE=128 +CONFIG_SERIAL_TERMIOS=y CONFIG_SUPPORT_CONNECTION_FRAMEWORK=y CONFIG_CONNECTION_FRAMEWORK_DEBUG=y CONFIG_CONNECTION_ADAPTER_LORA=y diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/usbnsh/defconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/usbnsh/defconfig new file mode 100644 index 000000000..fbe6ee65d --- /dev/null +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/usbnsh/defconfig @@ -0,0 +1,61 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_DISABLE_LOSMART is not set +# CONFIG_STANDARD_SERIAL is not set +CONFIG_ADD_NUTTX_FETURES=y +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="edu-riscv64" +CONFIG_ARCH_BOARD_EDU_RISCV64=y +CONFIG_ARCH_CHIP="k210" +CONFIG_ARCH_CHIP_K210=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BINFMT_DISABLE=y +CONFIG_BOARD_LOOPSPERMSEC=46000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_DISABLE_MKDIR=y +CONFIG_NSH_DISABLE_RM=y +CONFIG_NSH_DISABLE_RMDIR=y +CONFIG_NSH_DISABLE_UMOUNT=y +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=2097152 +CONFIG_RAM_START=0x80400000 +CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_CMD_HISTORY_LEN=100 +CONFIG_READLINE_CMD_HISTORY_LINELEN=120 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=28 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=20 +CONFIG_TESTING_GETPRIME=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_SCHED_HPWORK=y +CONFIG_DEV_GPIO=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BSP_USING_CH376=y diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/wifinsh/defconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/wifinsh/defconfig new file mode 100644 index 000000000..83a523fcf --- /dev/null +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/wifinsh/defconfig @@ -0,0 +1,77 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_DISABLE_LOSMART is not set +# CONFIG_STANDARD_SERIAL is not set +CONFIG_ADD_NUTTX_FETURES=y +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="edu-riscv64" +CONFIG_ARCH_BOARD_EDU_RISCV64=y +CONFIG_ARCH_CHIP="k210" +CONFIG_ARCH_CHIP_K210=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BINFMT_DISABLE=y +CONFIG_BOARD_LOOPSPERMSEC=46000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_DISABLE_MKDIR=y +CONFIG_NSH_DISABLE_RM=y +CONFIG_NSH_DISABLE_RMDIR=y +CONFIG_NSH_DISABLE_UMOUNT=y +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=2097152 +CONFIG_RAM_START=0x80400000 +CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_CMD_HISTORY_LEN=100 +CONFIG_READLINE_CMD_HISTORY_LINELEN=120 +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=28 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=20 +CONFIG_TESTING_GETPRIME=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_SCHED_HPWORK=y +CONFIG_DEV_GPIO=y +CONFIG_BOARDCTL_RESET=y +CONFIG_K210_UART=y +CONFIG_K210_UART1=y +CONFIG_K210_UART1_BASE=0x50210000 +CONFIG_K210_UART1_CLOCK=195000000 +CONFIG_K210_UART1_IRQ=38 +CONFIG_K210_UART1_BAUD=115200 +CONFIG_K210_UART1_PARITY=0 +CONFIG_K210_UART1_BITS=8 +CONFIG_K210_UART1_2STOP=0 +CONFIG_K210_UART1_RXBUFSIZE=128 +CONFIG_K210_UART1_TXBUFSIZE=128 +CONFIG_SUPPORT_CONNECTION_FRAMEWORK=y +CONFIG_CONNECTION_FRAMEWORK_DEBUG=y +CONFIG_CONNECTION_ADAPTER_WIFI=y +CONFIG_ADAPTER_ESP8285_WIFI=y +CONFIG_ADAPTER_WIFI_ESP8285="esp8285_wifi" +CONFIG_ADAPTER_ESP8285_DRIVER="/dev/ttyS1" diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/include/board.h b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/include/board.h index 9843f5512..70d651c8d 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/include/board.h +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/include/board.h @@ -39,8 +39,6 @@ * Pre-processor Definitions ****************************************************************************/ - - /* Map pad 14 to gpiohs io 0 */ #define BOARD_LED_IO_FUNC K210_IO_FUNC_GPIOHS0 @@ -55,7 +53,7 @@ /* GPIO pins used by the GPIO Subsystem */ -#define BOARD_NGPIOOUT 3 /* Amount of register GPIO Output pins */ +#define BOARD_NGPIOOUT 2 /* Amount of register GPIO Output pins */ #define BOARD_NGPIOINT 0 /* Amount of GPIO Input */ /**************************************************************************** @@ -84,8 +82,8 @@ extern "C" #define GPIO_WIFI_TXD 6 #define GPIO_E220_RXD 21 #define GPIO_E220_TXD 20 -#define GPIO_CH376T_RXD 22 -#define GPIO_CH376T_TXD 23 +#define GPIO_CH376T_RXD 23 +#define GPIO_CH376T_TXD 22 /* w5500 IO */ #define BSP_ENET_SCLK 9 @@ -95,14 +93,6 @@ extern "C" #define BSP_ENET_NRST 13 #define BSP_ENET_NINT 14 -/* LCD IO */ -#define BSP_LCD_NRST 37 -#define BSP_LCD_SCLK 38 -#define BSP_LCD_MOSI 39 -#define BSP_LCD_MISO 40 -#define BSP_LCD_NCS 41 -#define BSP_LCD_BL_PIN 47 - /* I2C */ #define BSP_IIC_SDA 15 #define BSP_IIC_SCL 17 @@ -110,9 +100,7 @@ extern "C" /* other mode io */ #define GPIO_E220_M0 32 #define GPIO_E220_M1 33 -#define GPIO_E18_MODE 46 #define GPIO_WIFI_EN 8 -#define GPIO_CAN_CFG 43 /************************** end GPIO define **************************/ @@ -135,14 +123,6 @@ extern "C" #define FPIOA_ENET_MOSI 23 #define FPIOA_ENET_NCS 31 -/* LCD FPIOA */ -#define FPIOA_LCD_NRST 0 -#define FPIOA_LCD_BL 9 -#define FPIOA_LCD_SCLK 28 -#define FPIOA_LCD_MOSI 29 -#define FPIOA_LCD_MISO 23 -#define FPIOA_LCD_NCS 31 - /* I2C */ #define FPIOA_IIC_SDA 7 #define FPIOA_IIC_SCL 8 @@ -150,9 +130,7 @@ extern "C" /* other mode FPIOA */ #define FPIOA_E220_M0 1 #define FPIOA_E220_M1 2 -#define FPIOA_E18_MODE 3 -#define FPIOA_WIFI_EN 4 -#define FPIOA_CAN_NCFG 5 +#define FPIOA_WIFI_EN 3 /************************** end FPIOA define **************************/ diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/Makefile b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/Makefile index e7ecd5934..3064d40a3 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/Makefile +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/Makefile @@ -34,10 +34,6 @@ ifeq ($(CONFIG_ARCH_LEDS),y) CSRCS += k210_leds.c endif -ifeq ($(CONFIG_K210_LCD),y) -CSRCS += k210_lcd.c -endif - ifeq ($(CONFIG_DEV_GPIO),y) CSRCS += k210_gpio.c endif @@ -54,4 +50,8 @@ ifeq ($(CONFIG_BSP_USING_TOUCH),y) CSRCS += k210_touch.c endif +ifeq ($(CONFIG_K210_UART2),y) +CSRCS += test_loraE220.c +endif + include $(TOPDIR)/boards/Board.mk diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/ch376_demo.c b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/ch376_demo.c index ceb18d53f..7e8fde4ea 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/ch376_demo.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/ch376_demo.c @@ -30,14 +30,12 @@ void CH376Demo(void) uint8_t s; s = mInitCH376Host(); printf ("ch376 init stat=0x%02x\n",(uint16_t)s); - -#ifdef CONFIG_CH376_USB_FUNCTION + printf( "Wait Udisk/SD\n" ); while ( CH376DiskConnect( ) != USB_INT_SUCCESS ) { up_mdelay( 100 ); } -#endif for ( s = 0; s < 10; s ++ ) { diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_bringup.c b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_bringup.c index 71b40df31..818002204 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_bringup.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_bringup.c @@ -43,10 +43,6 @@ #include "k210_gpiohs.h" #include "k210_gpio_common.h" -#ifdef CONFIG_BSP_USING_CH438 -# include "k210_ch438.h" -#endif - #ifdef CONFIG_BSP_USING_TOUCH # include "k210_touch.h" #endif @@ -82,11 +78,6 @@ int k210_bringup(void) } #endif -#ifdef CONFIG_K210_LCD - k210_sysctl_init(); - board_lcd_initialize(); -#endif - #ifdef CONFIG_BSP_USING_TOUCH board_touch_initialize(); #endif diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_ch376.c b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_ch376.c index fe4e04276..e06f2a77c 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_ch376.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_ch376.c @@ -107,7 +107,7 @@ UINT8 mInitCH376Host(void) if ( res != 0x9A ) return( ERR_USB_UNKNOWN ); xWriteCH376Cmd(CMD11_SET_USB_MODE); /* SET USB MODE */ - xWriteCH376Data(CONFIG_CH376_WORK_MODE); + xWriteCH376Data(0x06); up_udelay(20); res = xReadCH376Data(); xEndCH376Cmd(); diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_gpio.c b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_gpio.c index 622815449..596639b25 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_gpio.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_gpio.c @@ -87,15 +87,13 @@ static const struct gpio_operations_s gpout_ops = static const uint32_t g_gpiooutputs[BOARD_NGPIOOUT] = { GPIO_E220_M0, - GPIO_E220_M1, - GPIO_E18_MODE + GPIO_E220_M1 }; static const uint32_t g_fpioa[BOARD_NGPIOOUT] = { FPIOA_E220_M0, - FPIOA_E220_M1, - FPIOA_E18_MODE + FPIOA_E220_M1 }; static struct k210gpio_dev_s g_gpout[BOARD_NGPIOOUT]; diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_lcd.c b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_lcd.c deleted file mode 100644 index e5a54f668..000000000 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_lcd.c +++ /dev/null @@ -1,353 +0,0 @@ -/* -* Copyright (c) 2022 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 k210_lcd.c - * @brief LCD relative driver - * @version 1.0 - * @author AIIT XUOS Lab - * @date 2022.7.21 - */ - - -/**************************************************************************** - * Included Files - ****************************************************************************/ -#include -#include "k210_fpioa.h" -#include "k210_gpiohs.h" -#include "nuttx/arch.h" -#include "nuttx/lcd/lt768.h" -#include "nuttx/lcd/lt768_lib.h" -#include "nuttx/lcd/if_port.h" -#include "nuttx/lcd/lt768_learn.h" -#include -#include -#include -#include -#ifdef CONFIG_LCD_LCDDRV_SPIIF -#include "nuttx/lcd/lcddrv_spiif.h" -#endif - -/**************************************************************************** - * Private Function Prototypes - ****************************************************************************/ -#define NCS_H() k210_gpiohs_set_value(FPIOA_LCD_NCS, GPIO_PV_HIGH); up_udelay(20) -#define NCS_L() k210_gpiohs_set_value(FPIOA_LCD_NCS, GPIO_PV_LOW); up_udelay(20) -#define CLK_H() k210_gpiohs_set_value(FPIOA_LCD_SCLK, GPIO_PV_HIGH); up_udelay(20) -#define CLK_L() k210_gpiohs_set_value(FPIOA_LCD_SCLK, GPIO_PV_LOW); up_udelay(20) -#define MOSI_H() k210_gpiohs_set_value(FPIOA_LCD_MOSI, GPIO_PV_HIGH) -#define MOSI_L() k210_gpiohs_set_value(FPIOA_LCD_MOSI, GPIO_PV_LOW) - -static int lcd_open(FAR struct file *filep); -static int lcd_close(FAR struct file *filep); -static ssize_t lcd_read(FAR struct file *filep, FAR char *buffer, size_t buflen); -static ssize_t lcd_write(FAR struct file *filep, FAR const char *buffer, size_t buflen); - -/**************************************************************************** - * Private Data - ****************************************************************************/ -/* LCD POSIX interface */ -static const struct file_operations g_lcdfops = -{ - lcd_open, - lcd_close, - lcd_read, - lcd_write, - NULL, - NULL, - NULL -}; -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -void lcd_pin_init(void) -{ - k210_fpioa_config(BSP_LCD_NRST, HS_GPIO(FPIOA_LCD_NRST) | K210_IOFLAG_GPIOHS); - k210_fpioa_config(BSP_LCD_SCLK, HS_GPIO(FPIOA_LCD_SCLK) | K210_IOFLAG_GPIOHS); - k210_fpioa_config(BSP_LCD_MOSI, HS_GPIO(FPIOA_LCD_MOSI) | K210_IOFLAG_GPIOHS); - k210_fpioa_config(BSP_LCD_MISO, HS_GPIO(FPIOA_LCD_MISO) | K210_IOFLAG_GPIOHS); - k210_fpioa_config(BSP_LCD_NCS, HS_GPIO(FPIOA_LCD_NCS) | K210_IOFLAG_GPIOHS); - - k210_gpiohs_set_direction(FPIOA_LCD_MISO, GPIO_DM_INPUT); - k210_gpiohs_set_direction(FPIOA_LCD_NRST, GPIO_DM_OUTPUT); - k210_gpiohs_set_direction(FPIOA_LCD_SCLK, GPIO_DM_OUTPUT); - k210_gpiohs_set_direction(FPIOA_LCD_MOSI, GPIO_DM_OUTPUT); - k210_gpiohs_set_direction(FPIOA_LCD_NCS, GPIO_DM_OUTPUT); - - k210_gpiohs_set_value(FPIOA_LCD_SCLK, GPIO_PV_HIGH); - k210_gpiohs_set_value(FPIOA_LCD_NCS, GPIO_PV_HIGH); - k210_gpiohs_set_value(FPIOA_LCD_NRST, GPIO_PV_HIGH); -} - -void lcd_backlight_init(bool enable) -{ - k210_fpioa_config(BSP_LCD_BL_PIN, HS_GPIO(FPIOA_LCD_BL) | K210_IOFLAG_GPIOHS); - k210_gpiohs_set_direction(FPIOA_LCD_BL, GPIO_DM_OUTPUT); - k210_gpiohs_set_value(FPIOA_LCD_BL, enable); -} - -#ifdef CONFIG_LCD_LCDDRV_SPIIF -int spiif_backlight(FAR struct lcddrv_lcd_s *lcd, int level) -{ - lcd_backlight_init(true); - return 1; -} -#endif - -uint8_t lcd_transfer_byte(uint8_t dat) -{ - uint8_t i, rx_data = 0; - - for(i = 0; i < 8; i++) - { - CLK_H(); - - // MOSI during falling edge - if((dat << i) & 0x80) - { - MOSI_H(); - } - else - { - MOSI_L(); - } - - CLK_L(); - - // MISO during rising edge - rx_data <<= 1; - if(k210_gpiohs_get_value(FPIOA_LCD_MISO)) - rx_data ++; - } - CLK_H(); - return rx_data; -} - -void LCD_CmdWrite(uint8_t cmd) -{ - NCS_L(); - lcd_transfer_byte(0x00); - lcd_transfer_byte(cmd); - NCS_H(); -} - -void LCD_DataWrite(uint8_t data) -{ - NCS_L(); - lcd_transfer_byte(0x80); - lcd_transfer_byte(data); - NCS_H(); -} - -void LCD_DataWrite_Pixel(uint8_t data) -{ - NCS_L(); - lcd_transfer_byte(0x80); - lcd_transfer_byte(data); - NCS_H(); - NCS_L(); - lcd_transfer_byte(0x80); - lcd_transfer_byte(data >> 8); - NCS_H(); -} - -uint8_t LCD_StatusRead(void) -{ - uint8_t temp = 0; - NCS_L(); - lcd_transfer_byte(0x40); - temp = lcd_transfer_byte(0xff); - NCS_H(); - return temp; -} - -uint8_t LCD_DataRead(void) -{ - uint8_t temp = 0; - NCS_L(); - lcd_transfer_byte(0xc0); - temp = lcd_transfer_byte(0xff); - NCS_H(); - return temp; -} - -/*****************************************************************************/ - -void lcd_drv_init(void) -{ - uint8_t PwmControl = 100; - - lcd_pin_init(); - lt768_init(); - Select_SFI_Dual_Mode0(); - - // PWM1 enable backlight - LT768_PWM1_Init(1, 0, 200, 100, PwmControl); - - // enable RGB output - Display_ON(); - - Main_Image_Start_Address(LCD_START_ADDR); - Main_Image_Width(LCD_XSIZE_TFT); - Main_Window_Start_XY(0, 0); - Canvas_Image_Start_address(LCD_START_ADDR); - Canvas_image_width(LCD_XSIZE_TFT); - Active_Window_XY(0, 0); - Active_Window_WH(LCD_XSIZE_TFT, LCD_YSIZE_TFT); - up_mdelay(10); - Canvas_Image_Start_address(LCD_START_ADDR); - - //fill blue background - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); -} - -/**************************************************************************** - * Name: k210_backlight - * - * Description: - * If CONFIG_K210_LCD_BACKLIGHT is defined, then the board-specific - * logic must provide this interface to turn the backlight on and off. - * - ****************************************************************************/ - -#ifdef CONFIG_K210_LCD_BACKLIGHT -void k210_backlight(bool blon) -{ - lcd_backlight_init(blon); -} -#endif - - -/**************************************************************************** - * Name: lcd_open - ****************************************************************************/ -static int lcd_open(FAR struct file *filep) -{ - return OK; -} - -/**************************************************************************** - * Name: lcd_close - ****************************************************************************/ -static int lcd_close(FAR struct file *filep) -{ - return OK; -} - -/**************************************************************************** - * Name: lcd_read - ****************************************************************************/ -static ssize_t lcd_read(FAR struct file *filep, FAR char *buffer, size_t buflen) -{ - return OK; -} - -/**************************************************************************** - * Name: ch438_write - ****************************************************************************/ - static ssize_t lcd_write(FAR struct file *filep, FAR const char *buffer, size_t buflen) -{ - ssize_t ret = buflen; - if (buffer == NULL) - { - return -ERROR; - } - LcdWriteParam * show = (LcdWriteParam *)buffer; - - /* output string */ - switch (show->type) - { - - /* output string */ - case SHOW_STRING: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - LT768_Select_Internal_Font_Init(show->string_info.height, 1, 1, 1, 1); - LT768_Print_Internal_Font_String(show->string_info.x_pos, show->string_info.y_pos, show->string_info.font_color,show->string_info.back_color,show->string_info.addr); - break; - - /* output dot */ - case SHOW_WDOT: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - LT768_DrawSquare_Fill(show->pixel_info.x_startpos,show->pixel_info.y_startpos, show->pixel_info.x_endpos, show->pixel_info.y_endpos, *(uint32_t *)(show->pixel_info.pixel_color)); - break; - - /* output rgb */ - case SHOW_RGB: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - Display_RGB(); - break; - - /* output pip */ - case SHOW_PIP: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - Display_PIP(); - break; - - /* output Internal Font */ - case SHOW_INTERNAL_FONT: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - Display_Internal_Font(); - break; - - /* output Outside Font */ - case SHOW_OUTSIDE_FONT: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - Display_Outside_Font(); - break; - - /* output Triangle */ - case SHOW_TRIANGLE: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - Display_Triangle(); - break; - - /* output picture */ - case SHOW_PICTURE: - LT768_DrawSquare_Fill(0, 0, LCD_XSIZE_TFT, LCD_YSIZE_TFT, WHITE); - Display_Picture(); - break; - - default: - ret = -ERROR; - break; - } - - return ret; -} -/**************************************************************************** - * Name: k210_lcd_initialize - * - * Description: - * Initialize the LCD. Setup backlight (initially off) - * - ****************************************************************************/ -int board_lcd_initialize(void) -{ - /* Configure the LCD backlight (and turn the backlight off) */ - lcd_backlight_init(true); - lcd_drv_init(); - up_mdelay(10); - Main_Image_Start_Address(LCD_START_ADDR); - Main_Image_Width(LCD_XSIZE_TFT); - Main_Window_Start_XY(0, 0); - Canvas_Image_Start_address(LCD_START_ADDR); - Canvas_image_width(LCD_XSIZE_TFT); - Active_Window_XY(0, 0); - Active_Window_WH(LCD_XSIZE_TFT, LCD_YSIZE_TFT); - up_mdelay(10); - Canvas_Image_Start_address(LCD_START_ADDR); - /* register device */ - register_driver("/dev/lcd_dev", &g_lcdfops, 0666, NULL); - return OK; -} diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/test_loraE220.c b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/test_loraE220.c new file mode 100644 index 000000000..cf64740ca --- /dev/null +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/test_loraE220.c @@ -0,0 +1,96 @@ +/* +* 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 test_loraE220.c + * @brief edu-riscv64 test_loraE220.c + * @version 1.0 + * @author AIIT XUOS Lab + * @date 2022.12.13 + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void TestLora(void) +{ + int fd, m0fd, m1fd; + int i; + char sendbuffer1[4] = {0xC0,0x04,0x01,0x09}; + char sendbuffer2[6] = {0xC0,0x00,0x03,0x12,0x34,0x61}; + char sendbuffer3[3] = {0xC1,0x04,0x01}; + char sendbuffer4[3] = {0xC1,0x00,0x03}; + char buffer[256]; + int readlen; + struct termios term; + + fd = open("/dev/ttyS2", O_RDWR); + tcgetattr(fd, &term); + cfsetspeed(&term, 9600); + tcsetattr(fd, TCSANOW, &term); + + m0fd = open("/dev/gpio0", O_RDWR); + m1fd = open("/dev/gpio1", O_RDWR); + ioctl(m0fd, GPIOC_WRITE, (unsigned long)1); + ioctl(m1fd, GPIOC_WRITE, (unsigned long)1); + sleep(1); + + write(fd, sendbuffer1,4); + sleep(1); + readlen = read(fd, buffer, 256); + printf("readlen1 = %d\n", readlen); + for(i = 0;i< readlen; ++i) + { + printf("0x%x\n", buffer[i]); + } + + write(fd, sendbuffer2,6); + sleep(1); + readlen = read(fd, buffer, 256); + printf("readlen1 = %d\n", readlen); + for(i = 0;i< readlen; ++i) + { + printf("0x%x\n", buffer[i]); + } + + write(fd, sendbuffer3,3); + sleep(1); + readlen = read(fd, buffer, 256); + printf("readlen1 = %d\n", readlen); + for(i = 0;i< readlen; ++i) + { + printf("0x%x\n", buffer[i]); + } + + write(fd, sendbuffer4,3); + sleep(1); + readlen = read(fd, buffer, 256); + printf("readlen1 = %d\n", readlen); + for(i = 0;i< readlen; ++i) + { + printf("0x%x\n", buffer[i]); + } + + close(fd); +} diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h index 0e738d443..a77c194b2 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh.h @@ -1555,6 +1555,10 @@ int nsh_foreach_var(FAR struct nsh_vtbl_s *vtbl, nsh_foreach_var_t cb, int cmd_AdapterLoraTest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv); #endif +#if defined(CONFIG_ARCH_BOARD_EDU_RISCV64) && defined(CONFIG_K210_UART2) + int cmd_TestLora(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv); +#endif + #if defined(CONFIG_ADAPTER_4G_EC200T) && !defined(CONFIG_NSH_DISABLE_ADAPTER_4GTEST) int cmd_Adapter4GTest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv); #endif diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c index 538de55d7..53569eb0e 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_Applicationscmd.c @@ -425,6 +425,16 @@ int cmd_AdapterLoraTest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) } #endif +#if defined(CONFIG_ARCH_BOARD_EDU_RISCV64) && defined(CONFIG_K210_UART2) +extern void TestLora(void); +int cmd_TestLora(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) +{ + nsh_output(vtbl, "Hello, world!\n"); + TestLora(); + return OK; +} +#endif + #if defined(CONFIG_ADAPTER_4G_EC200T) && !defined(CONFIG_NSH_DISABLE_ADAPTER_4GTEST) extern int Adapter4GTest(void); int cmd_Adapter4GTest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c index 9366dce5b..1d6145ae7 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/apps/nshlib/nsh_command.c @@ -700,6 +700,10 @@ static const struct cmdmap_s g_cmdmap[] = { "AdapterLoraTest", cmd_AdapterLoraTest, 1, 1, "[Lora test.]" }, #endif +#if defined(CONFIG_ARCH_BOARD_EDU_RISCV64) && defined(CONFIG_K210_UART2) + { "TestLora", cmd_TestLora, 1, 1, "[e220 Lora test.]" }, +#endif + #if defined(CONFIG_ADAPTER_4G_EC200T) && !defined(CONFIG_NSH_DISABLE_ADAPTER_4GTEST) { "Adapter4GTest", cmd_Adapter4GTest, 1, 1, "[4G ec200t test.]" }, #endif