ARM-Linux(mini2440)串口与51单片机的9位串口通讯

2023-10-27

ARM-Linux(mini2440)串口与51单片机的9位串口通讯

  (2013-03-10 16:09:34)
标签: 

9bit串口

 

arm-linux

 

51单片机

分类: 技术之路
ARM-Linux(mini2440)串口与51单片机的9位串口通讯:
当51单片机的串口模式在方式2或方式3时为9位通讯方式,即当串行数据第9位为“1”时,前8位数据指示的是用来和主机通讯的从机地址;当串行数据第9位为“0”时,前8位数据则用为真正的数据。具体请参考:
而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. ARM-Linux(mini2440)串口与51单片机的9位串口通讯
     加入如下两行:
          ARM-Linux(mini2440)串口与51单片机的9位串口通讯

2. ARM-Linux(mini2440)串口与51单片机的9位串口通讯
   函数 s3c24xx_serial_set_termios()中:
注释掉这个:  ARM-Linux(mini2440)串口与51单片机的9位串口通讯
修改ulcon寄存器设置,如下:
                    ARM-Linux(mini2440)串口与51单片机的9位串口通讯
      接着就是重新编译内核,通过vivi下载到板上。测试程序中按照上述方法设置结构体termios变量,就可以实现第9位的mask和space了。经测试,mini2440已可与51单片机通信!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM-Linux(mini2440)串口与51单片机的9位串口通讯 的相关文章

  • TMS320F28377X芯片SCI模块RS485通信,数据末尾被0xFF替换的问题解决

    SCI串口通信 用RS232方式 SCI模块 用如下的 直接这样 就可以发送 void Write SCIC Uint8 pBuf Uint16 len rs232 Uint16 i for i 0 i lt len i while Sci
  • CSerialPort教程4.3.x (2) - CSerialPort源码简介

    CSerialPort教程4 3 x 2 CSerialPort源码简介 前言 CSerialPort项目是一个基于C C 的轻量级开源跨平台串口类库 可以轻松实现跨平台多操作系统的串口读写 同时还支持C Java Python Node
  • C51_PID 水温控制系统

    前言 通过C语言程序写入51单片机实现水的温度的采集 并通过控制器控制加热器给水体加热 对水体的温进行PID控制 保证温度在设定值范围内波动 最终包括C51的视频的内容以及部分参考资料都可以在 百度分享链接内下载 链接 https pan
  • 单片机实现 printf 打印输出,和电脑端一样用

    在学C语言时 printf 很好用 到了单片机 ARM时却不能用 那因为库中的 printf 是定向打印到显示屏的 所以我们把 printf 重新定向打印到串口就可以了 串口助手中就可以显示打印的内容 这样我们在单片机 ARM中就可以 像电
  • IAP下载

    1 概述 前面一篇文章介绍了我们常用的ISP和ICP编程 除了这两种编程方式最为常见的还有一种叫IAP 下面聊一聊IAP的一些细节 IAP In applicating Programing 翻译过来就是在应用编程 即我们常说的在程序运行过
  • 西门子PLC各类通信协议差异对比

    西门子PLC有4大类 几十个型号类型 PLC不同所支持的通讯协议也不相同 S7 200系列支持的协议有 PPI MPI PROFIBUS 以太网 S7协议 AS INTERFACE USS MODBUS 自由口 S7 300 400系列支持
  • VS2010利用MFC的MSCcom控件的方法(WIN8系统)

    1 由于VC6 0之后 VS不在带有MScomm控件 要使用MScomm控件需要自己注册添加 控件下载链接 MScomm控件 压缩包中含有四个文件 MSCOMM SRG MSCOMM32 DEP MSCOMM32 oca mscomm32
  • Python实现串口通信(pyserial)

    Python实现串口通信 pyserial pyserial模块封装了对串口的访问 兼容各种平台 安装 pip insatll pyserial 初始化 简单初始化示例 import serial ser serial Serial com
  • c++实现串口通讯踩坑(argument of type “char *“ is incompatible with parameter of type “LPCWSTR“)

    在C下 可以使用outportb和inportb进行串口通讯 C 没有这两个函数 那就使用createfile吧 通过网上搜到读取打开串口的例子 如下 include
  • Xmodem/Ymodem/Zmodem协议详解

    序 Xmodem Ymodem和Zmodem协议是最常用的三种通信协议 Xmodem协议是最早的 传输128字节信息块 之后也支持到1k的传输 Ymodem是Xmodem的增强版协议 具有传输快速稳定的优点 它可以一次传输1024字节的信息
  • LabVIEW串口通信实际操作

    理论基础 LabVIEW串口通信基础知识 读取串口字节 我们新建一个空白 VI 借助串口调试助手和虚拟串口 在 LabVIEW 中编写的一个最简单的例子 写一个基本的读取串口字节的程序 在程序框图中编程如下 注意这里 串口配置放到循环外 不
  • CSerialPort教程4.3.x (1) - CSerialPort项目简介

    CSerialPort教程4 3 x 1 CSerialPort项目简介 前言 CSerialPort项目是一个基于C C 的轻量级开源跨平台串口类库 可以轻松实现跨平台多操作系统的串口读写 同时还支持C Java Python Node
  • C#串口通讯中 16进制与字符串、字节数组之间的转换

    1 c 中如何将十进制数的字符串转化成十六进制数的字符串 十进制转二进制 Console WriteLine 十进制166的二进制表示 Convert ToString 166 2 十进制转八进制 Console WriteLine 十进制
  • verilog_串口实现

    verilog 串口实现 概述 先了解串口的基础知识 串口是怎样传数据的 什么是波特率 波特率怎么计算 说明 通过Verilog编写串口 通过逻辑分析仪与串口模块的对接来进一步了解串口的应用 文章目录 1 什么是波特率 波特率怎么计算 1
  • 什么是节点光端机?总线型光端机有哪些优势?

    节点式光端机又称总线型光端机 其准确的定义是采用单 双纤链路式组网形式的图像传输系统 也被称为链路式光端机 那么 节点式光端机具体是什么呢 总线型光端机又有哪些优势呢 接下来我们就跟随飞畅科技的小编一起来详细了解下吧 什么是节点光端机 节点
  • 奇偶校验位

    在串行通信中 奇偶校验位通常是由UART这样的接口硬件生成 校验的 在接收方 通过接口硬件中的寄存器的状态位传给 CPU 以及操作系统 错误数据的恢复通常是通过重新发送数据 这个过程通常由如操作系统输入输出程序这样的软件处理的
  • 使用ROS通过串口获取遥控器信号(二)

    使用ROS通过串口获取遥控器信号 二 十 编写串口通信节点 sudo gedit catkin ws src uart communication src commu cpp 加入以下代码 根据实际情况修改自己的代码 注意serial的AP
  • 【Python】PyCharm中调用另一个文件的函数或类

    欢迎来到Python专栏 PyCharm中调用另一个文件的函数或类 o o 嗨 我是小夏与酒 博客主页 小夏与酒的博客 该系列文章专栏 Python学习专栏 文章作者技术和水平有限 如果文中出现错误 希望大家能指正 欢迎大家关注 目录 Py
  • 数字电路的时钟(1)-- 时钟抖动和分类

    时钟抖动通常分为时间间隔误差 Time Interval Error 简称TIE 又叫相位抖动 周期抖动 Period Jitter 和相邻周期抖动 cycle to cycle jitter 三种抖动 TIE又称为phase jitter
  • 51单片机的串口通迅

    通信的基本方式分为并行通信和串行通信 并行通信 数据的各位同时在多根数据线上发送或接收 特点 控制简单 传输速度快 由于输线较多 长距离传送时成本高且接收方的各位同时接收存在困难 串行通信 使用一条数据线 将数据一位一位的依次传输 每一位数

