1.开发环境介绍

遥控器型号:富斯i6,如图1

接收机型号:富斯iA6B,如图2

开发板:STM32F407(其他型号开发板也是相似的操作)

软件环境:Keil5 STM32CUbeMX

图1
图2

2.说明书资料

2.1遥控器说明书

FS-i6 使用说明书20160817.pdf

2.2接收机说明书

航模.fs.ia6b 接收机记录 - Mojies - 博客园

3.与STM32实现通讯的步骤

3.1遥控器与接收机对码

3.2接收机接线图

图3

图三中,红线VCC;黑线GND;绿线为接收机的输出,也就是开发板串口的RX

SERVO可以依据IBUS协议进行输出。

3.3通讯代码实现

这是一个示例代码,可根据自身需求进行修改。

 int sbus_to_rc(volatile const uint8_t *sbus_buf, remote_data_t *remote_data)
{
    if (sbus_buf == NULL || remote_data == NULL)
    {
        return -1;
    }
	
	uint16_t	calc_sum = 0;
	uint16_t 	ori_sum;
	uint8_t  	i;

	if( sbus_buf[0] != 0x20 )
		return -1;
	if( sbus_buf[1] != 0x40 )
		return -1;

	for( i = 0; i < 30; i++ )
		calc_sum += sbus_buf[i];
	calc_sum ^= 0xFFFF;
	ori_sum = sbus_buf[30] + (sbus_buf[31]<<8);
	if( calc_sum != ori_sum )
		return -1;

	remote_data->ch[0] = sbus_buf[(0)*2+2] + ((sbus_buf[(0)*2+3]&0xF)<<8);
	remote_data->ch[0] -= 1500;
	
	remote_data->ch[1] = sbus_buf[(1)*2+2] + ((sbus_buf[(1)*2+3]&0xF)<<8);
	remote_data->ch[1] -= 1500;
	
	remote_data->ch[2] = sbus_buf[(3)*2+2] + ((sbus_buf[(3)*2+3]&0xF)<<8);
	remote_data->ch[2] -= 1500;
	
	remote_data->num = sbus_buf[(2)*2+2] + ((sbus_buf[(2)*2+3]&0xF)<<8);
	
	if((sbus_buf[(4)*2+2] + ((sbus_buf[(4)*2+3]&0xF)<<8)) == 2000)
	{
		remote_data->s[0] = 1;		
	}
	else if((sbus_buf[(4)*2+2] + ((sbus_buf[(4)*2+3]&0xF)<<8)) == 1000)
	{
		remote_data->s[0] = 0;
	}
	if((sbus_buf[(5)*2+2] + ((sbus_buf[(5)*2+3]&0xF)<<8)) == 2000)
	{
		remote_data->s[1] = 2;		
	}
	else if((sbus_buf[(5)*2+2] + ((sbus_buf[(5)*2+3]&0xF)<<8)) == 1000)
	{
		remote_data->s[1] = 0;
	}
	else if((sbus_buf[(5)*2+2] + ((sbus_buf[(5)*2+3]&0xF)<<8)) == 1500)
	{
		remote_data->s[1] = 1;
	}
	else
	{
		remote_data->s[1] = 0;
	}

	if((sbus_buf[(6)*2+2] + ((sbus_buf[(6)*2+3]&0xF)<<8)) == 2000)
	{
		remote_data->s[2] = 1;		
	}
	else if((sbus_buf[(6)*2+2] + ((sbus_buf[(6)*2+3]&0xF)<<8)) == 1000)
	{
		remote_data->s[2] = 0;
	}

	if((sbus_buf[(7)*2+2] + ((sbus_buf[(7)*2+3]&0xF)<<8)) == 2000)
	{
		remote_data->s[3] = 1;		
	}
	else if((sbus_buf[(7)*2+2] + ((sbus_buf[(7)*2+3]&0xF)<<8)) == 1000)
	{
		remote_data->s[3] = 0;
	}
	

	
	return 0;

}

4.遥控器刷新固件至10通道

4.1准备物料

刷新固件需要用到教练线或者USB转TTL。

4.2下载软件

链接:https://pan.baidu.com/s/19wSvoKoUNgveK-6O1X3LsA?pwd=8384
提取码:8384

4.3视频教程链接:

用USB转TTL串口模块或教练线给富斯i6刷十通_哔哩哔哩_bilibili

(视频以USB转TTL为例,使用教练线同理)

5声明与致谢

出于作者水平限制,本文章不是特别严谨,一些地方是出于实践经验而非专业研究,内容仅供参考,希望能够给大家一些灵感与启发。上述文章如有不严谨、不合理、错误的地方,欢迎指正。

一些资源来自网络,如有侵权,联系删除。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