本帖最后由 sky.sun.zz 于 2021-8-30 09:57 编辑
STM32WL55试用(3) PingPong
本次使用PingPong演示代码包来试看看能否双机通讯。
演示包在STM32Cube_FW_WL_V1.0.0\Projects\NUCLEO-WL55JC\Applications\SubGHz_Phy\SubGHz_Phy_PingPong
STM32WL55 Nucleo部分需要把subghz_phy_app.h第42行的
#define REGION_EU868
修改成
#define REGION_EU433
编译、下载。运行。打开串口助手监视运行情况:
一开始没有接收到数据,终端显示如下:
现在测试双机能否互通,将E32-TTL-100 LORA模块设置成广播方式监听工作方式,中断方式接收。每隔250mS发送一次数据,
看看STM32WL55方面有何反应。
可以看出STM32WL55 Nucleo板一侧RX已经有反应,它能接收到E32-TTL-100的发送了,但数据格式不一定正确。而STM32WL55 Nucleo板一侧也一直在发送,可是观察E32-TTL-100 LORA模块一侧却一直没有接收中断。
对比双机不同之处:
1、发送代码:
STM32WL55:
buffer[0]='P';
buffer[1]='O';
buffer[2]='N';
buffer[3]='G';
RadioSend( uint8_t *buffer, uint8_t size );
它直接发送数据内容。
E32-TTL-100:
Tx_buffer[0]=0xff; //地址高字节
Tx_buffer[1]=0xff; //地址低字节
Tx_buffer[2]=0x17; //频道
Tx_buffer[3]='P';
Tx_buffer[4]='O';
Tx_buffer[5]='N';
Tx_buffer[6]='G';
HAL_UART_Transmit(&huart1, (uint8_t*)Tx_buffer, 7,5000);
它需要先发送2个字节地址码,一个字节频道,后面才是数据内容。
2、E32-TTL-100需要发送的16位地址,在STM32WL55代码里找不到对应处。
3、E32-TTL-100的设置参数“空中速率”(默认2.4K),在STM32WL55代码里找不到。
4、STM32WL55代码里的设置参数"bandwidth",在E32-TTL-100里找不到。
这片E32-TTL-100 LORA模块内部已包含MCU,与外部MCU的连接是串口方式,我们无法直接读写SX1276的寄存器,也无法按照STM32WL55方式写发送接收代码。双机通讯暂时无法解决。
不解之处,还望高手指教。
|