【北京迅为】iTOP-4412全能版使用手册-第一百零一章 Android测试例程

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、陀螺仪、CAN总线、RS485总线、500万摄像头等模块,稳定运行Android 4.0.3/Android 4.4操作,系统通用Linux-3.0.15+Qt操作系统(QT支持5.7版本),Ubuntu版本:12.04,接口智能分配 方便好用。

【交流群2】258811263(获取开源资料)

【迅为B站】北京迅为电子的个人空间-北京迅为电子个人主页-哔哩哔哩视频


第一百零一章 Android测试例程

101.1 Android Eclipse 环境下的应用例程

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码”目录下可以找到对应的应用程序源码。

本节介绍的应用主要包括:

“iTOP-4412-Android4.4-rfidtest_V1.0.rar”、

“iTOP-4412-Android4.4- relaytest 继电器_V1.0.rar”、

“iTOP-4412-Android4.0-Zigbee 测试程序_V1.0.zip”、

“iTOP-4412-Android4.0-serialtest 串口_V1.0.rar”、

“iTOP-4412-Android4.0-max485test_V1.0.rar”、

“iTOP-4412-Android4.0-cantest_V1.0.rar”、

“iTOP-4412-Android4.0-adctest 模数转换_V1.0.rar”、

“iTOP-4412-Android4.0- ledtest 小灯_V1.0.rar”、

“iTOP-4412-Android4.0- buzzertest 蜂鸣器_V1.0.rar”、

“iTOP-4412-Android4.0- CameraDemo 照相机_V1.0.rar”等。

蓝牙测试使用的是系统自带的功能

101.1.1 Buzzer应用程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- buzzertest 蜂鸣器_V1.0.rar”目录下。

用户可以参考 ledtest 的方法,导入、分析以及移植 buzzertest 工程。和开发板调试时,屏幕界面如下图所示。

 

上层应用调用 JNI 接口为“class buzzer,”在"src/com.topeet.buzzertest/MainActivity/buzzer",如下图所示。 

 

调用的 buzzer 设备节点为“/dev/buzzer_ctl”,打开文件"jni/ com.topeet.buzzertest_buzzer.c",如下图所示。 

 

内核驱动源码位置为“/drivers/char/itop4412_buzzer.c”。

101.1.2 ADC应用程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0-adctest 模数转换_V1.0.rar”目录下。

用户可以参考 ledtest 的方法,导入、分析以及移植 adctest 工程。和开发板调试时,屏幕界面如下图所示。

 

上层应用调用 JNI 接口为“class adc”,在"src/com.topeet.adctest/adc.java",如下图所示。 

 

调用的 buzzer 设备节点为“/dev/adc”,打开文件" jni/com.topeet.adc_adc.c",如下图所示。 

 

内核驱动源码位置为“/drivers/char/itop4412_adc.c”。

101.1.3 串口应用程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0-serialtest 串口_V1.0.rar”目录下。

用户可以参考 ledtest 的方法,导入、分析以及移植 serialtest 工程。和开发板调试时,屏幕界面如下图所示。

 

上层应用调用 JNI 接口为“class serial”,在"src/com.topeet.serialtest/serial.java",如下图所示。 

调用的串口设备节点为“/dev/ttySAC3”,打开文件“serialtest\src\com\topeet\serialtest”的文件“MainActivity.java”,如下图所示。 

101.1.4 串口应用移植需要注意的问题

下面给大家介绍一下在 Android 操作系统中串口的移植需要注意的几个方面:

1)系统启动后,在超级终端中输入命令"#ls dev/tty*",如下图,红色方框中就是开发板的四个串口设备节点,这个测试程序中使用的是“/dev/ttySAC2”。

 

2)如果使用别的串口,则需要修改 Android 串口应用的源码。打开应用的源码文件夹“serialtest\src\com\topeet\serialtest”的文件“MainActivity.java”,搜索“com3.Open”,这里使用的串口设备节点是“/dev/ttySAC3”,对应的是 CON2 接口。如果需要使用别的串口,则需要根据实际情况,修改代码。 

 

3)打开文件夹“serialtest\jni”中的文件“com_topeet_serialtest_serial.c”,如下 图,找到函数“JNIEXPORT jint JNICALL Java_com_topeet_serialtest_serial_Open”。在“#if 1”到“#endif”中的代码,有需要设置的参数,这些参数都是通用的,可以直接根据需要设置。不过在这个例程中,除了波特率,其它都是缺省状态。 

 

101.1.5 蓝牙应用

配置了蓝牙模块后,接到开发板上,就可以使用蓝牙功能了。

 

进入 Android 文件系统,如下图所示(此图是 AVD 的界面,用户以实际开发板屏幕为准),在“设置”中,可以设置蓝牙开关。 

如果用户需要操作蓝牙,则只需要掌握对应的蓝牙命令即可。

下面给大家介绍几个常用的命令,并演示使用命令进行连接。下面介绍的方法是,启动开发板之后,在超级终端中输入命令。

查询命令hciconfig --help

所有的指令都可以找到。

 

开启/关闭蓝牙

#hciconfig hciX up(down)

这里蓝牙标号为 hci0。开启蓝牙:

# hciconfig hci0 up

 

关闭蓝牙:

# hciconfig hci0 down

 

准备一个带有 Android 蓝牙接口的手机,开启手机的蓝牙功能(下图显示的是 U980), 同时也开启开发板上的蓝牙。

使用查询命令

#hcitool scan

 

查询结果 

 

这里需要注意的是,蓝牙开启后只能在一段时间内检测到以及连接。绑定手机蓝牙的硬件地址,使用绑定命令

#rfcomm bind /dev/rfcomm0 AC:E2:15:13:F3:5A

 

解绑命令

#rfcomm release /dev/rfcomm0 AC:E2:15:13:F3:5A

 

101.1.6 RS485应用

用户在网盘可以下载 Android 的 485 源码应用,具体使用方法和串口类似,这里不再重复。

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- max485test_V1.0.rar”目录下。

 

101.1.7 RFID的应用

用户在网盘下载 Android 的 RFID 源码。配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.4- rfidtest_V1.0.rar”目录下

如下图所示,是迅为电子的 RFID 模块。模块和底板连接的时候,通过一个简单的转接板,地板上对应是 GPIO 口(靠近耳机插座的那个接口),模块和转接板都有丝印,注意不要插反。

 

连接好之后,Android 的测试界面如下,将提供的白卡放到 RFID 模块的无线识别区,然后按下图中的“RECV”,即可读出卡号。 

 

101.1.8 CAN测试例程

源码全称是“iTOP-4412-Android4.0-cantest_V1.0.rar”。用户可以直接使用。

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0-cantest_V1.0.rar”目录下

101.1.9 Gallery相册测试程序

源码压缩包为“iTOP-4412-Android4.0-Gallery 测试程序_v1.0.rar”。配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0-Gallery 相册_v1.0.rar”目录下。应用 APK 安装之后如下图所示。

 

点击如上图标,即可对对应的相片进行查看管理。 

 

点击如上图标,即可调用摄像头 OV5640 进行拍照。

101.1.10 TxtReader文本阅读器测试程序

源码压缩包为“iTOP-4412-Android4.0- TxtReader 测试程序_v1.0.rar”。配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- TxtReader文本阅读器_v1.0.rar”目录下。安装 APK,打开应用,如下图所示。

 

点击“打开文件”按钮,选择一个“.txt”,即可对这个 txt 文件进行阅读。

101.1.11 计算器测试程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- CalculatorMainActivity计算器_V1.0.rar”目录下。

源码压缩包为“iTOP-4412-Android4.0- CalculatorMainActivity 测试程序_v1.0.rar”。安装 APK,打开应用,如下图所示。

 

该计算器可以进行常用的多种数学计算。

101.1.12 日历测试程序

 

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- TimeDiary 测试程序_V1.0.rar”目录下。

源码压缩包为“iTOP-4412-Android4.0- TimeDiary 测试程序_v1.0.rar”。安装 APK,打开应用,如下图所示。

 

点击上方的三个图标分别对应的三个功能。 

 

 

 

101.1.13 贪吃蛇测试程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- Snake 游戏贪吃蛇_V1.0.rar”目录下。

源码压缩包为“iTOP-4412-Android4.0- Snake 游戏贪吃蛇_V1.0.rar”。安装 APK,打开应用,如下图所示。屏幕下方为所用时间和所得分数。通过滑动屏幕来控制贪吃蛇的运行方 向。

 

游戏结束时,显示得分,用户可以点击“重新开始”按钮,重新开始游戏。也可以点击退出按钮退出游戏。 

101.1.14 拼图游戏测试程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- jigsaew游戏拼图_V1.0.rar”目录下。

例程源码压缩包为“iTOP-4412-Android4.0- Test 测试程序_v1.0.rar”。

安装 APK,打开应用,如下图所示。通过点击屏幕上的任何一小块图片,使其与左上角的图片交换位置,直至完成拼图,则游戏通过。

 

游戏通过后。 

 

101.1.15 录音机测试程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- AudioRecPlay 录音机_V1.0.rar”目录下。

源码压缩包为“iTOP-4412-Android4.0- AudioRecPlay 录音机_V1.0.rar”。安装 APK, 打开应用,如下图所示。

点击“Record Start”按钮开始录音。点击“Record Stop”按钮停止录音。点击“Play Record”按钮播放录音。

 

101.1.16 音量和亮度调节测试程序

配套资料在网盘“iTOP4412开发板资料汇总(不含光盘内容)\TOP-4412 开发板系统源码及镜像(其他)\Android Eclipse 版本测试源码\iTOP-4412-Android4.0- Layout 音量亮度调节测试程序_V1.0.rar”目录下。

源码压缩包为“iTOP-4412-Android4.0- Layout 音量亮度调节测试程序_V1.0.rar”。安装 APK,打开应用,如下图所示。

通过右侧的按钮可以打开、关闭对应的调节功能。通过拖拽进度条调节对应功能。

 

101.2 Android Studio环境下的应用例程

在网盘“iTOP-4412 开发板系统源码及镜像(其他)\Android Studio 版本测试源码” 目录下可以找到对应的应用程序。主要包括以下内容。

“iTOP-4412-AndroidStudio-adctest 测试程序 v1.0.zip”

是 adc 模块测试的源码。该源码配合滑动变阻器使用。

“iTOP-4412-AndroidStudio-AudioRecPlay 测试程序 v1.0.zip”

是 AudioRecPlay 测试程序的源码。

“iTOP-4412-AndroidStudio-buzzertest 测试程序 v1.0.zip”

是蜂鸣器测试程序的源码。该源码可以控制开发板上蜂鸣器的声响。

“iTOP-4412-AndroidStudio-CalculatorMainActivity 测试程序 v1.0.zip”

是CalculatorMainActivity 测试程序的源码。

“iTOP-4412-AndroidStudio-cantest 测试程序 v1.0.zip”

是 can 模块的源码,该源码配合 can 模块使用,使开发板可以通过 can 进行通讯。

“iTOP-4412-AndroidStudio-Gallery 测试程序 v1.0.zip”

是 Gallery 测试程序的源码。

“iTOP-4412-AndroidStudio-helloworld 测试程序 v1.0.zip”

是 helloworld 测试的源码,该源码是简单的 helloworld 测试程序。

“iTOP-4412-AndroidStudio-Layout 测试程序 v1.0.zip”

是 Layout 测试程序的源码。

“iTOP-4412-AndroidStudio-ledtest 测试程序 v1.0.zip”

是 ledtest 测试程序的源码,该源码可以控制开发板上 led 小灯的亮灭。

“iTOP-4412-AndroidStudio-max485test 测试程序 v1.0.zip”

是 max485test 测试程序的源码,该源码配合 485 模块使用,使开发板可以通过 485 进行通讯。

“iTOP-4412-AndroidStudio-rfidtest 测试程序 v1.0.zip”

是 rfidtest 测试程序的源码,该源码配合 rfid 模块使用,可以读取卡片的信息。

“iTOP-4412-AndroidStudio-serialtest 测试程序 v1.0.zip”

是 serialtest 测试程序的源码,该源码可以对开发板上的串口进行测试。

“iTOP-4412-AndroidStudio-Snake 测试程序 v1.0.zip”

是 Snake 测试程序的源码。

“iTOP-4412-AndroidStudio-Test5 测试程序 v1.0.zip”

是 Test5 测试程序的源码。

“iTOP-4412-AndroidStudio-TimeDiary 测试程序 v1.0.zip”

是 TimeDiary 测试程序的源码。

“iTOP-4412-AndroidStudio-TxtReader 测试程序 v1.0.zip”

是 TxtReader 测试程序的源码。

 

101.3 iTOP-4412-Android系统声卡测试

本章首先介绍声卡的基础知识,然后详细介绍声卡的使用和测试方法,适用于 iTOP-4412 精英版/全能版的 Android4.0/Android4.4 系统的声卡测试,分为以下几个部分:

1、声卡基础知识和注意事项;

2、耳机和麦克风测试;

3、声卡外放(喇叭)测试。

101.3.1 声卡基础知识

精英版接口基础知识

iTOP-4412 的声卡,如下图所示,标记 1 为 J3 的是声卡外放的左声道,标记 2 为 J4 的是声卡外放的右声道,MIC 和 PHONE 分别是麦克和耳机接口。

 

全能版接口基础知识

iTOP-4412 的声卡,如下图所示,标记 1 为 J3 的是声卡外放的左声道,标记 2 为 J4 的是声卡外放的右声道,MIC 和 PHONE 分别是麦克和耳机接口。

 

原理图和驱动简介

声卡的内核驱动是内核源码“soc/codecs/”目录下的“wm8960.c”;

声卡调试 tinymix 工具,在 Android 源码目录“external/tinyalsa/”下,这个工具用来切换声卡内外放;

如下图所示,这是 iTOP-4412 的底板原理图声卡部分,声卡芯片为 wm8960,提供有MIC(J6)接口和 PHONE 接口(J7),以及声卡的两个外放接口(J3 左声道,J6 右声道)。

 

测试设备

除了开发板本身以外,如果要完整的测试声卡,还需要耳机麦克喇叭等工具。作者选用的工具,主要的参数如下:

耳机:三节耳机

麦克风:三节麦克

喇叭 x2:8 欧姆 3W

注意:如果是耳机和麦克一体的,可能无法使用麦克风,最好使用分离耳机和麦克,作者使用的耳机和麦克都是三节,测试完全没问题。

喇叭选择 8 欧姆,3W 是因为选择这种参数的喇叭,在没有额外功放的情况下,可以获取较大输出。声卡 Datasheet 上建议使用 1W,但是声音非常小,建议用 3W,作者测试声音很大。

作者的测试设备如下图所示。

 

101.3.2 耳机测试

开发板运行 Android(4.0 和 4.4 测试方法类似)系统,上传视频到开发板(可以通过 TF 卡,网络下载,手机助手上传等多种方法实现)。

播放任意视频,接上耳机,可以听到有声音播放。

 

101.3.3 麦克风测试

开发板接上麦克风,打开自带程序“录音机”。

 

点击上图所示“圆形”按钮,开始录音,如下图所示,如果有声音录入,则指针会跳动。 

 

录制一段声音之后,点击“方块”按钮,保存声音。

然后打开“音乐”程序,如下图所示,选择“播放列表”。

 

如上图所示,点击“我的录音”,如下图所示,可以找到录制的音频文件。 

 

如上图所示,点击录制的音频文件。 

 

如上图所示,开始播放,耳机中可以听到录制的声音。

101.3.4 声卡外放(喇叭)测试

tinymix 工具

要测试喇叭外放,需要使用 tinymix 工具,迅为提供的 Android 源码中都有集成这个工具,但是部分 Android 镜像汇总没有编译这个工具,所以,首先确认烧写到开发板中的镜像有这个工具。

Android 系统启动之后,使用“su root”先登陆 root 账户,如下图所示,使用命令“tinymix”。出现“tinymix: not found”,则表明镜像中没有这个工具;出现一大堆信息,则表明有这个命令。

 

tinymix 工具编译

如果没有命令,则需要重新编译 Android 源码。

在 Android 源码的“external/tinyalsa”目录下,如下图所示,集成了 tinymix 源码“tinymix.c ”等,但是“Android.mk”脚本中并没有将源码编译到镜像中。

 

打开 Android.mk 文件,将其中的所有的“LOCAL_MODULE_TAGS := optional”,改成“LOCAL_MODULE_TAGS := eng” 

 

然后再重新编译,生成的镜像中就有这个命令了。

常用 tinymix 命令介绍

在 iTOP-4412 的 Android 系统中,当 Android 系统中集成了 tinymix 命令之后,如下图所示,输“tiny”,然后按 Tab 命令,可以看到有 tinycap,tinymix,tinyplay 三个工 具。

 

如下图所示,使用“tinymix”命令,如下图所示。 

 

第一行显示“Number of controls: 53”表明有 53 条 tinymix 混音命令。从第二行到最后,是介绍 0-53 条命令的表格;

第一列 ctl 表示编号。0 1 2 ...分别表示 0 1 2...命令,使用对应命令的时候如果想用第 0 条命令,则 tinymix 首先要加上参数 0,第 n 条,则 tinymi 要加上参数 n...;

第二列 type 表示类型。INT 在这里可以理解为,这个参数可以设置为 0-127 或者 255, BOOL 表示可以设置为 0 和 1;

第三列 num 表示“这条命令控制几个参数”。例如,有两个耳机(左耳和右耳)通道, 可是只用设置一个参数 4 同时就可以设定两个耳机的音量;

第四列 name 解释命令;

第五列 value 显示参数当前的值。例如上一小节,作者开发板上的截图,第四条命令显示耳机的音量是 127 127。

声卡外放测试

喇叭在没有额外功放的情况下,选取 8 欧姆,1W 的喇叭,可以获取最大输出功率。

喇叭焊接:喇叭焊接之后,喇叭的两根线没有顺序,如下图所示

 

外放测试

请注意:作者在测试声音外放的时候发现,如果播放视频来测试,由于现在压缩视频比较多,这种压缩视频声音都比较小,声音会很小,所以用户可以用默认的播放器“音乐”播放声音高亢的音乐文件,这样比较容易观察。

外放测试需要以下命令:

设置外放声音(最大为 127):tinymix 6 127

开启左右声道切换功能(不开启则无法切换外放声道):tinymix 7 1

右声道播放喇叭开启:tinymix 39 1

 

左声道播放喇叭开启:tinymix 42 1

注意:左声道和右声道同时开启则播放右声道;左声道输出,则需要关掉右声道。

例如:开机之后,想要使用右声道外放,则可以使用以下命令:

tinymix 6 127

tinymix 7 1

tinymix 39 1

tinymix 42 0

例如:开机之后,想要使用左声道外放,则可以使用以下命令: tinymix 6 127

tinymix 7 1

tinymix 39 0

tinymix 42 1

101.4 iTOP-4412-Android-继电器模块

101.4.1 引言

版本

日期

作者

修改内容

V1.0

20170420

HPS

完成第一版

在“Relay_Module_v1.1.zip”硬件资料压缩包中,提供 Cadence 格式的原理图和PCB,AD 格式的原理图和 PC,PDF 格式的原理图。

