forked from xuos/xiuos
add e22、ch376 usb fuction、lora e220 and wifi esp8285 for edu-riscv64 on nuttx
This commit is contained in:
parent
a3094c1dd6
commit
d57552e223
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -4,4 +4,4 @@ ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
|
|||
CSRCS += e22.c
|
||||
include $(APPDIR)/Application.mk
|
||||
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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"
|
|
@ -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 **************************/
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ++ )
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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 <nuttx/config.h>
|
||||
#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 <nuttx/board.h>
|
||||
#include <arch/board/board.h>
|
||||
#include <nuttx/fs/fs.h>
|
||||
#include <nuttx/fs/ioctl.h>
|
||||
#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;
|
||||
}
|
|
@ -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<len;i++)
|
||||
{
|
||||
IIC_Send_Byte(buf[i]);
|
||||
ret=IIC_Wait_Ack();
|
||||
if(ret)break;
|
||||
}
|
||||
IIC_Stop();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***********************************************************************************
|
||||
* Name: GT911_RD_Reg
|
||||
* Description: Read data from GT911 once
|
||||
* input: reg: start register address,buf: data cache area,len: read data length
|
||||
* output: None
|
||||
* return: None
|
||||
***********************************************************************************/
|
||||
static void GT911_RD_Reg(uint16_t reg,uint8_t *buf,uint8_t len)
|
||||
{
|
||||
uint8_t i;
|
||||
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();
|
||||
IIC_Stop();
|
||||
|
||||
IIC_Start();
|
||||
IIC_Send_Byte(CT_CMD_RD);
|
||||
IIC_Wait_Ack();
|
||||
for(i=0;i<len;i++)
|
||||
{
|
||||
buf[i]=IIC_Read_Byte(i==(len-1)?0:1);
|
||||
}
|
||||
IIC_Stop();
|
||||
}
|
||||
|
||||
/***********************************************************************************
|
||||
* Name: GT911_Scan
|
||||
* Description: point:structure to store coordinates
|
||||
* input: None
|
||||
* output: None
|
||||
* return: Returns true for touch, false for no touch
|
||||
***********************************************************************************/
|
||||
static bool GT911_Scan(POINT* point)
|
||||
{
|
||||
GT911_Dev Dev_Now;
|
||||
uint8_t Clearbuf = 0;
|
||||
uint8_t buf[41];
|
||||
|
||||
GT911_RD_Reg(GT911_READ_XY_REG, buf, 1);
|
||||
if ((buf[0]&0x80) == 0x00)
|
||||
{
|
||||
GT911_WR_Reg(GT911_READ_XY_REG, (uint8_t *)&Clearbuf, 1);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Dev_Now.TouchCount = buf[0] & 0x0f;
|
||||
if((Dev_Now.TouchCount > 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);
|
||||
}
|
|
@ -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 <nuttx/config.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/board.h>
|
||||
#include <arch/board/board.h>
|
||||
#include <nuttx/time.h>
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <debug.h>
|
||||
#include <assert.h>
|
||||
#include <nuttx/time.h>
|
||||
#include <nuttx/fs/fs.h>
|
||||
#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
|
|
@ -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 <stdio.h>
|
||||
#include <nuttx/fs/fs.h>
|
||||
#include <nuttx/fs/ioctl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <nuttx/time.h>
|
||||
#include <nuttx/ioexpander/gpio.h>
|
||||
|
||||
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);
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
||||
|
|
Loading…
Reference in New Issue