当51单片机的串口模式在方式2或方式3时为9位通讯方式,即当串行数据第9位为“1”时,前8位数据指示的是用来和主机通讯的从机地址;当串行数据第9位为“0”时,前8位数据则用为真正的数据。具体请参考:
https://www.eeworld.com.cn/mcu/2011/0621/article_4424_1.html
而FriendlyARM的mini2440可以设置的数据位数为5~8位,即CS5,CS6,CS7,CS8。关于Linux串口的编程教学请参见: http://www.adamjiang.com/pukiwiki/index.php?Linux串口编程详解#ec39e271
查阅了一下前人的做法,有两种:1.硬方法:另加一51单片机的板子来做转换,串口模式采用方式1来与ARM板通信,另一头用方式2或3来与9bit的单片机通信;2.软方法:改驱动,即在linux的串口驱动中加入对第9位的收发。
我这里是用方法二。一开始很不想改driver,就在网上各种搜,搜到的方法是:采用奇偶校验的mask和space来设定第九位为“1”或“0”;串口的设置代码为:
发地址前:
struct termios opt;
opt.c_cflag = BAUDRATE | CS8 | PARENB | PARODD | CMSPAR | CLOCAL | CREAD;
opt.c_iflag = (INPCK | IGNBRK | IGNPAR);
发数据前:
struct termios opt;
opt.c_cflag = BAUDRATE | CS8 | PARENB | CMSPAR | CLOCAL | CREAD;
opt.c_cflag &= ~PARODD;
试过之后发现有时是9bit,有时是8bit,或者是第9bit不受mask和space的控制(测试方式很吐血,直接拿示波器看的,高低电平一个一个数!)。看来这样的设置只是设了奇偶校验,根本没设到mask和space,难道是driver不支持?只有这个原因了!于是开始学改driver,最后是在samsung.c这个驱动文件中发现虽然定义了CMSPAR,却完全没有用到,于是修改如下:
修改了如下几个文件:
1.
加入如下两行:
2.
函数 s3c24xx_serial_set_termios()中:
注释掉这个:
修改ulcon寄存器设置,如下:
接着就是重新编译内核,通过vivi下载到板上。测试程序中按照上述方法设置结构体termios变量,就可以实现第9位的mask和space了。经测试,mini2440已可与51单片机通信!
关键字:ARM Linux mini2440 51单片机 串口通讯
引用地址:
ARMLinux(mini2440)串口与51单片机的9位串口通讯
推荐阅读最新更新时间:2024-03-16 14:55
ARM推64位处理器架构ARMV8及芯片
北京时间10月31日消息,ARM宣布推出ARMv8 64位架构指令集之际,Applied Micro Circuits Corporation(AMCC)就推出了面向服务器市场的处理器X-Gene。 X-Gene架构 根据介绍,X-Gene采用高度集成的SoC片上系统设计,包含多个高性能ARMv8架构核心。该处理器主频最高可达3.0GHz,拥有强悍的单线程性能,支持完整的处理器和输入输出虚拟化,整合了服务器级别的动态电源管理技术,热设计功耗可根据需要进行配置,待机功耗不超过0.3W,支持万兆网络。 X-Gene与其他平台性能对比 根据AMCC的说法,搭载X-Gene的主机将可以减少50%以上
[嵌入式]
ARM推出全新DynamIQ技术,为人工智能开启无限可能
2017年3月21日,中国北京——ARM今天宣布推出全新的DynamIQ技术。作为未来ARM Cortex-A系列处理器的基础,DynamIQ技术代表了多核处理设计行业的转折点,其灵活多样性将重新定义更多类别设备的多核体验,覆盖从端到云的安全、通用平台。DynamIQ技术将被广泛应用于汽车、家庭以及数不胜数的各种互联设备,这些设备所产生的以泽字节(ZB,一泽字节大约等于1万亿GB)为计算单位的数据会在云端或者设备端被用于机器学习,以实现更先进的人工智能,从而带来更自然、更直观的用户体验。 过去四年里,计算领域发生了令人惊叹的发展。在已经出货的1000亿颗基于ARM的芯片中,有500亿颗是由ARM的合作伙伴从2013年到2017
[嵌入式]
关于mini2440触摸屏驱动设计
一.触摸屏的分类: 1、触摸屏种类、分别应用在哪里、屏和OS怎么配合使用?. 电容屏---静电感应;电阻屏---压力感应; 红外线式和感应电容式触摸屏能够支持多点触控。多点触控带来了更多的选择,抓取、拖曳、缩放、旋转。 屏要和系统搭配才能体现优势。IPHONE和android系统支持多点触控。Windows mobiles不支持多点触控。 2,触摸屏实现原理,功能实现出来(点一下触摸屏得到对应点的像素值)。总结实现原理。 触摸屏的坐标值和LCD的像素不是一比一的关系。且原点可能不是同一个角。 触摸屏校验2种方式:第一是4点式(2点式)。第二种三点式。 二.下面是SONY(320*240)的屏.
[单片机]
89C51单片机+X25045构成的看门狗电路
采用89C51单片机和X25045组成的 看门狗电路 ,X25045硬件连接图如图1所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路C2、R3输出一个正脉冲,使CPU复位。图1电路中,CPU的复位信号共有3个:上电复位(C1、R2),人工复位(S、R1、R2)和Watchdog复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒即可,因为这时CPU的振荡器已经在工作。
[电源管理]
邹诚:ARM架构在汽车领域快速增长
2011中国汽车电子国际论坛暨汽车半导体应用峰会于7月20-21日在成都新东方千禧大酒店隆重开幕。 此次峰会上,云集国内车载信息服务应用联盟及在汽车电子研发领域处于领先地位的中国汽车技术研究中心、中国汽车工程学会、清华大学、同济大学等行业权威机构;欧美、日本的众多业界权威也赴蓉出席此次盛会。同时,上汽、长安汽车、富士通、英飞凌、飞思卡尔等整车与芯片厂商,国内外知名车载系统提供商也受邀携其最新技术方案出席大会,共商汽车电子及半导体应用的发展前景。 主持人:有请来自ARM的市场经理邹诚先生,给我们带来“ARM架构在汽车领域快速增长”的演讲。 邹诚:各位汽车电子行业的专家、同行们大家早上好!我也是最后一个演讲,希望可
[汽车电子]
51单片机-再次熟悉串口
串口是非常常用的一个调试工具,我们都必须熟练使用串口的各个功能。 1.题目要求和解决方案 我们要做的是,电脑端发送字符串过来给单片机,然后单片机这边接收完之后要回复给电脑端,回复内容为“接收完成!”。单片机这边把接收到的数据存放在定义好的全局变量数组里面,我们可以通过按K4发送回去给电脑端查看刚刚接收到的内容并把它显示出来。 我们要知道,一个汉字是需要两个字节内存的,比如电脑端发送的字符串为“好好学习,天天向上!”其中的两个标点符号也是中文输入法打上的话,一个标点符号也是占用两个字节,这个字符串就是一共占用10*2=20个字节内存。 那么怎样判断是否把字符串的数据都接收完成了呢?我们参考了宋老师的编程思想,使用定时
[单片机]
ARM裸机开发bootloader时钟初始化ARM跑快了
一、概念解析 1、什么是时钟脉冲信号,起什么作用? 时钟脉冲信号时有一定电压幅度和一定的时间间隔并连续发出的脉冲信号。时钟脉冲信号是时序逻辑的基础,它用于决定逻辑单元中的状态何时更新。数字芯片中的众多晶体管都工作在开关状态,它们的导通和关断动作都是按照时钟信号的节奏进行的。也就是说嵌入式系统是按照时钟来安排CPU的任务。 2、时钟脉冲信号的频率是指单位时间内产生的时钟脉冲个数。 3、如何产生时钟信号? 时钟信号一般有晶振或晶振与PLL产生。 晶振的制造就是用石英晶体经精密切割磨削并镀上电极焊上引线就做成了。这种晶体如果给它通上电,它就会产生机械振荡,其频率和他们的形状,材料,切割方向等密切相关。 由于石英晶体化学性能非常
[单片机]
视频监控系统中快速实现ARM和DSP的通信和协同工作
图1 达芬奇软件结构框图 通过第一部分的介绍,我们知道了TI数字视频软件开发包(DVSDK)中的Codec Engine软件模块可以帮助我们轻松地实现ARM和DSP或协处理器的协同工作,以及Codec Engine软件模块的概要情况,下面我们将告诉你如何走完Codec Engine入门的第一步和第二步。 欢迎转载,本文来自电子发烧友网(http://www.elecfans.com) 2. Codec Engine入门第一步 有些初学者认为Codec Engine文件包结构复杂,很难找到自己想找的文档或例子。其实在Codec Engine文件包的根目下有一个发布说明文档,比如Codec
[单片机]