继电器模块的 linux 驱动是内核目录下的“drivers/char/itop4412_relay.c”文件,默认内核镜像中已经包含该驱动。

Android 测试例程提供“iTOP-4412-Android-Relay_V1.x”压缩包,Android4.0 和Android4.4 的测试程序一样。测试 APK 是压缩包下“bin”目录中的“relaytest.apk”文件。

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-继电器测试例程-全能板.zip” 目录下可找到配套资料。

101.4.2 硬件连接

本文档测试使用一块开发板,一个继电器模块。使用排线连接开发板和继电器模块。继电器模块的 U2 端口,连接开发板上的“GPIO”端口。

连接后如下图所示。

 

硬件连接完成之后,就可以进行软件测试了。

101.4.3 软件测试

开发板运行 Android 系统之后,安装“relaytest.apk”文件,打开 APP。若弹出个“超级用户请求”对话框,选择“永久记住选择”,点击“允许”。如下图所示。

 

程序运行界面如下图所示。 

 

点击“RELAY ON ”按钮打开继电器,可以听到清脆的响声,则表明已经打开。点击“RELAY OFF”按钮关闭继电器。

继电器开启和关闭的时候,端子输出如下

当继电器打开,则网络 XispSPIMISO 输出高电平。继电器管脚 2 和 5 导通,端子的管脚pin-A 输出 5v 电压。

当继电器关闭,则网络 XispSPIMISO 输出低电平。继电器管脚 3 和 5 导通,端子的管脚pin-B 输出 5v 电压。

如果用户想输出其他电压(非 5v),可以去掉 R3 电阻,将要控制的电压,从“COM” 管脚输入即可。

101.5 iTOP-4412-Android-adb网络调试

101.5.1 Android4.0系统ADB网络调试

配置 IP 和网关

Android4.0.3 使用以太网需要手动设置 ip、子网掩码以及网关。使用以下命令进行配置。其中 ip、子网掩码和网关用户要根据自己实际情况进行修改。

ifconfig eth0 192.168.3.130 netmask 255.255.255.0 up 
route add default gw 192.168.3.1 dev eth0
setprop net.dns1 192.168.3.1

如下图。

 

使用“ifconfig eth0”查看,如下图。 

 

配置 adb 网络连接端口

在超级终端使用以下命令。如下图。

stop adbd
setprop service.adb.tcp.port 5555 
start adbd

adb 连接

打开“platform-tools”中的“cmd.exe”程序(可参考本手册中的“4.4.2 ADB 的基础知识”小节)。首先测试一下网络连接情况。

 

由上图可知。主机和开发板网络连通。

在 cmd 中输入“adb connect 192.168.3.130”命令进行连接。输入“adb shell”命令进行调试。

 

由上图可知,连接成功,并可以进行调试。

101.5.2 Android4.4系统ADB网络调试

在 android4.4 源码目录使用“ vi device/samsung/smdk4x12/system.prop”命令打开 system.prop 文件,并在末尾添加

ro.adb.secure=0 
service.adb.tcp.port=5555

如下图。

 

保存退出后。重新编译文件系统。将生成的“system.img”和“ramdisk-uboot.img” 重新烧写进开发板。

Android4.4 系统可以实现自动分配 ip 和网关,不需要手动设置。系统起来后。使用“ifconfig eth0”命令查看 ip。如下图。

 

打开“platform-tools”中的“cmd.exe”程序(可参考本手册的“4.4.2 ADB 的基础知识”小节)。

首先测试一下网络连接情况。然后使用“adb connect 192.168.3.198”命令进行连接。最后输入“adb shell”命令进行调试。如下图。

 

由上图可知,连接成功,并可以进行调试。

101.5.3 通过ADB网络调试Eclipse

以 android4.4 为例讲解通过 ADB 网络调试 eclipse 程序(android4.0.3 与此操作相同)。

选中“hello”工程文件,选择“Run”下的“Run”选项。如下图。

 

弹出如下图对话框,选择“No” 

 

此时,弹出如下图对话框。 

 

开发板的 android 系统起来后,在 cmd 窗口中输入“adb connect 192.168.3.198”连接命令。如下图。 

此时,eclipse 对话框如下图,选中设备,点击“ok”。 

 

开发板运行该例程。如下图。 

 

101.6 iTOP-4412-Android-串口开发教程

串口是计算机上一种非常通用的设备通信协议,在嵌入式 linux 开发中,console 控制台大多数情况下都是使用串口,另外还有大量的模块也是使用串口。

本章介绍开发板安装 Android 系统之后,如何测试 RS-232 串口。

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-串口测试文档(升级版)_V2.0.rar” 目录下可找到配套资料。

101.6.1 串口基础知识

RS-232 串口的电气特性如下:

1、RS-232 串口通信最远距离是 15 米;

2、RS232 可做到双向传输,全双工通讯,最高传输速率 20kbps 3)RS-232C 上传送的数字量采用负逻辑,且与地对称 逻辑 1:-3~-15V 逻辑 0:+3~+15V。

PC 机主机后有 9 针的 com 口(串口)在工业控制和数据采集上应用广泛,不过最新的PC 机可能默认不自带 com 口。在嵌入式中,串口应用就更加广泛了,几乎所有的嵌入式产品中,都会用到串口。

如下图所示,右边方框中的是 2 个串口接口,一般称为 RS232 接口(DB9 封装,另外还有 DB25 的封装,但是现在已经不常用了),左边的椭圆框中的是电平转换芯片,型号是MAX3232,将 3.3V 的 TTL 串口电平转换为 RS232 电平,另外还有 MAX232 将 5V 的 TTL 串口电平转换为 RS232 电平等。

 

如下表所示,串口 9 针的定义。虽然串口现在常用 9 针的封装,但是实际上使用的最多的是其中 3 个管脚,TXD:数据发送管脚、RXD:数据接收管脚、SGND:信号地。 

针脚

信号

定义

作用

1

DCD

载波检测

Received Line Signal Detector(Data Carrier Detect)

2

RXD

接收数据

Received Data

3

TXD

发送数据

Transmit Data

4

DTR

终端准备好

Data Terminal Ready

5

SGND

信号地

Signal Ground

6

DSR

数据准备好

Data Set Ready

7

RTS

请求发送

Request To Send

8

CTS

清除发送

Clear To Send

9

RI

振铃提示

Ring Indicator

另外在嵌入式应用中,经常也会需要用到 TTL-5V、TTL-3.3V 和 TTL-1.8V 串口,测试方式和例程是类似的。

如果 PC 机者 ARM 板没有足够的串口,均可以采用 USB 转串口(PL2303 等)模块将USB 信号转换为 RS232 信号。

101.6.2 精英版硬件连接

如下图所示,是精英版的硬件连接。串口连接左边的 uart1,如果没有多余的 USB 转串口,可以只接左边的测试串口,不用接右边的控制台串口。

如果使用 CON3,不要插 GPS 模块,也不允许其它设备占用; 同理如果要使用 GPS, 那么 CON3 口就不要接设备,需要去掉连接 MAX3232 芯片的 R20 和 R21 两个电阻。原理图中的网络是“BUF_GPS_TXD 和 BUF_GPS_RXD”。

 

101.6.3 全能版硬件连接

如下图所示,是全能版的硬件连接。下图中,左边的串口是测试串口,右边的串口是控制台串口。

如果用户购买的全能版,包含了 GPS 模组,请参考用户使用手册‘全能版使用串口修改方法’,根据全能版版本修改对应的电阻。

 

101.6.4 APK 的安装

将源码包“topeet_android_serialport.7z”解压,其中“serialport.zip”是 android 的源码包,android 测试程序的 APK 是解压出来源码文件夹中的“bin”目录下的serialport.apk。

拷贝 serialport.apk 到 fastboot 或者 platform-tools 目录下(参考本用户手册 ADB调试章节),开发板启动 android 系统,然后接上 OTG 接口,打开 cmd.exe,如下图所示,使用命令“adb install serialport.apk”安装 APK。

 

101.6.5 软件测试

软硬件全部准备就绪之后,打开开发板上的 Serialport 应用程序,如下图所示。

 

如上图所示,点击“setup”,弹出设置界面,如下图所示,在 Device 中将设备节点设置为 ttySAC3。

 

将“Baud rate”选项设置为 115200。 

 

设置结果如下图所示。 

 

打开源码包“topeet_android_serialport.7z”解压出的串口助手,对串口助手进行设置,串口号由设备管理器中查看,然后选择打开串口。 

 

返回开发板上的 Serialport 应用程序的组界面,如下图所示。 

 

serialport 软件中点击 Console,如下图所示,这个界面为发送和接收界面。 

 

在上图所示的“Emission”框中输入 123,点击回车可以在串口助手中收到发送的信息;在串口助手中发送框输入 abc,然后点击发送,可以在开发板的 Reception 中看到接收到的信息。 

 

 

另外这个串口测试软件,还有其它测试功能。

返回开发板上的 Serialport 应用程序的组界面,如下图所示。

 

会看到开发板不断发送数据。 

 

串口助手可以看到接收数据总数在增加,如下图所示,但是不显示接收到的具体数据。 

 

进入“Send 01010101”,开发板会不断发送二进制数据 01010101。 

 

串口助手选择 HEX 显示,则超级终端一直显示接收到的 16 进制数据 55。 

 

返回主界面,点击 About 可以查看软件的相关信息。 

 

至此,Android 的串口测试完毕。 

101.7 iTOP-4412-Android-Zigbee模块的使用

101.7.1 引言

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android4.0-Zigbee测试程序_V1.0.rar” 目录下可找到配套资料。

