免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1837 | 回复: 4
打印 上一主题 下一主题

想直接操作硬件接口 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-18 20:55 |只看该作者 |倒序浏览
本人初学嵌入式,实验开发板是arm9 2410的,内核为linux2.4,现在想在开发板带系统的情况下直接对硬件接口进行操作,比如从串口接收另一个单片机上传来的信号,如果能行,需要用到哪方面的知识,配套的软硬件一般都用什么呢?望高手不吝赐教,谢谢!

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2009-02-18 22:09 |只看该作者
说白了就是写驱动喽?
可以参考一下对应的接口的描述啊

论坛徽章:
5
3 [报告]
发表于 2009-02-18 22:38 |只看该作者
外围设备接口都行。简单的,如I2C/SPI/Serial
你熟悉一下相应的spec, 找个范例就可动手了

论坛徽章:
0
4 [报告]
发表于 2009-02-19 14:49 |只看该作者
噢,是这样,谢谢指教了:)

论坛徽章:
0
5 [报告]
发表于 2009-02-21 13:42 |只看该作者
为尊重原创作者,注明出处:http://www.2beanet.com/bbs/viewthread.php?tid=26&highlight=linux%2B%E4%B8%B2%E5%8F%A3
Linux 串口编程(附测试程序)概述:

串口,UART(通用异步收发器),广泛应用于各种场合,本文就Linux下的串口编程,做简单的阐述!

准备知识:

Linux的设备管理比较有意思(vxworks下也是这样),对设备的操作就仿佛是对文件的操作一样,所以

无外乎“打开”,“控制”,“读”,“写”,“关闭”等操作,对应的系统调用就是open,ioctl,read,

write,close。

数据结构分析:

在之前做过的测试和应用的基础上,感觉串口的“终端控制结构”的选项设置比较重要,在系统的

头文件<bits/termios.h>中定义,struct termios,调用tcgetattr和tcsetattr来获取和设置串口的终端属性。

复制内容到剪贴板 代码:struct termios
31   {
32     tcflag_t c_iflag;    /* input mode flags */
33     tcflag_t c_oflag;    /* output mode flags */
34     tcflag_t c_cflag;    /* control mode flags */
35     tcflag_t c_lflag;    /* local mode flags */
36     cc_t c_line;         /* line discipline */
37     cc_t c_cc[NCCS];     /* control characters */
38     speed_t c_ispeed;    /* input speed */
39     speed_t c_ospeed;    /* output speed */
40 #define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
41 #define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
42   };



复制内容到剪贴板 代码:
c_cflag:
        CLOCAL  本地模式,不改变端口的所有者
        CREAD  表示使能数据接收器
        PARENB  表示偶校验
        PARODD  表示奇校验
        CSTOPB  使用两个停止位
        CSIZE  对数据的bit使用掩码
        CS8  数据宽度是8bit
c_lflag:
        ICANON  使能规范输入,否则使用原始数据(本文使用)
        ECHO  回送(echo)输入数据
        ECHOE  回送擦除字符
        ISIG  使能SIGINTR,SIGSUSP, SIGDSUSP和 SIGQUIT 信号
c_iflag:
        IXON  使能输出软件控制
        IXOFF  使能输入软件控制
        IXANY  允许任何字符再次开启数据流
        INLCR  把字符NL(0A)映射到CR(0D)
        IGNCR  忽略字符CR(0D)
        ICRNL  把CR(0D)映射成字符NR(0A)
c_oflag:
        OPOST  输出后处理,如果不设置表示原始数据(本文使用原始数据)
        c_cc[VMIN]  最少可读数据
        c_cc[VTIME]  等待数据时间(10秒的倍数)



设置例子:
复制内容到剪贴板 代码:           tcgetattr(fd, &opt);
60         tcgetattr(fd, &newOpt);
61
62         newOpt.c_cflag |= (CLOCAL | CREAD);
63         newOpt.c_cflag &= ~CBAUD;
64         newOpt.c_cflag |= (B115200 | CS;
65
66         newOpt.c_lflag &= ~(ICANON | ISIG | NOFLSH);
67
68         newOpt.c_lflag &= ~(ECHO);
69
70         newOpt.c_lflag &= ~(ECHOE);
71
72
73         newOpt.c_oflag &= ~(OPOST | ONLCR | OCRNL);
74
75         newOpt.c_cc[VMIN]=100;
76         newOpt.c_cc[VTIME]=2;
77
78         tcflush(fd,TCIFLUSH);
79
80         ret = tcsetattr(fd, TCSANOW, &newOpt);

comTest.rar (1.06 KB)

搜索更多相关主题的帖子: linux 串口编程 源码 linux 串口编程 源码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP