提到通信,软件工程师并不陌生,但他们更多的是指网络通信,尤其是指socket。你要是和软件工程师说什么串口、SPI、I2C、Modbus、CAN等等什么的,他们也会莫名其妙。俗话说,“隔行如隔山”,就是这么个道理。
今天我们不说socket,只说硬件中的几个基本的通信方式。
硬件虽然属于底层,但是通信也是少不了的,比如说,单片机要和电脑交换数据、单片机之间交换数据、单片机和传感器之间的数据交换以及单片机和其他硬件设备之间的数据交换等等,这些都涉及到通信的问题。既然要通信,肯定就涉及到怎么通信的问题,也就是我们经常说的通信协议。一个人自言自语,那不能叫交流,至少得两人,你一句我一句,才能算是交流。所以通信协议需要规定两个人谁先说、谁后说,我点点头,表示你可以继续说,我摇摇头,表示你不能再说了。
单片机的通信协议有很多,但是经常用到的主要是uart、spi、i2c以及usb。别看这些英文莫名其妙,但本质都是一样的,无非就是规定什么信号表示选择设备,什么信号表示开始,什么信号表示结束,什么信号表示对方回复。这就和我们平时打电话一样,通信录里那么多的朋友,你不能一个电话打给所有人吧,那就成了广播了。所以我们得先选择其中一个人,比如说赵丽颖小姐姐,单片机里将这个动作就定义成一个信号,比如说我发送连续1秒钟的高电平,小姐姐如果接我的电话,她就给我回一个信号,比如说间隔500毫秒,连续三次,然后电话就通了。这时候就可以传送数据了,看看就这么简单。
当然,实际通信中,因为需要考虑到诸多因素,情形比我们上面描述的要复杂一些。我们今天只需要对这几个通信协议有个概念就行,具体每个通信协议是如何定义和操作的,到具体应用的时候再详细描述不迟。
非常感谢大家的阅读!祝大家情人节快乐!

【软件工程师学硬件】之 通信相关推荐

  1. 【软件工程师学硬件】之 PCB

    PCB?软件工程师肯定不知道.但是你说电路板见过吗?他还是见过的.那PCB就是电路板,说这个硬件工程师不同意了,说这两个可不是一个意思,是的,你说其他的意思人家不明白,说到电路板就明白了.既然是由兴趣 ...

  2. 【软件工程师学硬件】之 开关电源(5)—— 再谈Viper12a

    因为我这个系列主要针对软件工程师和硬件入门者,所以不免要重复和啰嗦几句.大家都看见过三极管,也看见过集成块,也就是我们经常说的芯片,别看有的集成块表面上和三极管长得像,实际上可不是一个量级的玩意,就这 ...

  3. 【软件工程师学硬件】之 时钟

    软件工程师写程序不会去考虑时钟,除非是涉及到性能要求时,才会去看一看.硬件工程师则不然,他们对时间要求很苛刻,单片机的时钟频率,是他们关心的一个重要指标,4M.8M.12M.48M.72M.200M. ...

  4. 【软件工程师学硬件】之 At89c51

    89c51,对于硬件工程师来说,已经是熟得不能再熟了,甚至很多资深硬件工程师已经非常讨厌这种芯片了.事实不然,我们每一个学硬件的从接触硬件的第一天开始,这个名字就深深地烙在心底,虽然他们后来大部分都转 ...

  5. 【软件工程师学硬件】之 开发板

    硬件工程师口中总是离不掉那么几个词,其中开发板是频率比较高的.实际上这个开发板就相当于软件中demo程序,一般做软件项目的时候,软件工程师总是喜欢在网上东找西找,找个类似的项目源代码,down下来研究 ...

  6. 【软件工程师学硬件】之 仿真

    大多数软件工程师对仿真没有概念,因为软件里没有仿真的说法,但是软件开发里原型的说法,这个原型就有些类似于仿真. 仿真,顾名思义,就是乱真,和真的差不多.这只是个说法,要是假的都能成为真的,就不需要真的 ...

  7. 【软件工程师学硬件】之 继电器

    大多数软件工程师都知道继电器,因为中学物理书里就提到过.实际上继电器就类似与我们之前所说的三极管,有两个回路,一个回路是小电流.低电压,一个回路是大电流.高电压.当三极管在开关状态时,就和继电器的作用 ...

  8. 软件工程师学硬件-怎么看原理图之协议类接口UART

    其中TXD0的引脚接到了电平转换芯片MAX3232SOP这个电平转换芯片,TXD0出来经过电平转换芯片到了RSTXD0.然后RSTXD0接到串口座.串口座与电脑的串口引脚相连.同理,3号引脚RSD0经 ...

  9. 【软件工程师学硬件】之 振荡器(2)

    振荡器的工作原理很简单,大家在初中物理都学过单摆,就是一根悬挂着的绳子系着一个铁球,然后推一下铁球,铁球就摆动起来,但是摆动不了几下,就会渐渐停下来,什么原因?空气的阻力将能量渐渐消耗尽了,球就停止摆 ...

最新文章

  1. 《MySQL CAST与CONVERT
  2. (一)win7下cocos2d-x 21 + vs2010
  3. Linux下的静态库、动态库和动态加载库
  4. Publish/Subscribe
  5. 数据结构实验之链表六:有序链表的建立
  6. 斥资2亿加码新消费,“瓜子之王”洽洽要圆“坚果梦”?
  7. 如何用python自动改试卷_利用Python和Jinja2自动生成试卷
  8. tp5 linux路由不跳转,thinkphp5路由不生效一直跳到首页的解决方法
  9. [转]C++异常处理 12
  10. php权限无需验证的控制器,Thinkphp6用中间件实现多个控制器判断用户登录权限
  11. 悄悄告诉你如何快速突破大厂逻辑题
  12. Chirp信号基础知识及matlab实现
  13. 微信公众号留言功能开通流程
  14. 最全的搜索引擎入口和分类目录入口
  15. Palantir早期员工、连续创业者Brien Colwell:创业动力源自创造文化
  16. 深度学习中训练迭代次数理解【源码阅读技巧分享】【深度学习循环迭代理解】【for X, y in train_iter:】
  17. 【英语六级】【仔细阅读】(4)
  18. Android N - Data Saver
  19. PyCharm的安装与使用
  20. RC滤波器(高通/低通)

热门文章

  1. 最佳视频播放器:Adobe Flash Media Playback
  2. Python静态网页爬虫----文字小说爬虫
  3. 【嵌入式】简单stm32程序的运行与Proteus的仿真测试
  4. k8s集群calico-node CrashLoopBackOff
  5. 傅里叶变换 ~ FFT概述
  6. 7款开发者必备的装机软件
  7. oracle中删除yuj_oracle数据库的删除
  8. android创建标题栏,【Android】利用服务Service创建标题栏通知
  9. 2022数字经济发展趋势下的人才战略转型
  10. 出行平台为了规范司机驾驶行为:按键精灵 PHP抓取司机监控摄像头视频数据并按帧截图保存,AI识别玩手机,抽烟等违规行为