本文档适用于 iTOP-4412 开发板的全功能版 Zigbee 模块使用和开发,但也适于 4412 精英版,区别在于精英版不需要关注串口和 GPS 模块复用方面的调整,相对更简单一些。

产品清单

iTOP-4412-Zigbee 模块使用手册

Cadence 格式原理图和 PCB

altium designer 格式原理图和 PCB

1 份

1 份

1 份

CC2530 中文数据手册完全版

1 份

Linux 驱动

1 份(内核自带)

Linux-C 测试例程

1 份

Android 测试例程

1 份

QtE4.7 测试例程

1 份

QtE5.7 测试例程

1 份

Zigbee 模块

2 块

排线

1 条

5V 电源(选配)

usb 线(选配)

usb 转串口-pl2303(选配)

101.7.2 硬件参数

外观

 

接口参数

lUSB 接口  提供 5V/500mA 电源1。

l火牛座电源 5V(孔径 5.5mm*2.1mm)。

l双排母座  2.0mm*2*10。

lDB9 母座  标准串口 DB9。

产品特性

l模块上电后会自动组成多跳网状网络。

l每个模块都可以给网络中任意一个节点发送数据。

l带有确认传输功能,无线传输使用 CRC 校验,最多重 15 次。

l网络中任何节点故障不影响整个网络的运行,具有很强的抗毁性。

l最大可支持 130 个模块组成网络,模块地址可通过 Uart 进行修改。

l单个包长可达 63 字节,带有数据包缓冲机制。

l模块带有收/发包指示灯。

l可视距离单跳 70m。

串口参数

l数据位 8 位;

l起始位 1 位;

l停止位 1 位;

l校验位 无校验;

l波特率 2400 4800 9600 14400 19200 28800 38400 57600 115200 230400 125000 250000 500000。默认波特率为 115200。

硬件连接

liTOP 开发板和 Zigbee 模块 0 使用 RS232 连接,模块 0 需要 USB 或者 5V 供电。

lZigbee 模块之间单跳距离 70m。

lZigbee 模块 1 和 PC 连接,使用串口接口,Zigbee 模块 1 需要使用 usb 或者 5v 电源供电。

电气特性

参数

意义

工作电压

模块工作时的供电电压

3.3V 或者 5V

工作功率

模块工作时消耗的功率

小于 0.1W

无线发送功率

无线电的发送功率

4.5dBm

101.7.3 模块快速测试

将 Zigbee 模块接上电源(5V 电源或者 USB 供电);串口接到 PC 上,电脑如果没有串口,则需要使用 USB 转 RS232 串口。

模块和 PC 连接,如下图所示。

 

读取模块信息操作

打开串口调试助手“UartAssist.exe”(串口助手和本文档在同一目录下),如下图所示配置。

发送:FE 05 90 21 00 00 01 FF

接收:FE 07 21 90 00 00 21 02 00 FF

如下图:

 

读取和修改模块信息简易命令

读取模块命令

发送区

返回区

模块信息

查询 IP 地址

FE 05 90 21 00 00 01 FF

FE 07 21 90 00 00 21 BA 02 FF

地址

0x02BA

读取网络 ID

FE 05 90 21 00 00 02 FF

FE 07 21 90 00 00 22 16 20 FF

网络 ID

0x2016

读取信道

FE 05 90 21 00 00 03 FF

FE 06 21 90 00 00 23 13 FF

信道

0x13

读取波特率

FE 05 90 21 00 00 04 FF

FE 06 21 90 00 00 24 08 FF

波特率

0x08

注意:包格式说明请参考下一章。

修改模块命令

发送区

返回区

修改后模块信息

修改 IP 地址

FE 07 90 21 00 00 11 1F 00 FF

FE 05 21 90 00 00 00 FF

地址

0x001F

修改网络 ID

FE 07 90 21 00 00 12 91 19 FF

FE 05 21 90 00 00 00 FF

网络 ID

0x1991

修改信道

FE 06 90 21 00 00 13 12 FF

FE 05 21 90 00 00 00 FF

信道

0x12

修改波特率

FE 06 90 21 00 00 14 02 FF

FE 05 21 90 00 00 00 FF

波特率

0x02

重启包

FE 05 90 21 00 00 10 FF

无返回(模块绿灯亮 2S 左右)

注意:配置完模块之后一定要发送重启包,配置才会生效。

 

101.7.4 Zigbee模块传输协议

组网

组网通信概述

Zigbee 模块是一种自组网多跳无线通信模块。模块无线频率为 2.4GHz~2.45GHz,属于全球免费的无线频段。该模块工作时,会与周围的模块自动组成一个无线多跳网络,此网络为对等网络,不需要中心节点,网络包含以下可配置参数:

参数

说明

取值要求

地址

用于区分同一个网络中不同模块的身份标识。

取值范围为 0x0001~0xfffe,同一个网络中的模块,地址必须不相同。

信道

与 IEEE802.15.4 一致的,模块将.4GHz~2.45GHz 之间的频率划分为 16 个信道,每个模块可工作在其中一个信道上,信道不同的模块不会互相干扰。

取值范围为 0x0B~0x1A,同一个

网络中的模块信道必须相同。

网络ID

用于区分同一个信道可能存在的多个不相同的网络。信道相  同,网络 ID 不同的模块不会互相通信,但同时工作时通信速率会变慢。

取值范围为 x0001~0xfffe,同一个网络中的模块网络 ID 必须相同。

这些参数的配置将在下面进行说明。

将多个 Zigbee 模块配置成地址不相同,信道和网络 ID 相同的状态,模块将组成一个网络。微控制器(MCU)或者电脑通过 Uart 告诉模块目标地址和待发送的数据,模块会通过网络选择最优的路径,将信息传输给目标模块,而目标模块将通过 Uart 输出源地址和上述的数据。

Zigbee 模块使用定向扩散协议寻找路由,这种路由算法会记录网络的状态,每个节点平均可记录 130 个目标节点的路由,在网络建立后传输速度和传输延时可到达最优。但这种算法网络建立较慢,在节点刚刚启动时,网络需要 1~5 分钟的时间重新生成路由,在这段时间内网络使用洪泛路由进行数据通信,此时网络的传输速度较慢。

网络性能

参数

意义

最大节点数

一个可正常工作的网络可以容纳的模块数量。

典型值为 130。

最大包长度

每个包的最大长度(包含端口的地址信息)。

63Byte。

传输容量

只有一个节点发送数据时的最大发送速率。

因为发送包的路由信息会占用一定的带 宽,每个包的长度越长,发送效率越高。每个包包含 3Byte 数据时,2400Bit/s。

每个包包含 30Byte 数据时,10KBit/s。

最大跳数

包传输的最多跳数。

15 跳。

丢包重传次数

传输失败后,允许重新尝试传输的次数

最多 15 次,网络负载高时,最少 5 次。

重传时间间隔

传输失败后,下次传输的时间

0.3 秒

无线电速率

无线传输信号的速度。

250KBit/s

空中延时

一个包开始输入模块到传输后从另一个模块输出的时间

节点间为单跳时,小于 10mS。

无线电频率

2.4GHz~2.45GHz。

串口通信协议

Uart 参数

Zigbee 模块使用 Uart 接口作为数据交互接口,接口的参数如下:

数据位 8 位

起始位 1 位

停止位 1 位

校验位 无校验

Uart 接口的波特率可以被用户设置为以下值:

2400 4800 9600 14400 19200 28800 38400 57600 115200 230400 125000 250000 500000

几乎任何单片机的 Uart 输出都可以和 Zigbee 模块的 Uart 进行通讯,电脑串口则可以使用 MAX3232 芯片转换为 Uart 与 Zigbee 模块进行通信。

包分割

在通信过程中,最常见的场合是单片机通过 Uart 告诉模块这样的信息:

“将数据 00 AE 13 33 发往地址为 0003 的模块,目标端口为 90,源端口为 91。” 对于单片机,需要将这些信息整理成一个包,通过 Uart 发给模块:

FE 08 91 90 03 00 00 AE 13 33 FF

此包的说明如下表:

信息名

长度

说明

举例

包头

2byte

包头由 FE 和包的长度组成,长度为包的数据长度加 4。

FE 08

源端口号

1byte

包的源端口号。

91

目的端口号

1byte

包的目的端口号。

90

远程地址

2byte

远程模块的地址,当发送数据给模块时,远程地址为目标模块的  地址,目标地址为 0x0000 表示此包发给本模块,目标地址为0xFFFF 的包会被发往本网络中的所有节点。当从模块接收数据时,远程地址是数据的源地址。

03 00

数据

可变

想要传输的数据。

00 AE 13 33

包尾

1byte

固定为 FF 表示一个包传输完成。

FF

远程地址长度为 2byte,使用小端模式进行传输,即先传输低 8 位,再传输高 8 位。

传输过程中如果遇到数据部分、地址或者端口号中出现 FF,则使用 FE FD 来代替;如果出现 FE,则用 FE FC 来代替。以免传输过程中出现的包头和包尾,使接收方误判断。在传输中这种替换称为“转义”。

包长度不会受到转义的影响,例如发送的数据为 09 FF 时,替换为 09 FE FD,但包头中的数据长度仍然按照 2+4 来计算,这样,发送的包如下:

FE 06 91 90 03 00 09 FE FD FF

虽然一共传输了 7 个字节,但包长为 6。如果地址、端口号中出现了 FF、FE 也需要进行转义。

端口

Zigbee 模块设计了端口的概念,接收方收到一个包时,会根据包的端口号,选择对应的程序处理包。端口号的取值范围是 0x00~0xFF,其中 0x00~0x7F 端口由模块内部程序占用, 0x80~0xFF 端口开放给 Uart 连接的 MCU 或者电脑。

