2587|1

1万

帖子

203

TA的资源

管理员

楼主
 

应用开发笔记 | 米尔MYD-YA15XC-T LoRa无线通讯实例 [复制链接]

1. 概述

本文主要基于LoRa调制功能的无线串口模块的树莓派扩展板,讲述在M4核LoRa的调试过程。

2. 硬件资源

Ø Typec Debug线1根

Ø Micro usb线1根

Ø MYD-15XC-T开发板

Ø 树莓派接口SX1262 868M LoRa HAT模块2个

3. 软件资源

Ø Linux 5.4.31

Ø STM32CubeIDE 1.5.0

Ø LInux虚拟机

Ø 米尔提供的SDK

4. 环境准备

预先安装好CubeIDE等开发软件并搭建好Linux虚拟机环境,具体环境搭建请参考米尔的软件开发手册《MYD-YA15XC-T_Linux软件开发指南》。

5. 操作步骤

5.1. 硬件介绍与设置 

1)硬件介绍

关于树莓派接口SX1262 868M LoRa HAT模块的硬件介绍与设置请参考微雪官网:

https://www.waveshare.net/wiki/SX1262_868M_LoRa_HAT

2) 接线与设置

需要两个LoRa模块,一个LoRa模块通过Micro USB连接至PC,跳帽置于A,M1和M0连接GND,打开SSCOM串口软件连接LoRa模块。另外一个LoRa模块跳帽连接B,M0、M1跳帽移除改用MYD-YA15XC-T开发板的GPIO使用,如下图所示:

 

 

图5-1. 连接与配置

 

5.2. CubeMX配置

设置时钟为209M,如下图只需要在红色框输入209M,按“Enter”,会自动设置时钟参数:

 

 

图 5-1.时钟设置

由于该模块通讯接口使用的是串口,所以还需要设置usart外设,并使能中断:

 

 

图 5-2.串口设置

接着勾选串口中断,通过中断收发:

 

 

图5-3.串口中断

5.3. 软件设计

由5.2节生成代码之后,在工程目录新建“LoRa”目录,用来存放LoRa的配置代码(微雪官网有该模块设置源码,用户可以直接移植):

 

 

设置寄存器配置模式,这里首先需要设置模式2进行寄存器配置:

void cfg_sx126x_io(uint8_t status)

{

if(CFG_REGISTER == status){

  M0_RESET();

M1_SET();

HAL_Delay(5);

}else if(NORMAL_STATUS == status){

M0_RESET();

M1_RESET();

HAL_Delay(5);

}else if(WOR_STATUS == status){

M0_SET();

M1_RESET();

HAL_Delay(5);

}else if(SLEEP_STATUS == status){

M0_SET();

M1_SET();

HAL_Delay(5);

}

}

配置寄存器,设置波特率9600,广播监听地址:

/******************************************************************************

sx126x mode :broadcast & monitor mode

parameter:

address_high:0xff

 address_low:0xff

net_id: 0x00

serial:0x62

power: 0x00

channel: 0x12

 transmission_mode: 0x03

crypt_high: 0x00

crypt_low: 0x00

******************************************************************************/

lora_para_t transparent_mode = {

.address_high = BROADCAST_ADDH_VALUE,

.address_low = BROADCAST_ADDL_VALUE,

.net_id = BROADCAST_NETID_VALUE,

.serial = BROADCAST_SERIAL_VALUE,

.power = BROADCAST_POWER_VALUE,

.channel = BROADCAST_CHANNEL_VALUE,

.transmission_mode = BROADCAST_TRANSIMISSION_VALUE,

.crypt_high = BROADCAST_CRYPTH_VALUE,

.crypt_low = BROADCAST_CRYPTL_VALUE

};

设置寄存器:

uint8_t sx126x_write_register(lora_para_t para)

{

int8_t i;

buffer[0] = CFG_HEADER;

buffer[1] = REG_START;

buffer[2] = REG_NUMBER;

 

for(i=3;i<12;i++){

buffer = *(¶.address_high + i - 3);

}

HAL_UART_Transmit_IT(&huart3,(uint8_t *)buffer,12);

HAL_UART_Receive_IT(&huart3,(uint8_t *)buffer,12);

HAL_Delay(500);

if(CFG_RETURN == buffer[0]){

buffer[0] = 0;

init_cplt_flag = SUCCESS;

return SUCCESS;

}

return ERROR;

}

 定义发送的信息:

  /* USER CODE BEGIN 1 */

uint8_t transparent_string[] = "Helloworld";//"This is a transparent message\r\n";

uint32_t delay;

  /* USER CODE END 1 */

主函数里,使用串口中断进行发送和接收处理:

  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)

  {

    /* USER CODE END WHILE */

 

    /* USER CODE BEGIN 3 */

if(delay++>18000000){

HAL_UART_Transmit_IT(&huart3,transparent_string,strlen((const char *)transparent_string));

delay = 0;

}

if(SUCCESS == over_flag){

HAL_UART_Transmit_IT(&huart3,buffer,strlen((const char *)buffer));

over_flag = ERROR;

rece_count = 0;

HAL_UART_Receive_IT(&huart3,(uint8_t *)&rece_buff,1);

}

  }

5.4. 测试

1) 量产模式启动m4固件

启动开发板,并启动m4固件,如下:

root@myir-ya151c-t-4e512d:~# cp LoRa_CM4.elf /lib/firmware/

root@myir-ya151c-t-4e512d:~# echo LoRa_CM4.elf > /sys/class/remoteproc/remotepro

c0/firmware

root@myir-ya151c-t-4e512d:~# echo start > /sys/class/remoteproc/remoteproc0/stat

e

[   82.845983] remoteproc remoteproc0: powering up m4

[   82.859219] remoteproc remoteproc0: Booting fw image LoRa_CM4.elf, size 2532532

[   82.865319] remoteproc remoteproc0: header-less resource table

[   82.870883] remoteproc remoteproc0: no resource table found for this firmware

[   82.884297] remoteproc remoteproc0: header-less resource table

[   82.888689] remoteproc remoteproc0: remote processor m4 is now up

2) 信息接收

打开sscom,可以看到usb控制的LoRa模块能接收到数据,如下图所示:

 

 

图 5-2.数据接收

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

最新回复

厉害厉害!   详情 回复 发表于 2021-9-30 21:12
点赞 关注
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!

回复
举报

1411

帖子

3

TA的资源

版主

沙发
 

厉害厉害!

 
个人签名

没有什么不可以,我就是我,不一样的烟火! 

 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表