diff --git a/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/can/test/can_test.c b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/can/test/can_test.c index bfb45facb..bc06a10a8 100644 --- a/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/can/test/can_test.c +++ b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/can/test/can_test.c @@ -1,17 +1,31 @@ +/* + * 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 can_test.c + * @brief test ch32v307 can + * @version 1.0 + * @author AIIT XUOS Lab + * @date 2024-03-14 + */ #include "shell.h" #include "ch32v30x.h" - #include "connect_can.h" - -#include #include #include #include static int init_can() { - KPrintf("init can\r\n"); CAN_FilterInitTypeDef can1_filter; diff --git a/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/can/test/readme.md b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/can/test/readme.md new file mode 100644 index 000000000..6f7d829d3 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/can/test/readme.md @@ -0,0 +1,55 @@ + +0.该测试在Ubiquitous中测试通过(将驱动中静态的收发初始化操作在测试文件中实现),在APP_Framework的测试中BusFind,BusFindDriver,BusFindDevice可找到相应的设备,但无法通过其进行读写等操作 + +``` +// APP_Framework/Applications/main.c + +#include +#include +#include +#include +#define CAN_BUS "can1" + +#define CAN_DRIVER "can1_drv" + +#define CAN_DEVICE "can1_dev1" + +void TestCAN(void) +{ + KPrintf("Test can start\n"); + struct Bus *bus; + struct HardwareDev *dev; + struct Driver *drv; + char test_str[] = "Hello AIIT!\r\n"; + /* find the serial bus pointer */ + bus = BusFind(CAN_BUS); + if (NONE == bus) + { + KPrintf("BusFind %s failed\n", CAN_BUS); + return; + } + /* find the serial driver pointer */ + drv = BusFindDriver(bus, CAN_DRIVER); + if (NONE == drv) + { + KPrintf("BusFindDriver %s failed\n", CAN_DRIVER); + return; + } + /* find the serial device pointer */ + dev = BusFindDevice(bus, CAN_DEVICE); + if (NONE == dev) + { + KPrintf("BusFindDevice %s failed\n", CAN_DEVICE); + return; + } +} + +PRIV_SHELL_CMD_FUNCTION(TestCAN, a can test sample, PRIV_SHELL_CMD_MAIN_ATTR); +``` + +1.make BOARD=ch32v307vct6 menuconfig中配置can相关参数 ch32v307vct6 feature ---> Using CAN device ---> + +2.在can_test.c中can_initstruction.CAN_Mode表示can的收发模式,修改该参数可实现不同的收发方式,有CAN_Mode_Normal,CAN_Mode_LoopBack,CAN_Mode_Silent,CAN_Mode_Silent_LoopBack四种模式,此处用CAN_Mode_Silent_LoopBack该模式,实现自收自发,如果需要通过主机收发可修改为CAN_Mode_Normal + +3.编译后将其烧录至开发板上,执行test_can命令,运行can测试。 + diff --git a/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test/readme.md b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test/readme.md new file mode 100644 index 000000000..641ffc85f --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test/readme.md @@ -0,0 +1,84 @@ +0.该测试在Ubiquitous中测试通过(将驱动中静态的收发操作在测试文件中实现),在APP_Framework的测试中BusFind,BusFindDriver,BusFindDevice可找到相应的设备,但无法通过其进行读写等操作 + +``` +// APP_Framework/Applications/main.c + +#include +#include +#include +#include +#define RS485_UART_BUS "uart5" +#define RS485_UART_DRV "uart5_drv" +#define RS485_UART_DEV "uart5_dev5" + +void Test485(void) +{ + /* + 485的驱动,使用UART5,在connect_uart.c中添加UART5的初始化,添加UART5的Kconfig,borad.c中使用InstallConsole用uart5串口正常输出控制台信息;在app_famework中加入app_test的485测试用例后出现 + + HardFault_Handler. + mepc :000f448 + mcause:0000007 + mtval :200100d4 + + 报错,控制台停止运行,最后将Test485用例摘出放置main.c中,发现将PrivOpen编译进bin就会报错(没有实际执行) + + 试了试busfind,bus,bus_drv,bus_dev都能找到,但是BusDevWriteData(dev, &write_param)编译进去后无法运行(OS无法起来/没有实际执行);Busdevclose导致程序崩溃 + + Test 485 start + [ERR][x_free] Freeing a unallocated address. + HardFault_Handler. + mepc :0000012 + mcause:0000002 + mtval :0000000 + + 在Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test测试中 + 可以通过485串口正常输出接收 + + */ + + KPrintf("Test 485 start\n"); + struct Bus *bus; + struct HardwareDev *dev; + struct Driver *drv; + char test_str[] = "Hello AIIT!\r\n"; + /* find the serial bus pointer */ + bus = BusFind(RS485_UART_BUS); + if (NONE == bus) + { + KPrintf("BusFind %s failed\n", RS485_UART_BUS); + return; + } + /* find the serial driver pointer */ + drv = BusFindDriver(bus, RS485_UART_DRV); + if (NONE == drv) + { + KPrintf("BusFindDriver %s failed\n", RS485_UART_DRV); + return; + } + /* find the serial device pointer */ + dev = BusFindDevice(bus, RS485_UART_DEV); + if (NONE == dev) + { + KPrintf("BusFindDevice %s failed\n", RS485_UART_DEV); + return; + } + struct BusBlockWriteParam write_param; + write_param.pos = 0; + write_param.buffer = (void *)test_str; + write_param.size = sizeof(test_str) - 1; + + // BusDevWriteData(dev, &write_param); + // BusDevClose(dev); + + return; +} + +PRIV_SHELL_CMD_FUNCTION(Test485, a 485 test sample, PRIV_SHELL_CMD_MAIN_ATTR); +``` + + +1.make BOARD=ch32v307vct6 menuconfig中配置UART相关参数 ch32v307vct6 feature ---> Enable UART5 ---> + +2.编译后将其烧录至开发板上,连接485转USB硬件至主机,主机使用串口工具打开执行test_rs485命令,运行485收发测试。 + diff --git a/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test/rs485_test.c b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test/rs485_test.c index 0027caa92..875e2ea8b 100644 --- a/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test/rs485_test.c +++ b/Ubiquitous/XiZi_IIoT/board/ch32v307vct6/third_party_driver/uart/test/rs485_test.c @@ -1,4 +1,22 @@ +/* + * 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 rs485_test.c + * @brief test ch32v307 485 + * @version 1.0 + * @author AIIT XUOS Lab + * @date 2024-03-14 + */ #include "shell.h" #include "ch32v30x.h" #include "ch32v30x_usart.h"