当 MCU 给一个模块发送数据时,如果源端口号填写了小于 0x80 的值,则包无法发出; 如果目的端口号填写了小于 0x80 的值,接收方模块的内部程序将处理这个包并执行相关的动作,而不是从 Uart 发出这个包。

例如发送这个包:

FE 05 91 20 03 00 0A FF

则会让地址为 03 00 的模块自带的红灯点亮 1 秒,而他的 Uart 不会输出数据。

模块的内部端口大部分用于调试设计,也有一部分开放给用户,这些端口将在第 27.1.4节说明。

通信举例

一个节点给另一个节点发送数据

例如将多个节点组成如下网络,在本文中节点特指 PC 或 MCU 和 Zigbee 模块组成的硬件设备。

MCU 采集到温湿度为温度 23℃,湿度 60%,则无线传输的数据是 0x17,0x3C。节点和电脑都使用 A0 端口传输温度,A1 端口传输湿度,MCU 已知连接电脑的模块地址为 0x000F, 则 MCU 发给模块的数据为:

FE 05 A0 A0 0F 00 17 FF FE 05 A1 A1 0F 00 3C FF

则电脑串口收到的数据为:

FE 05 A0 A0 01 00 17 FF FE 05 A1 A1 01 00 3C FF

电脑串口收到的数据中远程地址被替换为了源节点的地址。

一个节点给另一个节点的内部端口发送数据

这里仍然使用上例的网络。需要寻找地址为 0x0002 的节点时,PC 命令此模块的红灯点亮 5 秒,则 PC 发送:

FE 05 A3 20 02 00 32 FF

可以看到地址为 0x0002 的模块红灯点亮 5 秒。

一个节点给自己的内部端口发送数据

模块可以给自己的端口发送数据。这一部分在下例中有更详细的说明。

不推荐的数据传输情况

这里仍然使用上例的网络,不推荐的传输情况有以下两种。

1.模块使用小于 80 的端口号作为源端口号,例如模块发送 FE 05 20 20 02 00 32 FF 则模块会收到一个端口号错误报告包:FE 06 22 20 02 00 E0 20 FF,实际上,模块不会传送任何数据,所以这样的传输是不推荐的。

2.模块给自己的某个端口传输数据。例如地址为 0x000F 的节点,传输数据给自己的 80 端口,模块发送 FE 05 81 80 0F 00 32 FF,则自己会收到 FE 05 81 80 0F 00 32 FF,节点的单片机自己给自己传输了一条数据,这显然是不必要的,所以这样的传输是不推荐的。

 

101.7.5 模块内部端口

概述

这一节将介绍一些模块内部已经规定的端口,包括这些端口可以接受的包,以及这些端口会发出的包。在对包进行说明时,本文将仅对数据部分进行说明,有关包结构的部分将不再说明。包结构举例。

数据

长度

意义

命令

1Byte

必须为 0x12。

新网络 ID

2Byte

想要设置的新网络 ID 值,新网络 ID 必须合法。

 

此包是一个端口 21 可以接受的包,则实际通过 Uart 发出的数据是:

FE 07 91 21 00 00 12 98 88 FF,其中 91 可以是任意端口号,00 00 是目标地址,12 为命令,98 99 为新网络ID。关于这个包的构成请参考本章前面 27.1.3小节。

红灯闪烁控制端口

端口 0x20 用于控制模块的红色 LED 点亮,发送此包可以使模块的红色 LED 点亮一定时间。此端口可接收以下包

点亮 LED 包

数据

长度

意义

时延

1Byte

红色 LED 点亮的时间 = 此参数 × 100ms。

发送这个数据给此模块可以点亮红色 LED,用户既可以给本地模块发送这个包,也可以给远程模块发送这个包。

这一功能用于测试一个指定地址的模块是否包含在网络中,如果想从许多节点中迅速找到某个特定地址的节点,也可以使用此功能。

基本信息管理端口

端口 0x21 用于配置模块的基本参数,包括地址、网络 ID、信道和波特率。

此端口只接受远程地址填写 0x0000 的包,因此,这些信息的读取和修改只能通过本模块的 Uart 进行,不能远程操作。

读取信息包

数据

长度

意义

命令

1Byte

必须为以下值中的一个: 0x01 读取地址;

0x02 读取网络 ID;

0x03 读取信道编号;

0x04 读取 Uart 的波特率。

 

发送这个数据后,模块会根据修改的内容返回一个返回地址包、返回网络 ID 包、返回信道包或者返回波特率包。

这些包将会携带对应的配置信息。

设置信息

设置地址包

数据

长度

意义

命令

1Byte

必须为 0x11。

新地址

2Byte

想要设置的新地址值,新地址必须合法。

 

发送这个数据后,模块的地址将被修改为新地址给定的值,除非此值不合法。操作完成后,此端口会返回一个响应包。

设置网络 ID 包

数据

长度

意义

命令

1Byte

必须为 0x12。

新网络 ID

2Byte

想要设置的新网络 ID 值,新网络 ID 必须合法。

 

发送这个数据后,模块的网络 ID 将被修改为新网络 ID 给定的值,除非此值不合法。操作完成后,此端口会返回一个响应包。

设置信道包

数据

长度

意义

命令

1Byte

必须为 0x13。

新信道

1Byte

想要设置的新信道值,新网络信道必须合法。

发送这个数据后,模块的网络 ID 将被修改为新网络 ID 给定的值,除非此值不合法。操作完成后,此端口会返回一个响应包。

设置波特率包

数据

长度

意义

命令

1Byte

必须为 0x14。

新波特率

1Byte

想要设置的新波特率读数,此读数和实际波特率的关系可参照表格 波特率-读数对照表。

发送这个数据后,模块的波特率将被修改为新的的值,除非此值不合法。操作完成后,此端口会返回一个响应包。

设置信息包包含设置地址,设置网络 ID,设置波特率,设置信道四种。这些设置信息在更新以后,不会立即执行,模块会使用原有的参数继续工作,此时如果希望写入的参数生效, 则需发送重启命令包给模块。在设置地址信息且没有发送重启命令的情况下,如果模块断电后再次启动,设置的信息也将丢失。一旦设置这些信息并发送重启命令包,这些信息不会因为断电和任何形式的复位丢失。

重启命令包

数据

长度

意义

命令

1Byte

必须为 0x10 更新信息并重启。

此端口回复的包

响应包

数据

长度

意义

响应类

1Byte

响应类型可能是以下字节中的一个:

0x00 操作完成;

0xF0 此端口禁止远程访问,如果被远程访问,则返回此响应;

0xF8 命令错误;

0xF9 包的长度与命令要求的不相符;

0xFA 包的值不可用,例如信道设置包中的信道大于 1A,波特率使用未定义的数字,地址使用;

0x0000 或 0xFFFF,或者网络 ID 使用 0x0000 或 0xFFFF。

返回地址包 

数据

长度

意义

命令

1Byte

必须为 0x21。

地址

2Byte

当前地址,如果节点曾经收到过设置信息包,并且没有进行更新,则此处返回最新设置的值。

返回网络 ID 包 

数据

长度

意义

命令

1Byte

必须为 0x22。

网络 ID

2Byte

当前网络 ID,如果节点曾经收到过设置信息包,并且没有进行更新,则此处返回最新设置的值。

返回信道包 

数据

长度

意义

命令

1Byte

必须为 0x23。

信道

1Byte

当前信道,如果节点曾经收到过设置信息包,并且没有进行更新,则此处返回最新设置的值。

返回波特率包 

数据

长度

意义

命令

1Byte

必须为 0x24,

波特率

1Byte

当前波特率,如果节点曾经收到过设置信息包,并且没有进行更新,则此处返回最新设置的波特率读数,此读数和实际波特率的关系可参照波特率-读数对照表。

 波特率-读数对照表

波特率

读数

波特率

读数

2400

0x00

57600

0x07

4800

0x01

115200

0x08

9600

0x02

230400

0x09

14400

0x03

125000

0x0A

19200

0x04

250000

0x0B

28800

0x05

500000

0x0C

38400

0x06

设置说明 

这一节将举例说明如何设置模块。

首先读取模块现在的设置信息,当然,如果不关心当前模块的信息也可以不进行读取。可发送的信息见下表,

读取信息包

 

发送信息

收到信息

意义

FE 05 90 21

00 00 01 FF

FE 07 21 90 00

00 21 0F 00 FF

此命令读取模块的地址,模块返回一个返回地址包,带有下划线的数据为模块的地址:0x000F。

FE 05 90 21

00 00 02 FF

FE 07 21 90 00

00 22 88 19 FF

此命令读取模块的网络 ID,模块返回一个返回网络 ID包,带有下划线的数据为网络 ID:0x1988。

FE 05 90 21

00 00 03 FF

FE 06 21 90 00

00 23 0F FF

此命令读取模块的信道,模块返回一个返回信道包,带有下划线的数据为模块的信道,信道为 0x0F。

FE 05 90 21

00 00 04 FF

FE 06 21 90 00

00 24 08 FF

此命令读取模块的波特率,模块返回一个返回波特率包带有下划线的数据为模块的波特率读数,0x08 参照波特率-读数对照表,模块的波特率为 115200。

请注意,只有使用 0x0000 作为目标地址才能与 21 端口进行通信,0x0000 即模块的本地地址。

然后写入待配置的信息。

设置信息包

 

发送信息

意义

FE 07 90 21 00 00 11 1F 00 FF

将地址配置为 0x001F。带有下划线的部分为配置的目标地址,地址不能配置为 0x0000 和 0xFFFF。

FE 07 90 21 00 00 12 91 19 FF

将网络 ID 配置为 0x1991。带有下划线的部分为配置的目标网络ID,网络 ID 不能配置为 0xFFFF。

