当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。

Solution: toy_car

1 功能概述

1.1 遥控器端功能

1、支持4路按键;

2、支持1路LED灯;

3、支持对码提示功能,对码闪灯,对上后灭灯;

4、工作模式下,按键按下灯亮,松开灯灭;

5、支持断电,回连功能;

6、工作模式下,私有的调频表,支持一场景下多车同完功能;

7、支持跳频功能

8、支持双向对码功能;

9、支持低功耗,对码时间如果超过2分钟,遥控器则进入休眠模式,对码后100ms后,无按键按 下,芯片则进入休眠模式;

10、支持所有按键唤醒功能;

1.2 小车端功能

1、支持前进,后退,左转,右转四个功能;

2、支持双向对码功能;

3、支持断电,回连功能;

4、工作模式下,私有的调频表,支持一场景下多车同完功能;

5、支持跳频功能;

6、支持1路LED灯,用于指示对码的状态;

2 环境要求

  • 遥控器板

  • 小车板

  • PANCHIP RISC IDE

3 编译和烧录

遥控器例程位置:PAN221x_DK_Public\01_SDK\c_demo\solution\toy_car\toy_car_tx

打开toy_car_tx目录下toy_car_tx.cproj工程,编译整个代码工程。

小车例程位置:PAN221x_DK_Public\01_SDK\c_demo\solution\toy_car\toy_car_rx

打开toy_car_rx目录下toy_car_rx.cproj工程,编译整个代码工程。

4 软件说明

4.1 资源分配

4.1.1 遥控器IO资源分配

引脚号

名称

管脚状态

说明

VPP/P04

LED

开漏输出

无线通讯指示灯,低电平有效

P10

KEY0

上拉输入

按键输入端,低电平有效

P11

KEY1

上拉输入

按键输入端,低电平有效

P16

KEY2

上拉输入

按键输入端,低电平有效

P13

KEY3

上拉输入

按键输入端,低电平有效

4.1.2 小车IO资源分配

引脚号

名称

管脚状态

说明

VPP/P04

LED

开漏输出

无线通讯指示灯,低电平有效

P10

Motor0_A

推挽输出

电机0输出端A

P11

Motor0_B

推挽输出

电机0输出端A

P16

Motor1_A

推挽输出

电机1输出端A

P13

Motor1_B

推挽输出

电机1输出端A

4.2 主要功能实现介绍

4.2.1 通讯地址

1、对码公共地址:0xc0、0xc1、0xc2、0xc3(固定的)

2、通讯工作地址:tx_id0, tx_id1, tx_id2, tx_id3(根据遥控端的rolling code得到的)

备注:小车端rx地址采用多pipe通道

rx pipe0地址为:对码公共地址0xc0、0xc1、0xc2、0xc3;

rx pipe1地址为:通讯工作地址tx_id0, tx_id1, tx_id2, tx_id3。

4.2.2 通信频点

1、对码频点:2420

2、通讯频点:24xx、24xx、24xx、24xx、2420(通讯过程中,共5个频点,频点是通过发送端的rolling code计算得出,其中2420为固定频点)

4.2.3 数据包格式

1、数据包组成如下所示:

tx_id(4)

rx_id(4)

key

cmd

4 bytes

4 bytes

1 bytes

1 bytes

(1)、tx_id(4):4bytes,为tx_id0、tx_id1、tx_id2、tx_id3,由遥控器端的rolling code值得到;

(2)、rx_id(4):4bytes,为rx_id0、rx_id1、rx_id2、rx_id3,由小车端的rolling code值得到;

(3)、key:按键数据;

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

前进

后退

保留

保留

保留

保留

右转

左转

注意:上述可根据实际硬件设计,进行修改;

(4)、cmd操作命令:

0xa5:对码包,遥控器发送给小车

0x5a:应答包,小车发送给遥控器

0x55:数据包,遥控器发送给小车

2、对码包:遥控器发送给小车

tx_id(4)

0x00

0x00

0x00

0x00

key

0xa5

遥控器id

固定值

固定值

固定值

固定值

按键值

对码包命令

tx_id(4):固化在遥控器端的身份识别码,由遥控器端的rolling code值得到

3、应答包:小车发送给遥控器

tx_id(4)

rx_id(4)

key

0x5a

遥控器id

小车id

按键值

应答包命令

tx_id(4):从对码复制而来;

rx_id(4):固化在小车端的身份识别码,由小车端的rolling code值得到;

4、遥控包:遥控器发送给小车

tx_id(4)

rx_id(4)

key

0x55

遥控器id

小车id

按键值

应答包命令

tx_id(4):固化在遥控器端的身份识别码;

rx_id(4):固化在小车端的身份识别码;

key:按键值,一个bit代表一个按键,1表示按下,0表示松开;

4.2.4 对码过程

image

对码过程

备注:

1、对码在公共地址和公共频点进行;

2、对码的公共地址为:0xc0、0xc1、0xc2、0xc3;

3、对码的公共频点为:2420;

4.2.5 遥控器对码过程

image

遥控器对码过程

4.2.6 小车对码过程

image

小车对码过程

1、小车端采用rx 多pipe技术,其中pipe0的地址设置为公共地址:0xc0、0xc1、0xc2、0xc3;pipe1的地址设置为通讯工作地址:tx_id0、tx_id1、tx_id2、tx_id3;

2、在上图对码过程中,在收到对码包后,将pipe1的地址设置为tx_id(4);

4.2.7 小车正常工作过程

image

小车正常工作过程

4.2.8 跳频原理

1、跳频频点共5个,其中24xx、24xx、24xx、24xx根据遥控器端rolling_code计算而来,2420为公共频点;

调频频点计算方法:

(1)、选择四个基础频点,如下图所示:

image

四个基础频点

(2)、然后根据以下算法,计算出频点:

hf = (tx_id0 + tx_id1 + tx_id2 + tx_id3) & 0x0f;

hf0 = HF0_BASE_CHANNEL + hf;

hf1 = HF1_BASE_CHANNEL + hf;

hf2 = HF2_BASE_CHANNEL + hf;

hf3 = HF3_BASE_CHANNEL + hf;

2、调频策略:遥控包的工作周期为4ms;

​ 遥控端:每发送一个遥控包,则跳到下一个频点;

​ 小车端:每接收一个遥控包,则跳到下一个频点;如果一直没有收到遥控包,则在一个跳频周期后跳到下一个频点;

注意: 当遥控器在公共频点发送数据时,其发送地址也要切换到公共地址;

4.2.9 遥控器断电重连

1、遥控器断电重启后会进入对码状态;

2、小车收到对应的对码包后,并判断发送过来的tx_id(4)与自身的tx_id(4)是否相同,如果相同,即回复应答包,重新进行对码,实现遥控器断电重连功能;

4.2.10小车断电重连

1、遥控器端跳频到公共频点后,同时会切换到tx地址到公共地址,并发送一次遥控包;

2、小车断电重启后会进入对码状态,如果小车收到对应的遥控包,并判断发送过来的rx_id(4)与自身的rx_id(4)是否相同,如果相同,则视为遥控器和小车之前有过对码,则认为对码成功,小车直接进入工作模式,接收数据,同时设置pipe1的地址为tx_id(4);

5 Rom/Ram资源使用情况

遥控器端资源使用情况
rom 1596 bytes, ram 50 bytes
小车端资源使用情况
rom 2028 bytes, ram 54 bytes