随机推荐

  • 数据库系统原理———两段锁协议、死锁练习题

    一 题目描述 14 考虑T和T2两个事务 T1 R A R B B A B W B T2 R B R A A A B W A 1 改写T和T2 增加加锁操作和解锁操作 并要求遵循两阶段封锁协议 2 说明T和T2的执行是否会引起死锁 给出T和
  • Go语言创始人从Google离职

    点击关注公众号 互联网架构师 后台回复 2T获取2TB学习资源 上一篇 Alibaba开源内网高并发编程手册 pdf 前两天 谷歌Go语言产品负责人Steve Francia突然宣布离职 并回顾总结自己在谷歌的6年生涯经历 以及分享了离开的
  • Selenium成长之路-07简单对象定位之tag name方法

    继续学习元素定位 tag name 每个前端开发人员 都有自己的习惯 所以 不一定每一个开发人员都喜欢用id name来做标签 所以我们就需要掌握其他的定位方法 例如tag name 下面我们继续来进行百度首页的定位 可以看到首页下图中红框
  • linux命令---GNU awk介绍

    概述 gawk是GNU工程 是一种编程语言 它实现了标准awk的所有功能 用于在linux unix下对文本和数据进行处理 数据可以来自标准输入 stdin 一个或多个文件 或其它命令的输出 它支持用户自定义函数和动态正则表达式等先进功能
  • Qt 使用openssl库

    在windows下面 QT开发使用ssl库一开始总会有些问题 这里记录一下最近解决的找不到库的经过 安装QT时如果选择了支持openssl 那么qt就会编译一个版本的openssl库 通常会放在几个地方 这里就不多说了 在安装目录找一找就是
  • PTAL1-016 查验身份证 c++实现 多种方法 多种细节

    目录 先上代码 我遇到的问题 首先 对题目的理解 其次 是对代码的优化问题 最后 返回值 多种解法 1 换种数据结构 2 back 函数 3 类 先上代码 include
  • 如何在app store营销之实战技巧(6)

    是的 偶不算程序员 试头像 秀一下业娱作品 第520贴 献给我爱的XXX google docs被墙了 chrome os 2009 iPhone全球技术巡讲 北京站参会确认 邮件收到了 哈哈 恭喜Dr Stone Wars Lite升级啦
  • vue实现给页面添加水印

    第一步 先封装以下文件 创建utils watermark js文件 水印添加方法 let setWatermark str1 str2 gt let id 1 23452384164 123412415 if document getEl
  • 华为机试练习(十)求第K多连续重复子串

    题目描述 给定字符串 str 和正数 K 求出现次数第 k 多的重复的子串 样例输入 AAAAHHHBBCDHHHH 3 样例输出 2 说明 A 4 H 4 H 3 B 2 C 1 D 1 求第3次数多的 本来应该是H 但是由于H在之前已经
  • JS实现注册登录发送短信验证码动态显示60S倒计时完整案例

    通常在web项目中都会遇到账户注册或者忘记密码时需要发送短信验证码的功能 虽然说这种功能很常见 但是实际开发过程中很多人还会遇到不少坑 笔者经过整理把最近项目中的用到的这个发送短信验证码动态显示60S倒计时的完整实现过程分享给广大开发者朋友
  • Spring 整合 MyBatis

    前文介绍了Spring最基本的功能 Spring是一个DI 依赖注入 容器和AOP 面向切面 容器 但这仅仅是手段 远不是目标 Spring的目标是整合与简化其他Java框架的开发 通过DI管理其他框架和组件 利用AOP分离繁复部分 使得复
  • 帮我写个matlab输出扫频信号的代码

    当然 我可以帮你写一个Matlab输出扫频信号的代码 以下是一个简单的例子 定义扫频信号的起始频率 结束频率和时间间隔 f start 0 f end 1000 t step 0 001 生成时间序列 t 0 t step 1 生成扫频信号
  • vue 上传多个文件显示进度条

    组件A中的上传功能
  • docker-compose 安装nacos(单机版本)

    https gitee com yuanshuai likeit nacos docker git cd usr local docker git clone https gitee com yuanshuai likeit nacos d
  • react 图像识别_无法在React中基于URL查找图像

    react 图像识别 If you re new to React and are having trouble accessing images stored locally you re not alone 如果您不熟悉React 并且
  • python+selenium 浏览器无界面模式运行

    以Chrome浏览器为例 方法一 from selenium webdriver import Chrome ChromeOptions opt ChromeOptions 创建Chrome参数对象 opt headless True 把C
  • Redis主从复制时master_link_status:down的问题

    Redis进行主从复制时 在6380端口使用slaveof 127 0 0 1 6379 结果出现master link status down的问题 出现这个情况是由于主机使用有密码 需要在从机的配置文件redis6380 conf加入m
  • [SDOI2017]树点涂色

    洛谷 SDOI2017 树点涂色 题目描述 Bob 有一棵 n n n 个点的有根树 其中 1 1 1 号点是根节点 Bob 在每个点上涂了颜色 并且每个点上的颜色不同 定义一条路径的权值是 这条路径上的点 包括起点和终点 共有多少种不同的
  • linux系统中的用户态和内核态

    linux系统中的用户态和内核态 文章目录 linux系统中的用户态和内核态 TOC 文章目录 定义 一 Linux系统简介 Linux内核结构 二 总结 定义 在Linux系统中 用户态和内核态是两种不同的运行模式 它们主要区别在于程序所
  • ARM-Linux(mini2440)串口与51单片机的9位串口通讯

    ARM Linux mini2440 串口与51单片机的9位串口通讯 2013 03 10 16 09 34 转载 标签 9bit串口 arm linux 51单片机 分类 技术之路 ARM Linux mini2440 串口与51单片机的