guanguojin · 2023年10月13日 · 江苏

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

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 
    ## Toolchain 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路径
     title=
  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设置了烧录的串口信息和镜像位置
     title=
  6. 在macbook的终端中执行./phoenixMC\_mac64进行烧录(其中settings\_mac.ini需要放在相同路径)
     title=
  7. 在macbook烧录最后会显示“Read old data1 error!”,但好歹不影响程序的执行
     title=
  8. 按一下K2 FT按键重启下开发板,通过串口工具(波特率115200)就能查看相关输出
     title=
构建串口应用
  1. XR806支持UART0-2,共3个串口外设,当前UART0用于终端调试输出,那我们就用UART1用于上位机相互,其对应的管脚为
    image.png
  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相连接
    image.png
  3. 打开终端连接USB串口进行测试,接收终端能实时显示
    image.png
  4. 发送3个字节的二进制0x12,0x34,0x56,在XR806的终端能及时显示
    image.png

image.png

后续
  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/
推荐阅读
关注数
13820
内容数
140
全志XR806开发板相关的知识介绍以及应用专栏。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息