diff --git a/APP_Framework/Framework/connection/lora/Kconfig b/APP_Framework/Framework/connection/lora/Kconfig index 03e097ae7..3f282781b 100644 --- a/APP_Framework/Framework/connection/lora/Kconfig +++ b/APP_Framework/Framework/connection/lora/Kconfig @@ -7,7 +7,7 @@ config ADAPTER_E220 default n config ADAPTER_E22 - bool "Using lora adapter device E22-400T33D" + bool "Using lora adapter device E22-400T30S" default n choice diff --git a/APP_Framework/Framework/connection/lora/e22/Kconfig b/APP_Framework/Framework/connection/lora/e22/Kconfig index 093d3ecd0..ec61a8558 100644 --- a/APP_Framework/Framework/connection/lora/e22/Kconfig +++ b/APP_Framework/Framework/connection/lora/e22/Kconfig @@ -1,28 +1,34 @@ config ADAPTER_LORA_E22 - string "E22-400T33D adapter name" + string "E22-400T30S adapter name" default "e22" -if ADD_XIZI_FETURES - -endif - if ADD_NUTTX_FETURES - config ADAPTER_E22_M0_PATH - string "E22 M0 pin device" - default "/dev/gpio0" + config ADAPTER_E22_M0_PATH + string "E22 M0 pin device" + default "/dev/gpio0" - config ADAPTER_E22_M1_PATH - string "E22 M1 pin device" - default "/dev/gpio1" - + config ADAPTER_E22_M1_PATH + string "E22 M1 pin device" + default "/dev/gpio1" + + config ADAPTER_E22_DRIVER_EXTUART + bool "Using extra uart to support lora" + default n - config ADAPTER_E22_DRIVER - string "E22 device uart driver path" - default "/dev/ttyS3" - -endif - -if ADD_RTTHREAD_FETURES + config ADAPTER_E22_DRIVER + string "E22 device uart driver path" + default "/dev/ttyS2" + depends on !ADAPTER_E22_DRIVER_EXTUART + + if ADAPTER_E22_DRIVER_EXTUART + config ADAPTER_E22_DRIVER + string "E22 device extra uart driver path" + default "/dev/extuart_dev3" + + config ADAPTER_E22_DRIVER_EXT_PORT + int "if E22 device using extuart, choose port" + default "3" + endif endif diff --git a/APP_Framework/Framework/connection/lora/e22/Makefile b/APP_Framework/Framework/connection/lora/e22/Makefile index 18f300097..c0da4046f 100644 --- a/APP_Framework/Framework/connection/lora/e22/Makefile +++ b/APP_Framework/Framework/connection/lora/e22/Makefile @@ -4,4 +4,4 @@ ifeq ($(CONFIG_ADD_NUTTX_FETURES),y) CSRCS += e22.c include $(APPDIR)/Application.mk -endif \ No newline at end of file +endif diff --git a/APP_Framework/Framework/connection/lora/e22/e22.c b/APP_Framework/Framework/connection/lora/e22/e22.c index bdb401fb6..677c02083 100644 --- a/APP_Framework/Framework/connection/lora/e22/e22.c +++ b/APP_Framework/Framework/connection/lora/e22/e22.c @@ -49,6 +49,7 @@ enum E22LoraMode static void E22LoraModeConfig(enum E22LoraMode mode) { int m0_fd, m1_fd; + char value0, value1; //delay 1s , wait AUX ready PrivTaskDelay(1000); @@ -68,23 +69,31 @@ static void E22LoraModeConfig(enum E22LoraMode mode) switch (mode) { case DATA_TRANSFER_MODE: - PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_LOW); - PrivIoctl(m0_fd, GPIOC_WRITE, (unsigned long)GPIO_LOW); + value1 = '0'; + value0 = '0'; + PrivWrite(m1_fd, &value1, 1); + PrivWrite(m0_fd, &value0, 1); break; case WOR_SEND_MODE: - PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_LOW); - PrivIoctl(m0_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH); + value1 = '0'; + value0 = '1'; + PrivWrite(m1_fd, &value1, 1); + PrivWrite(m0_fd, &value0, 1); break; case CONFIGURE_MODE: - PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH); - PrivIoctl(m0_fd, GPIOC_WRITE,(unsigned long)GPIO_LOW); + value1 = '1'; + value0 = '0'; + PrivWrite(m1_fd, &value1, 1); + PrivWrite(m0_fd, &value0, 1); break; case SLEEP_MODE: - PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH); - PrivIoctl(m0_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH); + value1 = '1'; + value0 = '1'; + PrivWrite(m1_fd, &value1, 1); + PrivWrite(m0_fd, &value0, 1); break; default: @@ -246,8 +255,6 @@ static int E22GetRegisterParam(uint8 *buf) */ static int E22Open(struct Adapter *adapter) { - int ret = 0; - struct termios cfg; /*step1: open e22 uart port*/ adapter->fd = PrivOpen(ADAPTER_E22_DRIVER, O_RDWR); if (adapter->fd < 0) { @@ -255,22 +262,53 @@ static int E22Open(struct Adapter *adapter) return -1; } - tcgetattr(adapter->fd, &cfg); - cfsetspeed(&cfg, BAUD_RATE_9600); - tcsetattr(adapter->fd, TCSANOW, &cfg); + struct SerialDataCfg cfg; + memset(&cfg, 0 ,sizeof(struct SerialDataCfg)); + + cfg.serial_baud_rate = BAUD_RATE_9600; + cfg.serial_data_bits = DATA_BITS_8; + cfg.serial_stop_bits = STOP_BITS_1; + cfg.serial_parity_mode = PARITY_NONE; + cfg.serial_bit_order = BIT_ORDER_LSB; + cfg.serial_invert_mode = NRZ_NORMAL; + cfg.serial_buffer_size = SERIAL_RB_BUFSZ; + cfg.is_ext_uart = 0; + + /*aiit board use ch438, so it needs more serial configuration*/ +#ifdef ADAPTER_E22_DRIVER_EXTUART + cfg.is_ext_uart = 1; + cfg.ext_uart_no = ADAPTER_E22_DRIVER_EXT_PORT; + cfg.port_configure = PORT_CFG_INIT; +#endif + +#ifdef AS_LORA_GATEWAY_ROLE + //serial receive timeout 10s + cfg.serial_timeout = 10000; +#endif + +#ifdef AS_LORA_CLIENT_ROLE + //serial receive wait forever + cfg.serial_timeout = -1; +#endif + + struct PrivIoctlCfg ioctl_cfg; + ioctl_cfg.ioctl_driver_type = SERIAL_TYPE; + ioctl_cfg.args = &cfg; + + PrivIoctl(adapter->fd, OPE_INT, &ioctl_cfg); E22SetRegisterParam(adapter, E22_ADDRESS, E22_CHANNEL, E22_UART_BAUD_RATE); + cfg.serial_baud_rate = E22_UART_BAUD_RATE; + ioctl_cfg.args = &cfg; - cfsetspeed(&cfg, E22_UART_BAUD_RATE); - tcsetattr(adapter->fd, TCSANOW, &cfg); + PrivIoctl(adapter->fd, OPE_INT, &ioctl_cfg); ADAPTER_DEBUG("E22Open done\n"); return 0; } - /** * @description: Close E22 uart function * @param adapter - Lora device pointer @@ -351,7 +389,7 @@ static int E22Send(struct Adapter *adapter, const void *buf, size_t len) */ static int E22Recv(struct Adapter *adapter, void *buf, size_t len) { - int recv_len, recv_len_continue; + int recv_len = 0, recv_len_continue = 0; uint8 *recv_buf = PrivMalloc(len); diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/Kconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/Kconfig index f66e3f567..a8b7cb0d6 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/Kconfig +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/Kconfig @@ -35,8 +35,4 @@ menuconfig BSP_USING_ENET bool "Using ENET device" default n -menuconfig BSP_USING_TOUCH - bool "Using touch device" - default n - endif # ARCH_BOARD_EDU_RISCV64 diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/lorae22nsh/defconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/lorae22nsh/defconfig new file mode 100644 index 000000000..8beb3aa76 --- /dev/null +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/configs/lorae22nsh/defconfig @@ -0,0 +1,80 @@ +# +# 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_UART2=y +CONFIG_K210_UART2_BASE=0x50220000 +CONFIG_K210_UART2_CLOCK=195000000 +CONFIG_K210_UART2_IRQ=39 +CONFIG_K210_UART2_BAUD=115200 +CONFIG_K210_UART2_PARITY=0 +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 +CONFIG_ADAPTER_E22=y +CONFIG_ADAPTER_LORA_E22="e22" +CONFIG_ADAPTER_E22_DRIVER="/dev/ttyS2" +CONFIG_ADAPTER_E22_M0_PATH="/dev/gpio0" +CONFIG_ADAPTER_E22_M1_PATH="/dev/gpio1" 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..b49fda46e 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,13 +93,11 @@ 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 +/* sdcard IO */ +#define SOFT_SPI_MISO 25 +#define SOFT_SPI_SCK 26 +#define SOFT_SPI_MOSI 27 +#define SOFT_SPI_CS0_PIN 28 /* I2C */ #define BSP_IIC_SDA 15 @@ -110,9 +106,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,24 +129,16 @@ 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 +/* sdcard FPIOA */ +#define FPIOA_SOFT_SPI_MISO 4 +#define FPIOA_SOFT_SPI_SCK 5 +#define FPIOA_SOFT_SPI_MOSI 6 +#define FPIOA_SOFT_SPI_CS0_PIN 7 /* 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..cd0e80e45 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 @@ -50,8 +46,8 @@ ifeq ($(CONFIG_BSP_USING_ENET),y) CSRCS += k210_w5500.c endif -ifeq ($(CONFIG_BSP_USING_TOUCH),y) -CSRCS += k210_touch.c +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..db7a51c47 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,15 +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 - #ifdef CONFIG_K210_UART1 sysctl_clock_enable(SYSCTL_CLOCK_UART1); sysctl_reset(SYSCTL_RESET_UART1); 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/k210_touch.c b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_touch.c deleted file mode 100644 index 288de316c..000000000 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_touch.c +++ /dev/null @@ -1,475 +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_touch.c - * @brief gt911 touch driver - * @version 1.0 - * @author AIIT XUOS Lab - * @date 2022.10.25 - */ - - -/**************************************************************************** - * Included Files - ****************************************************************************/ -#include "k210_touch.h" - -/**************************************************************************** - * Private Function Prototypes - ****************************************************************************/ -static void IIC_Init(void); -static void SDA_IN(void); -static void SDA_OUT(void); -static uint8_t READ_SDA(void); -static void IIC_SCL(uint8_t val); -static void IIC_SDA(uint8_t val); -static void IIC_Start(void); -static void IIC_Stop(void); -static uint8_t IIC_Wait_Ack(void); -static void IIC_Ack(void); -static void IIC_NAck(void); -static void IIC_Send_Byte(uint8_t txd); -static uint8_t IIC_Read_Byte(uint8_t ack); -static bool GT911_Scan(POINT* point); - -static int touch_open(FAR struct file *filep); -static int touch_close(FAR struct file *filep); -static ssize_t touch_read(FAR struct file *filep, FAR char *buffer, size_t buflen); -static ssize_t touch_write(FAR struct file *filep, FAR const char *buffer, size_t buflen); - -/**************************************************************************** - * Private Data - ****************************************************************************/ -/* touch POSIX interface */ -static const struct file_operations g_touchfops = -{ - touch_open, - touch_close, - touch_read, - touch_write, - NULL, - NULL, - NULL -}; - -/**************************************************************************** - * Name: IIC_Init - * Description: i2c pin mode configure - * input: None - * output: None - * return:none - ****************************************************************************/ -static void IIC_Init(void) -{ - /* config simluate IIC bus */ - k210_fpioa_config(BSP_IIC_SDA, GT911_FUNC_GPIO(FPIOA_IIC_SDA)); - k210_fpioa_config(BSP_IIC_SCL, GT911_FUNC_GPIO(FPIOA_IIC_SCL)); - - k210_gpiohs_set_direction(FPIOA_IIC_SDA, GPIO_DM_OUTPUT); - k210_gpiohs_set_direction(FPIOA_IIC_SCL, GPIO_DM_OUTPUT); -} - -/**************************************************************************** - * Name: SDA_IN - * Description: set sda input mode - * input: None - * output: None - * return:none - ****************************************************************************/ -static void SDA_IN(void) -{ - k210_gpiohs_set_direction(FPIOA_IIC_SDA, GPIO_DM_INPUT_PULL_UP); -} - -/**************************************************************************** - * Name: SDA_OUT - * Description: set sda output mode - * input: None - * output: None - * return:none - ****************************************************************************/ -static void SDA_OUT(void) -{ - k210_gpiohs_set_direction(FPIOA_IIC_SDA, GPIO_DM_OUTPUT); -} - -/**************************************************************************** - * Name: READ_SDA - * Description: read sda value - * input: None - * output: None - * return: sda pin value - ****************************************************************************/ -static uint8_t READ_SDA(void) -{ - return k210_gpiohs_get_value(FPIOA_IIC_SDA); -} - -/**************************************************************************** - * Name: IIC_SCL - * Description: set the value of scl - * input: val:the value to be set - * output: None - * return: None - ****************************************************************************/ -static void IIC_SCL(uint8_t val) -{ - if (val) - k210_gpiohs_set_value(FPIOA_IIC_SCL,GPIO_PV_HIGH); - else - { - k210_gpiohs_set_value(FPIOA_IIC_SCL,GPIO_PV_LOW); - } -} - -/**************************************************************************** - * Name: IIC_SDA - * Description: set the value of sda - * input: val:the value to be set - * output: None - * return: None - ****************************************************************************/ -static void IIC_SDA(uint8_t val) -{ - if (val) - k210_gpiohs_set_value(FPIOA_IIC_SDA,GPIO_PV_HIGH); - else - { - k210_gpiohs_set_value(FPIOA_IIC_SDA,GPIO_PV_LOW); - } -} - -/**************************************************************************** - * Name: IIC_Start - * Description: Generate i2c start signal - * input: None - * output: None - * return: None - ****************************************************************************/ -static void IIC_Start(void) -{ - SDA_OUT(); - IIC_SDA(1); - IIC_SCL(1); - up_mdelay(30); - IIC_SDA(0); - up_mdelay(2); - IIC_SCL(0); -} - -/**************************************************************************** - * Name: IIC_Start - * Description: Generate i2c stop signal - * input: None - * output: None - * return: None - ****************************************************************************/ -static void IIC_Stop(void) -{ - SDA_OUT(); - IIC_SCL(1); - up_mdelay(30); - IIC_SDA(0); - up_mdelay(2); - IIC_SDA(1); -} - -/******************************************************************************************* - * Name: IIC_Wait_Ack - * Description: Wait for the reply signal to arrive - * input: None - * output: None - * return: Return value: 1:failed to receive response,0:the received response is successful. -********************************************************************************************/ -static uint8_t IIC_Wait_Ack(void) -{ - uint16_t ucErrTime=0; - SDA_IN(); - IIC_SDA(1); - IIC_SCL(1); - up_mdelay(2); - while(READ_SDA()) - { - ucErrTime++; - if(ucErrTime>2500) - { - IIC_Stop(); - return 1; - } - up_mdelay(2); - } - IIC_SCL(0); - return 0; -} - -/**************************************************************************** - * Name: IIC_Ack - * Description: generate ack response - * input: None - * output: None - * return: None - ****************************************************************************/ -static void IIC_Ack(void) -{ - IIC_SCL(0); - SDA_OUT(); - up_mdelay(2); - IIC_SDA(0); - up_mdelay(2); - IIC_SCL(1); - up_mdelay(2); - IIC_SCL(0); -} - -/**************************************************************************** - * Name: IIC_NAck - * Description: No ACK response is generated - * input: None - * output: None - * return: None - ****************************************************************************/ -static void IIC_NAck(void) -{ - IIC_SCL(0); - SDA_OUT(); - up_mdelay(2); - IIC_SDA(1); - up_mdelay(2); - IIC_SCL(1); - up_mdelay(2); - IIC_SCL(0); -} - -/**************************************************************************** - * Name: IIC_Send_Byte - * Description: IIC sends a byte,Return whether the slave has a response - * input: None - * output: None - * return: 1:there is a response,0:no response - ****************************************************************************/ -static void IIC_Send_Byte(uint8_t txd) -{ - uint8_t t; - SDA_OUT(); - IIC_SCL(0); - up_mdelay(2); - for(t=0;t<8;t++) - { - IIC_SDA((txd&0x80)>>7); - txd<<=1; - IIC_SCL(1); - up_mdelay(2); - IIC_SCL(0); - up_mdelay(2); - } -} - -/**************************************************************************** - * Name: IIC_Read_Byte - * Description: Read 1 byte, when ack=1, send ACK, when ack=0, send nACK - * input: None - * output: None - * return: Returns one byte of data read - ****************************************************************************/ -static uint8_t IIC_Read_Byte(uint8_t ack) -{ - uint8_t i,receive=0; - SDA_IN(); - up_mdelay(30); - for(i=0;i<8;i++ ) - { - IIC_SCL(0); - up_mdelay(2); - IIC_SCL(1); - up_udelay(1); - receive<<=1; - if(READ_SDA())receive++; - up_udelay(1); - } - if (!ack) - IIC_NAck(); - else - IIC_Ack(); - return receive; -} - -/*********************************************************************************** - * Name: GT911_WR_Reg - * Description: Write data to GT911 once - * input: reg: start register address,buf: data cache area,len: write data length - * output: None - * return: Return value: 0, success; 1, failure. - ***********************************************************************************/ -static uint8_t GT911_WR_Reg(uint16_t reg,uint8_t *buf,uint8_t len) -{ - uint8_t i; - uint8_t ret=0; - IIC_Start(); - IIC_Send_Byte(CT_CMD_WR); - IIC_Wait_Ack(); - IIC_Send_Byte(reg>>8); - IIC_Wait_Ack(); - IIC_Send_Byte(reg&0XFF); - IIC_Wait_Ack(); - for(i=0;i>8); - IIC_Wait_Ack(); - IIC_Send_Byte(reg&0XFF); - IIC_Wait_Ack(); - IIC_Stop(); - - IIC_Start(); - IIC_Send_Byte(CT_CMD_RD); - IIC_Wait_Ack(); - for(i=0;i 5) || (Dev_Now.TouchCount == 0) ) - { - GT911_WR_Reg(GT911_READ_XY_REG, (uint8_t *)&Clearbuf, 1); - return false; - } - GT911_RD_Reg(GT911_READ_XY_REG + 1, &buf[1], Dev_Now.TouchCount*8); - GT911_WR_Reg(GT911_READ_XY_REG, (uint8_t *)&Clearbuf, 1); - - for (uint8_t i = 0;i < Dev_Now.TouchCount; i++) - { - Dev_Now.Touchkeytrackid[i] = buf[1+(8*i)]; - Dev_Now.X[i] = ((uint16_t)buf[3+(8*i)] << 8) + buf[2+(8*i)]; - Dev_Now.Y[i] = ((uint16_t)buf[5+(8*i)] << 8) + buf[4+(8*i)]; - Dev_Now.S[i] = ((uint16_t)buf[7+(8*i)] << 8) + buf[6+(8*i)]; - - - if(Dev_Now.Y[i] < 20) Dev_Now.Y[i] = 20; - if(Dev_Now.Y[i] > GT911_MAX_HEIGHT -20) Dev_Now.Y[i]=GT911_MAX_HEIGHT - 20; - if(Dev_Now.X[i] < 20) Dev_Now.X[i] = 20; - if(Dev_Now.X[i] > GT911_MAX_WIDTH-20) Dev_Now.X[i] = GT911_MAX_WIDTH - 20; - point->x = Dev_Now.X[i]; - point->y = Dev_Now.Y[i]; - } - } - return true; -} - -/**************************************************************************** - * Name: touch_open - ****************************************************************************/ -static int touch_open(FAR struct file *filep) -{ - return OK; -} - -/**************************************************************************** - * Name: touch_close - ****************************************************************************/ -static int touch_close(FAR struct file *filep) -{ - return OK; -} - -/**************************************************************************** - * Name: lcd_read - ****************************************************************************/ -static ssize_t touch_read(FAR struct file *filep, FAR char *buffer, size_t buflen) -{ - int ret = -ERROR; - POINT touch_point = {0, 0, 0}; - - if (buffer == NULL) - { - return -ERROR; - } - - POINT* data = (POINT*)buffer; - while(1) - { - if(GT911_Scan(&touch_point)) - { - data->x = touch_point.x; - data->y = touch_point.y; - ret = buflen; - break; - } - } - return ret; -} - -/**************************************************************************** - * Name: lcd_read - ****************************************************************************/ -static ssize_t touch_write(FAR struct file *filep, FAR const char *buffer, size_t buflen) -{ - return OK; -} - -/*********************************************************************************** - * Name: board_touch_initialize - * Description: touch initialize - * input: None - * output: None - * return: None - ***********************************************************************************/ -void board_touch_initialize(void) -{ - IIC_Init(); - /* register device */ - register_driver("/dev/touch_dev", &g_touchfops, 0666, NULL); -} \ No newline at end of file diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_touch.h b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_touch.h deleted file mode 100644 index 0956f2fce..000000000 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/edu-riscv64/src/k210_touch.h +++ /dev/null @@ -1,75 +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_touch.h - * @brief gt911 touch driver - * @version 1.0 - * @author AIIT XUOS Lab - * @date 2022.10.25 - */ - -#ifndef _K210_TOUCH_H_ -#define _K210_TOUCH_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "k210_config.h" -#include "k210_fpioa.h" -#include "k210_gpiohs.h" -#include "nuttx/arch.h" -#include "k210_gpio_common.h" - -#define GT911_FUNC_GPIO(n) ((K210_IO_FUNC_GPIOHS0 + n) | K210_IOFLAG_GPIOHS) - -#define GT911_MAX_WIDTH (uint16_t)800 -#define GT911_MAX_HEIGHT (uint16_t)480 -#define CT_CMD_WR (uint8_t)0XBA -#define CT_CMD_RD (uint8_t)0XBB -#define CT_MAX_TOUCH (uint8_t)5 -#define GT911_COMMAND_REG (uint16_t)0x8040 -#define GT911_CONFIG_REG (uint16_t)0x8047 -#define GT911_PRODUCT_ID_REG (uint16_t)0x8140 -#define GT911_FIRMWARE_VERSION_REG (uint16_t)0x8144 -#define GT911_READ_XY_REG (uint16_t)0x814E - -typedef struct -{ - uint8_t TouchCount; - uint8_t Touchkeytrackid[CT_MAX_TOUCH]; - uint16_t X[CT_MAX_TOUCH]; - uint16_t Y[CT_MAX_TOUCH]; - uint16_t S[CT_MAX_TOUCH]; -}GT911_Dev; - -typedef struct -{ - uint16_t x; - uint16_t y; - uint16_t press; -}POINT; - -void board_touch_initialize(void); - -#endif 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 diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/readme.md b/Ubiquitous/Nuttx_Fusion_XiUOS/readme.md index d53a2587c..c45366098 100644 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/readme.md +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/readme.md @@ -232,7 +232,7 @@ RISC-V架构系列的开发板有 ### 依赖包安装: ``` -$ sudo apt install build-essential pkg-config git +$ sudo apt install build-essential pkg-config git dos2unix $ sudo apt install gcc make libncurses5-dev openssl libssl-dev bison flex libelf-dev autoconf libtool gperf libc6-dev ```