对于51单片机和arm9开发板串口通信问题的分析

2019-11-07来源: 51hei关键字:51单片机  arm9  串口通信

距离毕设的时间还剩20天左右,这几天一直忙着做毕设,今天终于将51单片机和串口通信的问题解决了,抽出点时间,写一下遇到的问题。不然,过几天又忘了,记录下来也给后续学习的技术宅能提供一点帮助。

我的串口实验是:ARM9 控制板通过串口发送一个指令,51接受到这个指令后,根据这个指令控制小车的运行方式。(为什么不用arm9直接控制小车而采用51控制小车呢?

答:我的想法是电机驱动这一块直接交付给下一级控制器,程序简单,容易实现,况且通过串口,只需解析一个指令就可以实现)。

1、做此类串口通信一定要记得共地,我采用的方法是直接用5v直流输出引出了两个接口,分别为两个控制板供电,这样的话串口通讯的电压没有一点问题。

2、做串口通讯的一定要搞清楚,你的串口到底那几个没被使用,你可以根据厂家提供的电路原理图查看。选择好你做串口实验的串口号。(记得有些串口驱动移植的时候没有设置为通用串口,你要搞清楚额。)。如果你是在别人移植好的,驱动上做串口应用程序的开发,你要搞清楚,别人的串口名称。因为时间紧张,串口驱动我没有自己移植,我是在厂家移植好的驱动上进行应用程序的开发,所以我就可以在 Linux  根目录下的/dev/查看串口名称。


我的串口名称有/dev/s3c2410_serialX(X=0,1,2).. 因此,编写应用程序的时候一定要注意fd=open(“/dev/此处的串口名称”,XXXXX);

3、我的51板中本来设置好的运行协议是十六进制的数,后来查看说write函数只能写字符,我只好用字符常量代替原来的十六进制协议类。调整后的51板程序思路是:
串口接收到字符数据  f=前进,b=后退,l=左转,r=右转,s=停止。51板的程序弄好以后,我只要通过arm板给51板发送这些字符,51板就能控制小车的运行方式。

4、Arm linux 串口应用程序的开发,跟windows的差不多,基本都是调用api,然后编写,不过相比较windows而言,linux更容易理解一个操作系统,因为只有当你把bootloader ,linux kernel,文件系统,驱动这些都移植过一遍,你就很容易理解一个操作系统的原理,也就不难理解调用api 是则么回事类。 串口应用程序的开发就是对串口结构体进行设置。注意串口设置的时候波特率一定要和你51板设置的波特率一致奥,否则不能通信。然后通过读写函数对串口进行控制。向串口发送指令是通过Write(fd,buf,sizeof(buf)),函数实现的,我就写了一个字符f 然后就可以实现小车的前进了。

5、让我纠结了好长时间的问题。程序写好以后,一定要用arm-linux-gcc交叉编译指令,不能用gcc指令编译,这个编译的程序只能在pc的linux上跑,不然将编译好的可执行程序下载到开发板上是不能运行。另外如果你用arm-linux-gcc编译后生成的可执行文件是a.out文件这个在arm板上也不能运行。必须要用arm-linux-gcc main.c -o myserial这个指令进行编译,生成的myserial可执行程序才能在arm板上运行。程序下载到开发板以后,一定要加上权限 chmod  777  myserial .  然后执行 ./myserial  ,你就可以发现你的小车可以前进了。

关键字:51单片机  arm9  串口通信 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479260.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:2440裸机编程之十二 GPS
下一篇:ARM9学习4-S3C2410的启动代码分析-For ADSv1.2

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

avr单片机汇编参考程序
该AVR的汇编程序选自《M128》,程序中体现了AVR汇编的基本特点,仅供大家参考。该应用系统为一个带1/100秒的简易24小时制时钟,它在上电后能够自动从11时59分55秒00开始计时和显示时间。下图为简易时钟系统硬件电路图。                           图  简易24小时时钟硬件原理图系统使用8个LED数码管显示时、分、秒、1/100秒4个时段的数字,每个时段占用2个LED。显示方式采用动态扫描方式,ATme
发表于 2019-11-14
avr单片机汇编参考程序
AVR单片机一些学习笔记
下面是自己在学习AVR单片机时的学习经验,分享出来给大家,一起学习。1、AVR单片机采用RISC架构,8051单片机采用CISC架构。 前者速度为后者的2~4倍,为流水线操作指令。2、 AVR单片机有32个通用寄存器(地址在RAM区从$0000开始到$001F),其中有6个(最后6个)合并为3个16位的X,Y,Z寄存器,用来存放地址指针,Z寄存器还可以寻址程序存储器。3、 哈佛结构,131条机器指令。4、 延迟开机功能。5、 内部自带RC振荡器,可提供1/2/4/8MHZ的工作时钟。6、 FLASH+EEPROM+SRAM+SPI+USART+TWI+PWM+RTC+10位ADC+模拟比较器+JTAG。7、 堆栈指针向下增长,51
发表于 2019-11-14
mega32单片机最简单的中断程序——外部中断
学单片机的第二条槛:中断,每次我都选最简单的中断——外部中断。*****************************************************************//CPU:mega32//编译器:iar#include <ioavr.h>void eint0_init(void);int main(void){    DDRD |= (1 << 7);     //PD7置为输出    eint0_init();    
发表于 2019-11-14
mega32单片机最简单的中断程序——外部中断
单片机之间通信(类红外发送与接收)
;   {             c++;             if(c==1)  RB2=0;             if(c==41) RB2=1;             if(c>=51)         
发表于 2019-11-14
喜欢单片机的同学快来看啊,过来人的经验告白
的,这样在以后你就会明白其中的道理。昨天已经说过要学单片机就要先学一种,至于哪一种就看自己的了。何为搭建平台,也就是说要有一套开发工具,学习单片机一定要实践,不实践的人永远学不会单片机。要自己动手写,那怕是1条语句,一段指令。一个小程序。只有自己动手写了,才会发现自己在那出了错误,才能真正体会。因此在这强调一个动手实践的过程,不知道大家有没有这中体会,以前课本上的东西很容易忘,但做实验的东西就不容易忘,也就是这个道理。今天总结一下以前的学习:我学的是PIC单片机,以前在学校学的是51,为什么不继续学习51了,一方面是以前学51学的不怎么好,另一方面是觉得51的指令太多,不容易记,所以我选择了PIC。我自己搭建的平台是买的别人的开发板,我记
发表于 2019-11-14
单片机EC1数字旋扭编码仿真程序
一个按键正转,另一个按键反转.模拟输出编码信号.正转1110 00 10  反转11 01 00 01//1H=GP2  2H=GP1  3H=GP0  4H=GP4  KEY=GP3  #include<pic.h>__CONFIG(0xFEA);#define uchar unsigned char #define CW_A GP4 //#define CW_B GP5 //#define KEY_A GP0 //#define KEY_B GP1 //uchar tmp=1,at=0;&
发表于 2019-11-14
单片机EC1数字旋扭编码仿真程序
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved