http://blog.csdn.net/DFSAE/article/details/78715815
这里电机驱动测试代码只是为了测试电机驱动功能是否正常,和双摄像头驱动小车的主线程序无关。
这段测试代码测试了左右电机正转,反转,0-100占空比的调整;以及一些不正确参数的情况。没有测试读取值= =。
对驱动测试,其实只需要把驱动当做一个文件对待,对它进行读写就可以了。
int main(int argc, char *argv)
{
int pwm_fd;
int i = 0;
//打开驱动
pwm_fd = open(PWM_DEV, O_RDWR);
if (pwm_fd < 0) {
printf("open pwm fd failed\n");
return -1;
}
//向前转测试,转动PWM控制从0-100
printf("forward test\n");
buf[0] = buf[2] = 1; //forward
for (i = 0; i < 20; i++)
{
buf[1] = i*5;
printf("buf[1]:%d\n", buf[1]);
buf[3] = 100 - i*5;
printf("buf[1]:%d\n", buf[3]);
write(pwm_fd, buf, sizeof(buf));
sleep(3);
}
//向后转测试,转动PWM控制从0-100
printf("-------------------------\n");
printf("backward test\n");
buf[0] = buf[2] = 2; //backward
for (i = 0; i < 20; i++)
{
buf[3] = i*5;
printf("buf[3]:%d\n", buf[1]);
buf[1] = 100 - i*5;
printf("buf[1]:%d\n", buf[1]);
write(pwm_fd, buf, sizeof(buf));
sleep(3);
}
//50%PWM输出
printf("--------------\n");
printf("keep test\n");
buf[0] = buf[2] = 0; //keep
buf[1] = buf[3] = 50;
write(pwm_fd, buf, sizeof(buf));
//一些错误参数的测试
printf("--------------\n");
printf("error dirction arg\n");
buf[0] = buf[2] = 3;
buf[1] = buf[3] = 50;
write(pwm_fd, buf, sizeof(buf));
printf("error duty arg\n");
buf[0] = buf[2] = 1;
buf[1] = buf[3] = -1;
write(pwm_fd, buf, sizeof(buf));
buf[1] = buf[3] = 101;
write(pwm_fd, buf, sizeof(buf));
close(pwm_fd);
return 0;
}
然后在进入make menuconfig配置环境下,在Utilities->pwm_test,选中*
后面两部执行过一次后面重复编译的时候可以省略
make package/软件名/install V=99
make package/index V=99
注:前面的/package是固件放的目录,XXX为编译出来测试程序的名字,因为版本不同名字可能有差异。
这个命令在装完后好像就被放到了/user/sbin/目录下了。
控制台打印的信息结果如下,但重要的是看2路PWM的输出和IO控制的数据是否和每个阶段都一样。
最高配置可以配置一个示波器,查看PWM的输出是否正确,IO口是否电平正确。
最低配置可以用一个万用表,测试PWM对地两端的电压,和电源电压的比值就是PWM的占空比;IO则直接用电平观察得到。
摄像头采用的是USB免驱的摄像头,因此只要插入到硬件板的2个USB插槽上就好了。
前面第一篇的时候就已经把摄像头相关的模块都编译进内核了,因此这里也就不用重新安装模块了。
插上后,终端会显示提示:
这时候已经检测出免驱摄像头了。
同时在/dev目录下也可以看到增加了一个video0
一般的USB免驱摄像头支持两种输出方式:YUV格式和mjpeg格式。mjpeg格式比起YUV格式要小很多,而且失真不太,因此我们可以用这种格式传送(测了一下YUV格式就有个点卡了)。
在插上摄像头后,输入命令:
-i “input_uvc.so -d /dev/video0” -o “output_http.so -w www”
参数分析:
-i为指定输入
input_uvc.so 为uvc设备。-d指定位置到 /dev/video0
-o指定输出
“output_http.so -w www”是指到网页端。
这时,就可以在网页端查看摄像头传上来的图像了。
在浏览器(务必是火狐浏览器)地址栏输入:
192.168.55.1:8080/?action=stream
然后就能看到视频了
MT7688自带提供有一些基本功能的实现驱动。这里我们使用串口2来做拓展。
需要将MT7688的板子外接到串口模块,RXD2,TXD2这两个线,同时需要在结根地线,共地一下。
然后在电脑上用串口调试软件打开串口模块的串口,选择波特率9600,
串口默认的波特率是9600,驱动是/dev/tty2。
我们现用命令行测试一下是否可用:
在命令行输入:
echo “hello world!” > ttyS2
然后在串口调试软件中显示。说明调试成功。