打印
[STM32F4]

STM32F407VGT6 的USB端口读取IBUS结果不对

[复制链接]
99|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lilaiju|  楼主 | 2025-6-18 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个FlySky X6B接收器,有IBUS输出接口。我从STM32F407VGT6 的USB端口读取IBUS信号。波特率为115200。预计会读取到的值在1000到2000之间,但实际读到的结果是5900 4899。IBUS的逻辑是它有32字节信号。头两个字节是header。第一个字节是0x20,第二个字节伊势0x40。之后发射机信号的每一通道消息为2字节。最后2个字节是校验和。
以下是程序


void readRx() {        HAL_UART_Receive(&huart2, &val, sizeof(val), 200);        //HAL_UART_Transmit(&huart2, val, sizeof(val), 200);        if (val == 0x20 || ibus[0] == 0x20) {                ibus[0] = 0x20;                if (val == 0x40 || ibus[1] == 0x40) {                        ibus[1] = 0x40;                        if (ibusIndex == IBUS_BUFFSIZE) {                                ibusIndex = 0;                                int high = 3;                                int low = 2;                                for (int i = 0; i < IBUS_MAXCHANNELS; i++) {                                        //left shift away the first 8 bits of the first byte and add the whole value of the previous one                                        rcValue[i] = (ibus[high] << 8) + ibus[low];                                        sprintf(value,"%hu", rcValue[i]);                                        HAL_UART_Transmit(&huart2, value, sizeof(value), 200);                                        HAL_UART_Transmit(&huart2, "\n\r", sizeof("\n\r"), 200);                                         high += 2;                                        low += 2;                                }                                return;                        } else {                                ibus[ibusIndex] = val;                                ibusIndex++;                        }                 } else {                        return;                }        } else {                return;        } }

使用特权

评论回复
沙发
onlycook| | 2025-6-18 15:13 | 只看该作者
USB端口配置问题,STM32的USB端口可能不是直接映射到UART的,需要确认USB是否配置为虚拟COM端口。

使用特权

评论回复
板凳
flycamelaaa| | 2025-6-18 16:00 | 只看该作者
波特率不匹配?

使用特权

评论回复
地板
powerantone| | 2025-6-18 16:36 | 只看该作者
波特率设置了115200,可能有误差。

使用特权

评论回复
5
stormwind123| | 2025-6-18 17:12 | 只看该作者
看看时钟配置是否正确。

使用特权

评论回复
6
probedog| | 2025-6-18 18:03 | 只看该作者
读取的原始数据可能未正确解析为16位整数或者是字节序问题。

使用特权

评论回复
7
classroom| | 2025-6-18 20:02 | 只看该作者
可能是硬件连接问题。

使用特权

评论回复
8
jcky001| | 2025-6-18 21:20 | 只看该作者
.使用逻辑分析仪或示波器检查实际信号电平,必要时使用电平转换器。

使用特权

评论回复
9
cr315| | 2025-6-18 22:00 | 只看该作者
建议不要用USB端口,用STM32的专用UART接口。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

18

帖子

0

粉丝