FE 06 90 21 00 00 13 12 FF

将信道配置为 0x12 信道。带有下划线的部分为配置的目标信道,信道的范围是 0x0B 到 0x1A。

FE 06 90 21 00 00 14 02 FF

将波特率配置为 9600。参照波特率-读数对照表,9600 对应的波特率读数为 02,即带有下划线的数据。

向模块发送配置命令后,模块会返回 FE 05 21 90 00 00 00 FF,表示配置完成,返回信息会指示发包的错误,错误信息详见响应包 。

最后如果配置信息确认无误,向模块发送 FE 05 90 21 00 00 10 FF,模块会进行重启, 然后使用新的参数进行工作。

错误报告端口

端口 0x22 用于报告通信错误,用户不能向这个端口发送数据,当用户发送数据使用不合法的地址时,这个端口会发送错误报告包:

端口号错误报告包: 

数据

长度

意义

错误类型

1Byte

必须为 0xe0。

异常端口

1Byte

用户使用的不合法的端口号。

 

当用户发送源地址小于 0x80 的包时,将会收到来自这个端口的错误报告。

连接质量测试端口:

端口 0x23 用于探测两个模块之间的双向链路质量,链路质量为两个模块之间互相发包时,收到数据的信号强度的平均值,信号强度取决于两个模块之间的距离,以及有无遮挡物。如果已知两个模块之间没有遮挡,这个值可以用来估计模块之间的距离。

此端口可接收以下包:

连接质量采集命令

数据

长度

意义

采集目标地址

2Byte

采集 RSSI 的另一个模块的地址,不可为 0x0000 和0xFFFF。

 

下面是一个数据包的例子: FE 06 80 23 01 00 02 00 FF

这个命令将会采集两个模块之间的 RSSI,其中一个模块为收到此包的模块,即地址为0x0001,另一个模块为 0x0002。即采集目标地址。如此,模块 0x0001 会给模块 0x0002 发送一个采集 RSSI 命令,模块 0x0002 在收到此命令后返回一个 RSSI 数值,模块 0x0001 收到此包后,将综合两个数据,返回此包:

FE 07 23 80 XX XX 02 00 12 FF

连接质量采集返回

数据

长度

意义

采集目标地址

2Byte

采集 RSSI 的另一个模块的地址,不可为 0x0000 和 0xFFFF。

连接质量参数

1Byte

有符号数。表示两个节点之间的连接质量,数值越高表示两个节点间的连接质量越好。如果此数值为-128(0x80)说明节点没有收到对方返回的包,即数据。

这个包可以远程发送,即 A 节点可以命令 B 采集 B 到 C 的链路质量并返回给 A;

采集链路质量与两个模块之间是否建立链路没有关系,没有建立链路仍然能够进行采集;

采集链路质量的返回值如果是 128 说明采集信息发送失败了,这有可能是两个节点距离太远,也有可能是因为当时网络的通信非常频繁,因此采集信息无法发出。

可控 TTL 输出

Zigbee 模块上的小模块的 Pin4 和 Pin5 为测试串口输出,在用户正常使用时这两个端口可以作为 TTL 输出使用,通过给 0x44 和 0x45 发送指令可以分别控制 Pin4 和 Pin5 的输出。

TTL 控制命令

数据

长度

意义

命令

1byte

只能为以下三个数值: 0x11 命令端口输出高电平;

0x10 命令端口输出低电平;

0x12 读取当前端口输出的电平值。

在发送控制命令后,端口的电平值会发生改变。

发送 0x12 后模块将返回当前的端口电平状态,返回数据如下。

TTL 控制返回

数据

长度

意义

命令

1byte

只能为以下三个数值: 0x01 表示端口输出高电平;

0x00 表示端口输出低电平。

可控 TTL 输出可以用于控制一些最简单的控制器,例如通过继电器或者场效应管控制灯光,风扇,电磁阀等设备,或者直接连接指示灯。

一般情况下控制这些设备的频率不应该过高,否则会消耗大量网络资源。

Pin4 和 Pin5 的控制命令完全相同,端口 0x44 控制 Pin4,端口 0x45 控制 Pin5。

101.7.6 软件例程

和开发板的硬件连接

 

如上图所示,zigbee 模块通过 RS232 公对公(上图中黄色器件),然后接到串口线,串口线另一端接到开发板上,如下图所示,红色框中的串口和 zigbee 模块相,右边的是调试串口。 

 

另外,这个串口和 GPS 复用,不能焊接 R160 和 R161 电阻。

Android4.4 源码修改-屏蔽 GPS

在 Android4.4 源码中,GPS 软件会霸占这一组串口,导致无法这一组串口只能发送不能接收。所以在测试 Android4.4 的 APP 之前,需要修改源码,重新编译 Android4.4 源码, 烧写新的镜像。

修改方法如下,在 Android4.4 源码中,在“/device/samsung/common/libgps”目录下,如下图所示。将“Android.mk”改为“Android.mk_back”,这样就不会编译 GPS 部分,将 GPS 部分屏蔽。

 

Android4.4 的测试例程

iTOP-4412 开发板 Zigbee 模块,Android4.4 例程是“iTOP-4412-Android4.4-Zigbee 测试程序_V1.0.zip”压缩包中。

软件开启之后界面如下所示。

 

iTOP-4412 开发板全能板,使用 Android4.4 系统,电阻 R20 和 R21 需要默认焊接, R160 和 R161 需要去掉,不然接收不到数据。串口设备节点使用“/dev/ttySAC3”。

通过开发板和 PC 设置 Zigbee 和发送接收数据操作方法类似、命令相同。

软件设置和数据发送举例

模块 0 和模块 1 正常通信模块的信道和网络 ID 必须相同,IP 地址必须不同。如果不满足,则需要参考本章前面 27.7.3 小节来设置。

模块 0 设置:

模块 0 查询 IP

发送区

返回区

模块信息

FE 05 90 21 00 00 01 FF

FE 07 21 90 00 00 21 03 00 FF

03 00

模块 0 读取网络 ID 

发送区

返回区

模块信息

FE 05 90 21 00 00 02 FF

FE 07 21 90 00 00 22 16 20 FF

16 20

模块 0 读取信道 

发送区

返回区

模块信息

FE 05 90 21 00 00 03 FF

FE 06 21 90 00 00 23 13 FF

23 13

 

模块 1 设置:

模块 1 查询 IP 地址

发送区

返回区

模块信息

FE 05 90 21 00 00 01 FF

FE 07 21 90 00 00 21 04 00 FF

04 00

模块 1 读取网络 ID 

发送区

返回区

模块信息

FE 05 90 21 00 00 02 FF

FE 07 21 90 00 00 22 16 20 FF

16 20

模块 1 读取信道 

发送区

返回区

模块信息

FE 05 90 21 00 00 03 FF

FE 06 21 90 00 00 23 13 FF

23 13

 

发送和接收数据测试

模块 0 发送到模块 1

模块 0 发送到模块 1

解释

FE 08 91 90 04 00 00 AE 13 33 FF

04 00 是模块 1 地址

 模块 1 发送到模块 0

模块 1 发送到模块 0

解释

FE 08 91 90 03 00 00 AE 13 33 FF

03 00 是模块 0 地址

其它测试例程

另外提供了 QtE 的例程和 linux-C 的例程,和文档打包在一起。硬件连接方法一样。这里只介绍 linux-c 的测试方法,QtE 例程和 Android 类似。

拷贝 linux-c 的例程到文件系统中,如果是 Android 系统,则需要屏蔽 GPS。如下图所示,作者使用修改之后的 Android4.4 源码,将 zigbee 二进制文件拷贝到“/data”目录下, 并用“chmod 777 zigbee”修改权限。

拷贝 linux-c 的例程到文件系统中,如果是 Android 系统,则需要屏蔽 GPS。如下图所示,作者使用修改之后的 Android4.4 源码,将 zigbee 二进制文件拷贝到“/data”目录下, 并用“chmod 777 zigbee”修改权限。

 

然后使用命令“./zigbee 0 FE 05 90 21 00 00 01 FF”,如下图所示,可以看到提示发送和接收都成功。其它命令只需要修改后面的参数即可。 

 

101.8 多媒体应用

文档全称是“iTOP-4412-Android-音频和视频多媒体应用程序源码”,源码可以进行Android 系统音频和视频的测试。在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-音频和视频多媒体应用程序源码.zip” 目录下可找到配套资料。

101.9 远程操控开发板

文档全称是“iTOP-4412-Android-远程操控开发板测试例程”,文档介绍了 android 系统下远程控制开发板的实现过程。在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-远程操控开发板测试例程.zip” 目录下可找到配套资料。

安装app

本系统一共包括两个app:

第一个app是iTOPservice,这是服务器,安装到开发板上;第二个app是iTOP-4412,这是客户端,安装在android手机上。

  1. 服务器iTOPservice在开发板上的安装:在电脑上安装qq手机助手(或者其它手机助手),打开开发板后用OTG先将开发板和电脑连接。电脑显示检测到开发板后,就可以使用手机助手安装app了。
  2. 客户端iTOP-4412在手机上的安装:可以按照开发板安装app 的方法,也可以在qq上我的设备里将app传到手机上进行安装。

 

 

二.使用说明

首先必须保证开发板和手机连接到同一个路由器上,其次开发板的ip地址必须是固定的:192.168.1.109 。所以这就涉及到修改开发板的IP地址,方法如下:

将开发板连接到路由器上;

长按连接的路由器,知道弹出一个选择对话框。在这个对话框里有一个“修改网络”的选项,点击它,点击它会弹出另一个对话框;

在这个对话框里选中“显示高级选项”;

点击“IP设置”这一栏;

选中静态;

