导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    【XR806开发板试用】基于FreeRTOS的UART1串口双向通信测试

    Wireless & Analog Series
    1
    1
    980
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • G
      guan_corey LV 2 最后由 编辑

      XR806是全志科技设计开发的一款支持WiFi和BLE的高集成度无线MCU芯片。之前已经支持了鸿蒙系统,现在又支持了FreeRTOS,可玩性又大大增强了。
      这次有机会参加极术社区举办的“「免费试用」搭载安谋科技STAR-MC1的全志XR806 Wi-Fi+BLE 开发板试用”活动,拿到板子后就开始搭建环境,并进行了串口的相关测试。

      环境准备
      1. 下载SDK和编译工具链

        // SDK和工具链
        wget https://bbs.aw-ol.com/assets/uploads/files/1693988430633-xr806_sdk.tar.gz
        wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/8-2019q3/RC1.1/gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
        
      编译、烧录和测试
      1. 修改SDK中gcc.mk中CC_DIR,使其指向你的toolchain路径

      2. 配置项目(可以拷贝已有项目的配置文件)

        1. cp project/demo/hello_demo/gcc/defconfig .config
        2. make menuconfig (可能需要安装libncurses5-dev),点击Save,然后Exit
        3. make build_clean
        4. make build -j$(nproc)
      3. 一切顺利的话编译生成的镜像就在 out/xr_system.img

      4. 我是在macbook上进行烧录的,将如下2个文件放到macbook本地
        tools/phoenixMC_mac64
        tools/settings_mac.ini

      5. 其中settings_mac.ini设置了烧录的串口信息和镜像位置

      6. 在macbook的终端中执行./phoenixMC_mac64进行烧录(其中settings_mac.ini需要放在相同路径)

      7. 在macbook烧录最后会显示“Read old data1 error!”,但好歹不影响程序的执行

      8. 按一下K2 FT按键重启下开发板,通过串口工具(波特率115200)就能查看相关输出

      构建串口应用
      1. XR806支持UART0-2,共3个串口外设,当前UART0用于终端调试输出,那我们就用UART1用于上位机相互,其对应的管脚为
      2. 在xr806_sdk/project/demo下我们基于hello_demo模板拷贝生成一个uart_demo(cp -r hello_demo uart_demo)
      3. 修改uart_demo下的gcc/defconfig,使其CONFIG_PROJECT="demo/uart_demo"
      4. 从at_demo下拷贝文件serial.c、serial_debug.h、serial.h到uart_demo下,方便我们配置串口信息
      5. 修改main.c
      #include "serial.h"
      
      // UART1_ID 针对的就是串口1
      serial_init(UART1_ID, 115200, UART_DATA_BITS_8, UART_PARITY_NONE, UART_STOP_BITS_1, 0);
      serial_start();
      
      uint8_t i = 0;
      uint8_t recv_buffer[8];
      uint8_t send_buffer[3];
      buf[0] = 0xC1;
      buf[1] = 0xC1;
      buf[2] = 0xC1;
      
      serial_write(buf, 3); //发送的测试数据
      int len = serial_read(recv_buffer, 8); // 接收数据
      for (i=0; i<8; i++)
      {
          printf("0x%x ", recv_buffer[i]);
      }
      printf("\n");
      
      1. 回到xr806_sdk根目录,更新配置文件cp project/demo/uart_demo/gcc/defconfig .config,使用make build_clean,make_build来生成新的镜像文件
      2. 将USB串口线GND、TXD、RXD与XR806的GND、PB15、PB14相连接
      3. 打开终端连接USB串口进行测试,接收终端能实时显示
      4. 发送3个字节的二进制0x12,0x34,0x56,在XR806的终端能及时显示

      后续
      1. 当前发现在9600波特率出现数据传输丢失导致无法与Lora E32模块通信,后续尝试换根串口线再测试
      2. 尝试移植modbus RTU进行上位记通信
      参考
      1. https://aijishu.com/a/1060000000426976
      2. https://blog.csdn.net/sinat_37853238/article/details/122152794
      3. https://bbs.aw-ol.com/topic/4361/xr806开发板试用-编译freertos系统
      4. https://bbs.aw-ol.com/topic/4338/基于freertos的xr806-wlan测试
      5. https://xr806.docs.aw-ol.com/
      6. https://xr806.docs.aw-ol.com/study/hard_inx/
      1 条回复 最后回复 回复 引用 分享 0
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策