在做嵌入式开发的过程中,难免会和各种总线打交道,总线开发属于嵌入式开发的基本技能了。对于总线人们一般将其分为:内部总线、系统总线、外部总线。

所谓内部总线一般指MCU和外围集成IC之间数据交互的线。我们熟知的莫过于SPI、I2C、SCI等。诸如对于EEPROM的操作基本都用的SPI总线。

所谓系统总线一般指的是微机中各插件板与系统板之间的总线。你在电脑的主板上会看到很多这类的总线。诸如:ISA总线、EISA总线、PCI总线。不过说实话,这几个总线也就是听说过,没有实践过,不是特别清楚了。

所谓外部总线就是控制器和外部设备之间的数据交互的通道。这类总线也是发非常的多的,RS232、RS485、RS422、UBS,你如果是做汽车ECU的,那么你会打交道的是CAN、LIN、FlexRay、MOST。接下来来看看外部总线。

我们来选几个常用的来对比分析一下:

我们做嵌入式的,可能第一个听到的通讯方式可能就是串口通讯了。所谓的串口通讯是控制器与外设之间的一种数据双向传输机制,3根线就可以了,1发送线根,1根地线,1根接收线,按bit进行传输。串口只是一种接口标准,只是规定了接口的电器标准,没有定义其传输协议和电缆类型等其它信息,其实就是只规定的物理层,像数据链路层、网络层、应用层等都没有去规定。所以对于数据的格式这个自由度是非常大的,这和CAN是完全不一样的,这个后面再慢慢说了。先看串口通讯的数据格式:

数据是一个bit一个bit进行传输的,对于每一个byte都是以起始位开始,停止位结束,对于字节的高位存放的是校验数据,该bit被称之为校验位,可分为奇偶校验,其实单从这里来看这一byte的数据容错性是不好的,也只有简单的校验。

来看两个最常见的串口通讯标准:

RS232

232总线是一种典型的串口通讯标准,需要3根线,地线、发送线、接收线,采用的是全双工的工作方式,一般采用的是物理寻址的方式即点对点的通讯方式。

232是一种典型的负电平逻辑,逻辑1对应为-3~-15V,逻辑0对应为+3~+15V。显然和TTL电平是不兼容的,在连接MCU的时候需要电平转化芯片。接口使用一根信号线和一根信号返回线而构成共地的传输形式即靠TXD和GND之间的电压来传数据(接收跟发送一样的),这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。传输距离有限,实际上也只能用在15米左右且传输速率较低,在异步传输时,比特率为20Kbps。

RS485

485总线也是一种典型的串口通讯标准,有2根信号线即发送和接收。485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。485是正电平逻辑,逻辑“1”以两线间的电压差+2V~+6V表示,逻辑“0”以两线间的电压差-6V~-2V表示,该电平与TTL电平兼容,刻方便与TTL电路连接。数据最高传输速率为:10Mbps,485接口采用平衡驱动器和差分接收器的组合,抗共模干扰能力强,即抗噪声性能好。最大传输距离实际上可达3000米,一般使用双绞线。

再来说一个在汽车领域占有举足轻重的位置的总线协议:

CAN

CAN是汽车电子领域最长用的总线之一。CAN通讯协议是1986年德国电气商博世公司面向汽车开发的,具有高性能和可靠性,现在也不仅仅在汽车领域了,在工业自动化、船舶、医疗设备、工业设备上也具有广泛的应用,CAN总线使用的差分信号传输,CAN总线规定了一部分物理层,全部的数据链路层和部分的传输层,目前有两套国际标准即ISO11898和ISO11519-2,主要区别在对物理层的部分定义不同,CAN有2根总线即CAN_H和CAN_L,CAN收发器根据的是两个总线的电位差在判断总线的电平的,总线电平分为显性电平和隐形电平,总线必须是两种电平中的一种,总线上实现的是线与的逻辑,即显性电平为逻辑0,隐形电平为逻辑1,11898规定最大的通讯速度为1Mbps,最大长度为40m,11519规定的位125kbps,最大长度为1km。后面我们再详细的介绍CAN的相关知识。

就简单说到这了,总之,工业总线是非常多的,具体还是要看你涉及的领域和技术栈,没有最好,只有最合适该项目的,最合适的就是最好的,但是对于常见的即使用频率高的一个总线标准,我们应该去了解它,这是基本技能。