点击IP地址将它设置成192.168.1.109,其它的不用变,一直点下一步直到完成,保存。

至此IP地址已经设置成了192.1681.1.109 。大家也可以在百度上搜索“安卓手机固定IP上网设置”,按照说明设置。

以上设置完成后,点击开发板服务器app的“启动”按钮,然后点击手机客户端app的连接按钮,建立连接后就可以实施控制了。如果出现可以连接上但是无法操控的情况,则把两端的app都关闭然后重新建立连接即可。

101.10 调节音量和亮度

文档全称是“iTOP-4412-Android-调节音量、亮度 Layout 应用程序源码”,文档介绍了 android 系统下音量和亮度调节。在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-调节音量、亮度 Layout 应用程序源码.zip” 目录下可找到配套资料。

101.11 摄像头ov5640的测试例程

资料包全称是“iTOP-4412-Android-摄像头 ov5640-500w 测试例程源码”,

iTOP-4412-Android-摄像头 ov5640 二维码扫描应用程序源码”,这两个文档介绍了 Android 系统下 ov5640 摄像头的使用。在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-摄像头 ov5640 二维码扫描应用程序源码.rar” 目录和“iTOP4412开发板资料汇总(不含光w盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-摄像头 ov5640-500w 测试例程源码.rar”可找到配套资料。

101.11.1 Android摄像头的使用

1、在android studio 中新建一个Demo,命名为CarmerDemo,如下图所示

 

2、把activity_main.xml设置布局为如下图所示 

 

3、创建Camera 并写出startCamera()和stopCamera()如下图所示 

 

4、onCreate()方法的代码如下图所示 

 

5、定义Callback 对象(carme_call),并在其中调用startCamera()和stopCamera(),如下图所示 

 

6、最后记得在AndroidMainfest.xml 文件中配置允许使用摄像头的权限

<uses-permission  android:name="android.permission.CAMERA"></uses-permission>

7、做完以上步骤就可以尝试测试了。

101.11.2 调用摄像头,拍照,预览照片

1、接着上一篇《摄像头的调用》,我们先在MainActivity中写一个输出流的方法如下图所示,并在AndroidManifest.xml文件中设置输入流权限。

 

2、创建一个Layout.xml布局,设置布局如下图所示 

 

3、创建一个PictureShowActivity 代码如下图所示。创建好后记得在AndroidManifest.xml中声明。 

 

4.设置OnClick监听拍照按钮的监听,代码如下图所示 

 

5、以上步骤设置完后,就可以尝试测试了。 

101.12 Android系统的root工具

资料包全称是“iTOP-4412-Android-root 工具”。

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-root 工具.zip” 目录下可找到配套资料。

101.13 USB摄像头预览拍照

资料包全称是“iTOP-4412-Android-UVCcam_v2.0(usb 摄像头支持预览拍照录像)”。

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-UVCcam_v2.0(usb 摄像头支持预览拍照录像).rar” 目录下可找到配套资料。

101.14 调用系统摄像头

资料包全称是“iTOP-4412-Android-调用系统摄像头 CameraDemo 应用程序源码”。

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-调用系统摄像头 CameraDemo 应用程序源码.zip” 目录下可找到配套资料。

101.15 iTOP-4412 开发板Android-RFID 开发测试教程

101.15.1 引言

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-RFID测试例程-全能版_v4.0底板_v1.1.zip” 目录下可找到配套资料。

在 Android4.4.4 的默认内核镜像中并不包含该 RFID 模块的 linux 驱动,在压缩包中有rc522.c 文件,这个是 RFID 的驱动文件,需要先将驱动拷贝到内核对应的目录,然后进行配置。

Android 测试例程提供“iTOP-4412-Android-RFID_V1.x”压缩包。测试 APK 是压缩包下“bin”目录中的“rfidtest.apk”文件。

101.15.2 硬件连接

若开发板连接上“sdiowifi 模块”并且已经打开 wifi,则 wifi 能正常使用,而 RFID 无法使用。

本文档测试使用一块开发板,一个 RFID 模块。使用排线连接开发板和 RFID 模块。继电器模块的端口,连接开发板上的“GPIO”端口。

连接后如下图所示。

 

硬件连接完成之后,就可以进行软件测试了。

101.15.3 内核修改

步骤如下:

1、将提供的驱动程序代码“rc522.c”文件,拷贝到在内核源码的“iTop4412_Kernel_3.0/drivers/spi/”目录下。

 

2、修改“iTop4412_Kernel_3.0/drivers/spi/Makefile”。使用“vim”编辑器打开“Makefile”文件。 

 

打开“Makefile”文件后,在文件中添加“obj-$(CONFIG_SPI_RC522) += rc522.o”。 

 

保存退出。

3、修改“iTop4412_Kernel_3.0/drivers/spi/Kconfig”。

使用“vim”编辑器打开“Makefile”文件。

 

打开“Makefile”文件后,在文件中添加“ 

config SPI_RC522
tristate "RC522 Moudle driver support" 
depends on EXPERIMENTAL
help
This supports RC522 Moudle drivers”

 

保存退出。

4、修改“iTop4412_Kernel_3.0/arch/arm/mach-exynos/mach-itop4412.c”。使用“vim”编辑器打开“mach-itop4412.c”文件:

 

在第 926 行,加入以下内容: 

#ifdef CONFIG_SPI_RC522
{
.modalias = "rc522",
.platform_data = NULL,
.max_speed_hz = 10*1000*1000,
.bus_num = 2,
.chip_select = 0,
.mode = SPI_MODE_0,
.controller_data = &spi2_csi[0],
}
#endif”

如下图:

 

把 1192 行修改成:

#ifndef CONFIG_CAN_MCP251X && !defined(CONFIG_SPI_RC522)

 

把 1243 改成

“#ifndef CONFIG_CAN_MCP251X && !defined(CONFIG_SPI_RC522)”

 

把 1781 行改成:

“#if !defined(CONFIG_CAN_MCP251X) && !defined(CONFIG_SPI_RC522)”

 

把 2541 行改成:

“#if !defined(CONFIG_CAN_MCP251X) && !defined(CONFIG_SPI_RC522)”

 

把 4125 行修改成:

“#if !defined(CONFIG_CAN_MCP251X) && !defined(CONFIG_SPI_RC522)”

 

保存退出。

5、编译内核、并将编译生成的内核镜像烧写到板子上。

 

101.15.4 应用安装及测试

开发板运行 Android 系统之后,将开发版用 OTG 连接到电脑,。在电脑上安装好“360 手机助手”。双击源码的“bin”目录下的“rfidtest.apk”,在弹出的对话框中选择“开始发送”。若内核是带 wifi 驱动的内核则需要关闭 wifi 后重启一下开发板。

 

打开 APP。第一次打开 APP,若弹出个“超级用户请求”对话框,选择“永久记住选择”,点击“允许”。如下图所示。 

 

第一次打开 APP,若没有弹出上述“超级用户请求”对话框,则每次使用前都需要在超级终端分别输入以下命令修改设备节点权限:su root、chmod 777 /dev/rc522 ,如下图所示。 

 

程序运行界面如下图所示。 

 

把要读取信息的 RFID 标签放到模块上,如下图所示。 

 

点击开发板屏幕上的“RECV ”按钮读取模块上的卡片信息。读取成功入下图所示。 

 

读取失败如下去所示。 

 

点击“CLEAR”按钮可清理文本框信息。 

101.16 iTOP-4412-Android切换GPS

文档全称是“iTOP-4412-Android 系统源码-如何切换 GPS(型号 GNS7560 和UBLOX)”,文档介绍了修改 android 系统源码,切换 GPS 型号的方法。

101.17 iTOP-4412-Android-RS485模块使用教程

101.17.1 引言

 

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android-485测试例程-全能板_v1.1.zip” 目录下可找到配套资料。

购买 485 模块的用户可在“CAN_485_Module_v1.x”硬件资料压缩包中,找到对应的Cadence 格式的原理图和 PCB,AD 格式的原理图和 PC,PDF 格式的原理图。在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\CAN_485_Module_v1.1_20180808.zip” 目录下。

RS-485 模块的 Linux 驱动是内核目录下的“drivers/char/max485_ctl.c”文件,默认内核镜像中已经包含该驱动。

Android 测试例程提供“iTOP-4412-Android-Max485_V1.x”压缩包,Android4.0 和Android4.4 的测试程序一样。测试 APK 是压缩包下“bin”目录中的 max485test.apk 文件,该测试程序默认波特率是 38400。

101.17.2 硬件连接

本文档测试使用两块开发板,两个 RS-485 模块。用户在测试自己的 RS-485 设备的时候,可以将其中一块开发板和 RS-485 模块,替换为自己的 RS-485 设备。

使用排线连接开发板和 RS-485 模块。RS-485 模块的 20pin 端口连接开发板上的“GPIO/CAN/485”端口。

模块 1 连接后如下图所示。

 

模块 2 和模块 1 连接时 A 对 A,B 对 B,如下图所示。模块 2 和另外一块开发板连接, 连接方式和模块 1 相同。 

 

硬件连接完成之后,就可以进行软件测试了。

101.17.3 软件测试

开发板运行 Android 系统之后,安装 max485test.apk 文件,打开 APK,界面如下图所示。

 

然后输入要发送的字符,如下图所示,点击“SEND”按钮发送字符信息。 

 

在另外一块开发板的 APP 界面,点击”RECV”按钮接收来自 485 模块的字符信息,接收到字符信息,如下图所示。 

 

101.18 iTOP-4412-步进电机测试例程

本章介绍步进电机在开发板上的使用,除了 Android 系统以外,本文档同样适合 Linux 最小系统、QT 等。

在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-步进电机-驱动和测试例程_v1.0.zip” 目录下可找到配套资料。

和本文档配套的资料有:

内核配置和步进电机驱动补丁包: topeet_modules_20190319.tar.gz

linux-C 的测试例程:iTOP-4412-linuxc-stepmotor_V1.0.zip

QtE 的测试例程:iTOP-4412-QtE4.7-step_moter_V1.0.tar

Android 的测试例程:iTOP-4412-Android4.0-stepmotortest-V1.0.zip

请注意,在光盘的内核源码中,没有步进电机的驱动,需要添加步进电机的驱动之后才能使用。步进电机使用的是 camera 接口上的 IO,需要屏蔽掉 camera 驱动。

 

101.18.1 硬件连接

硬件连接分为两个部分,供电和控制线的连接。如下图所示,是步进电机的原理图部分。

 

端子 j2 可以看出,需要通过排线和开发板的 camera 接口。上图右半部分,可以看出供电可以采用 5v 电源或者 usb 供电的方式。

排线链接,如下图所示。火牛座和 USB 线供电二选一,如下图所示是 usb 线供电。

 

这里务必需要注意的是,如果大家使用的是默认的光盘内核镜像,请不要给步进电机上电太长时间。因为步进电机驱动芯片,默认状态是上拉,会导致步进电机处于不正常的状态,会让电机发热。

需要将步进电机驱动配置完成之后,步进电机驱动在初始化的时,将步进电机的驱动芯片拉低,这样步进电机就会处于准备工作状态,这种状态不会有电流,不会导致步进电机发热!

101.18.2 内核配置

内核配置和补丁包

由硬件部分可知,步进电机使用的是 camera 接口,内核默认状态会编译 camera 驱动, camera 驱动会占用电机用到的四个 GPIO,所以首先需要在内核配置中将 camera 驱动去掉。然后添加驱动补丁包,重新编译内核,烧写到内核中。

进入内核目录,配置所需要的缺省文件,使用命令“make menuconfig”,如下图所示,进入配置界面。

选中“Device Drivers --->”进入。

 

如下图所示,选中“Multimedia support --->”,进到选项中。 

 

如下图所示,进入“Video capture adapters --->”选项。 

 

如下图所示,取消“OmniVision OV5640 sensor support ”,这个是摄像头 ov5640 的配置选项。 

 

如上图所示,取消 ov5640 的选项,然后保存退出,得到新的.config 文件。

修改 Makefile 文件

然后需要修改 Makefile 文件。打开“drivers/char/Makefile”文件,如下图所示增加以下代码:

obj-y += topeet_modules/

 

然后保存退出。

补丁包

驱动补丁包“topeet_modules_20190319.tar.gz”和文档放在一起。

补丁包同时也放在网盘链接“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\topeet_modules”目录下的“topeet_modules_20190319.tar.gz”下,日期可能会有变化,使用最新日期的压缩包即可。

拷贝到“drivers/char”目录下,使用命令“tar -vxf topeet_modules_20190319.tar.gz”解压,如下图所示。

 

内核编译和测试

重新编译内核,烧写到开发板,启动开发板,如下图所示。在“/dev”目录下可以看到有设备节点“step_motor_driver”生成。

 

101.18.3 Linux-C的测试例程

然后拷贝和本文档一起打包的“iTOP-4412-linuxc-stepmotor_V1.0.zip”压缩包中“step_motor_app”文件到开发板(U 盘,tf 卡或者 nfs 都可以)。

如下图所示,拷贝到开发板上,作者的系统是最小 Linux 系统。如果是 Android 系统, 则需要使用“chmod 777 /dev/step_motor_driver”修改权限。

 

使用命令“./step_motor_app”如下图所示,可以看到有如下提示。 

 

步进电机的测试例程需要传递参数。

第一个参数是 R 或者 L,用于设置步进电机的方向;

第二个参数是步角距,步角距是 5.625/64 度,4096 个步角距就是 360 度,所以这个参数的范围是 0-4096,取值 4096 是一圈,最小建议为 10。

第三个参数是转速,建议取值为 3000 到 20000 之间,小于 3000 转速不稳定。提供了一个 demon 为“./step_motor_app R 4076 3000”。

使用命令“./step_motor_app R 4076 3000”,可以看到步进电机在右转,转一圈之后就会停下,“./step_motor_app L 4076 3000”会左转一圈之后停止,用户可以执行测试其它参数。

 

101.18.4 QtE4.7 的测试例程

和本文档一起打包的“iTOP-4412-QtE4.7-step_moter_V1.0”为 QtE4.7 的测试源码资源包,源码中的“step_moter”为步进电机的编译好的 qt4.7 程序。

请注意,需要参考本文档第二小节,先配置内核驱动,确认有设备节点“/dev/step_motor_driver”。

开发板烧写 QtE4.7 系统,将“step_moter”拷贝到开发板,使用命令“./step_moter & ”运行,如下图所示。

 

以上界面中,参数如下:

Speed:通过改变延时来控制速度,延时越短,转速越快。延时范围:3--20ms。

Num:设置步进数,当值为 4096 时转一圈。

Direction:设置转动方向。RIGHT 为正转,LEFT 为反转。

START:设置好后,点击 START 开始运行。

CLOSE:关闭当前页面。

101.18.5 Android 4.0.3的例程测试

“iTOP-4412-Android4.0-stepmotortest-V1.0.zip”为 Android4.0.3 的测试源码资源包,源码包中的“bin”下的“stepmotortest.apk”为步进电机的编译好的 Android4.0.3 程序。

请注意,需要参考本文档第二小节,先配置内核驱动,确认有设备节点“/dev/step_motor_driver”,如下图所示。

在控制台输入命令“chmod 777 /dev/step_motor_driver”修改权限。最后安装 APP,APP 运行之后,如下图所示。

 

速度:通过改变延时来控制速度,速度设置越大,转速越快,但不能设置成 20。

步数:设置步进数,当值为 4096 时转一圈。

方向:设置转动方向。

START:设置好后,点击 START 开始运行。

 

101.19 iTOP-4412-Android-数据库例程MySqlite

文档全称是“iTOP-4412-Android 系统-数据库例程 MySqlite.zip”,文档介绍了 Android 系统下数据库例程 MySqlite 的使用。在网盘“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\Android模块测试例程\iTOP-4412-Android 系统-数据库例程 MySqlite.zip” 目录下可找到配套资料。

创建一个助手类

DatabaseHelper 继承自 SQLiteOpenHelper

其中最重要的是要实现下面这个构造函数,代码如下

public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
}

功能 1 创建数据库

代码如下:

//创建一个 DatabaseHelper 对象 第二个参数为数据库名
DatabaseHelper dbHelper1 = new DatabaseHelper(SQLiteActivity.this,"test_db");
//取得一个只读的数据库对象
SQLiteDatabase db1 = dbHelper1.getReadableDatabase();

功能 2 插入数据

代码如下:

//创建存放数据的 ContentValues 对象
ContentValues values = new ContentValues();
//像 ContentValues 中存放数据
values.put("id", 1);
values.put("name","讯为科技");
DatabaseHelper dbHelper3 = new DatabaseHelper(SQLiteActivity.this, "test_db");
SQLiteDatabase db3 = dbHelper3.getWritableDatabase();
//数据库执行插入命令
db3.insert("user", null, values);

功能 3 更新数据

代码如下:

DatabaseHelper dbHelper4 = new DatabaseHelper(SQLiteActivity.this, "test_db");
SQLiteDatabase db4 = dbHelper4.getWritableDatabase();
ContentValues values2 = new ContentValues();
values2.put("name", "讯为科技的态度");
db4.update("user", values2, "id=?", new String[]{"1"});

功能 4 查找数据

代码如下:

DatabaseHelper dbHelper5 = new DatabaseHelper(SQLiteActivity.this, "test_db");
SQLiteDatabase db5 = dbHelper5.getReadableDatabase();
//创建游标对象
Cursor cursor = db5.query("user", new String[]{"id","name"}, "id=?", new
String[]{"1"}, null, null, null, null);
//利用游标遍历所有数据对象
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
//日志打印输出
Log.i(SWORD,"query-->"+name);
Toast.makeText(SQLiteActivity.this, "索到的数据为
"+name,Toast.LENGTH_SHORT).show();
}

功能 5 删除数据

代码如下:

DatabaseHelper dbHelper6 = new DatabaseHelper(SQLiteActivity.this,"test_db");
SQLiteDatabase db6 = dbHelper6.getWritableDatabase();
db6.delete("user", "id=?", new String[]{"1"});

101.20 iTOP-4412-Android-3G和4G模块源码编译切换

此文档目前仅适用于全功能版,不过对于精英版的用户自行移植外插 4G 模块同样有参考价值,也可以通过本文档学习一下不同模块的驱动配置方法。对于 2019 年后全功能版用户, 因为已全部升级为 4G 模块(3G 不再使用),本节可忽略。

在全能版老版本中,有 3G 和 4G 两种模块,3G 的型号为 MW3650,4G 的型号为ME3630。

在 Android 源码中,默认两种驱动都提供了,如果用户需要支持 3G 或者使用最新的Android 源码支持 4G,只需要将 4G 的编译脚本屏蔽,重新编译即可。

进入 Android 源码目录,使用命令“vim device/samsung/smdk4x12/device.mk”打开编译脚本。如下图所示,红色方框中的部分是支持 3G-MW3650 的编译脚本,红色圆框中的部分是支持 4G-ME3630 的编译脚本。

默认情况下,编译出的 Android 镜像是支持 4G 的,如果需要支持 3G,则将红色圆框中的编译脚本注释掉,将红色方框的代码取消注释,重新编译烧写,即可支持 3G 的模块。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值