can通道采样频率_哪个是嵌入式开发中最常用的外部总线:RS232?RS485?CAN?LIN?……...相关推荐

  1. c语言改变cmd 字体大小_嵌入式开发中常见3个的C语言技巧

    原文:https://www.cnblogs.com/CrazyCatJack/p/6080266.html 1.指向函数的指针 指针不光能指向变量.字符串.数组,还能够指向函数.在C语言中允许将函数 ...

  2. 理解嵌入式开发中的一些硬件相关的概念

    为什么80%的码农都做不了架构师?>>>    做嵌入式系统开发,经常要接触硬件.做嵌入式开发对数字电路和模拟电路要有一定的了解.这样才能深入的研究下去.下面我们简单的介绍嵌入式开发 ...

  3. 嵌入式开发中DSP与FPGA的关系

    嵌入式开发中DSP与FPGA的关系 常所说的单片机侧重于控制,不支持信号处理,属于低端嵌入式处理器,arm可以看做是低端单片机升级版,支持操作系统管理,更多接口如网卡,处理能力更强;fpga是可编程逻 ...

  4. 嵌入式开发中常用的几种通信接口总结

    关注.星标公众号,直达精彩内容 在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线. 以下内容为常用板上通信接口:包括I2C.SPI.UART.1-Wire: I ...

  5. 嵌入式开发中C语言编程要点简述!

    在嵌入式Linux的C语言开发中,C语言的基本编程依然是最重要的内容.除此之外,与一般的C语言编程相比,嵌入式Linux的C语言编程有以下一些要点: 1.库函数与系统调用 在进行C语言编程的时候,使用 ...

  6. 嵌入式开发中数值常量如何转化为内存地址?

    作者 | 李肖遥       责编 | 欧阳姝黎 最近在使用 Nordic 的最新蓝牙芯片 nRF52832 开发过程中,因为做一些测试涉及到对内存地址的操作,有(*(volatile unsigne ...

  7. 浅析嵌入式开发中的RAM和ROM

    在嵌入式开发中常常会遇到RAM,ROM,flash,内存等等一些问题,先梳理一下备用. 1.ROM:只读存储器.优点:容量大,掉电不丢失:缺点:读取速度慢.事实上,"只读"定义不准 ...

  8. 状态机思路在嵌入式开发中的应用说明及注意事项(普罗米修斯中不少功能节点用了状态机的方法来写)

    我感觉普罗米修斯很多功能模块里面都用到了状态机的思路 比如圆环穿越的,比如最新的二维码降落的代码. 摘自:https://mp.weixin.qq.com/s/qRmBDH-VIHM26AaNFoD9 ...

  9. 嵌入式开发中,嵌入式硬件和软件有什么区别?

    嵌入式指的是把软件直接烧录在硬件里,而不是安装在外部存储介质上,就像赋予机器人灵魂,从而方便人类操控.在嵌入式开发中,分为嵌入式硬件和嵌入式软件,大多数人对嵌入式的硬件和软件之间的区别不是很了解,现在 ...

最新文章

  1. android工程r红,Android Studio - 为什么R随机变为红色?
  2. dart 语言是jvm_Dart编译技术在服务端的探索和应用
  3. 【十大经典排序算法】java实现--插入排序(3)
  4. 课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现
  5. P7099-[yLOI2020]灼【数学期望,结论】
  6. 在linux上安装mysql5.6,在linux(Centos 7以上版本亲测)上安装mysql5.6
  7. Android Camera调用流程
  8. direct 3d技术内幕 配套光盘_广州道晨为您提供模具部品3D打印随形水路设计与制作等一站式整体化解决方案...
  9. 13_新闻客户端界面搭建
  10. android系统中如何通过程序打开某个AccessibilityService
  11. python中else与if的匹配原则是什么_if-else语句中,if和else的配对原则各是什么
  12. 大型运输行业实战_day07_2_数据字典实现
  13. Nicescroll滚动条插件手机端问题总结
  14. ad采样的符号位_AD采样后数据如何在FPGA中转化为有符号数
  15. 三星手机刷机后显示无服务器,三星Odin刷机工具连接不上_Odin工具识别不了手机的问题...
  16. WIFI驱动详细设计说明书
  17. pentaho的使用与感受
  18. 网页设计css导航链接怎么做,如何用DIV+CSS制作导航条
  19. 一个小技巧告诉你,邮箱域名地址格式怎么选择?
  20. 神锁离线版插件的安全设计

热门文章

  1. 筛选平台数据包丢弃_高并发电商平台设计
  2. 大数据分析工程师证书_CDA数据分析就业班、大数据就业班就业情况怎么样?
  3. 服务器位置设置在哪里找,服务器主页在哪里设置方法
  4. ajax与后台php,怎么在thinkPHP5中使用ajax实现与后台数据交互
  5. The J2EE Architect's Handbook讀書筆記(一)
  6. HTML5的Web存储
  7. Windows API——FindFirstFile——查找文件
  8. mysql完全手册阅读笔记
  9. [VB.NET]文件观察对象FileSystemWatcher
  10. ICCV2021—工业界中的神经网络视频传输超分算法