Bit-banging 是一种用软件替代专职硬件的串行通信的技术。软件直接对微处理器的管脚的状态进行设置和采样,其功能涵盖诸如:时 钟,电平,同步等所有参数。与此不同的是(传统的串行通信技术中),专职硬件诸如 modem、UART 或者 位移寄存器等一般是用来处理这些参数并且提供一个(缓存)的数据接口,软件在这种情况下同信号处理无关。实现 Bit-banging 技术的成本可以是很低的,比如利用 嵌入式系统。

  尽管它同“骇客”有些关联,bit-banging 具有明显优点诸如:让相同的设备运行不同的协议而只需很小的(甚至不需)硬件的改动。借助很少的额外设备,我们也许可以从数字管脚(数字终端)可以得到视频信号。   bit-banging 也有一些明显的缺点。在软件仿真的过程中消耗的能量比同样功能的专职硬件大。微处理器过忙地从管脚采样和发送采样信号到管脚。在同等微处理器处理能力下, 系统常常会有些噪音。尽管如此,如果bit-banging 仅仅是相应硬件中断的例程的话,这些影响便微乎其微。   C 代码例程   // transmit byte serially, MSB first   void send_8bit_serial_data(unsigned char data)   {   unsigned char i;   // select device   output_high(SD_CS);   // send bits 7..0   for(i = 0; i < 8; i++)   {   // consider leftmost bit   // set line high if bit is 1, low if bit is 0   if (data & 0x80)   output_high(SD_DI);   else   output_low(SD_DI);   // pulse clock to indicate that bit value should be read   output_low(SD_CLK);   output_high(SD_CLK);   // shift byte left so next bit will be leftmost   data <<= 1;   }   // deselect device   output_low(SD_CS);   }

转载于:https://blog.51cto.com/dongyulong/423511

Bit-banging相关推荐

  1. 影像锐化工具_如何以及为什么要进行工具改造:花在锐化斧头上的时间永远不会浪费...

    影像锐化工具 by Harshdeep S Jawanda 通过Harshdeep S Jawanda 如何以及为什么要进行工具改造:花在锐化斧头上的时间永远不会浪费 (How and why you ...

  2. 软件工程与软件测试基础知识_这是我在软件工程工作九个月中学到的知识

    软件工程与软件测试基础知识 I've been working for about nine months at Dexter as a software developer. I wrote a b ...

  3. im和音视频开发哪个更好_找时间成为更好的开发人员

    im和音视频开发哪个更好 There's no time for anything. At least that's how it feels doesn't it? No time to learn ...

  4. 为什么要使用String.Equals over ==? [重复]

    本文翻译自:Why would you use String.Equals over ==? [duplicate] This question already has an answer here: ...

  5. 关于org.apache.lucene.queryParser.ParseException: Encountered 解决方法

    现象: org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, col ...

  6. php pg connect,pg_connect

    用户评论: [#1] Anonymous [2015-04-24 06:41:02] If you get the following warning : "Warning: pg_conn ...

  7. linux内核趣味,有关Linux 50个趣味名人名言

    50. I develop for Linux for a living, I used to develop for DOS. Going from DOS to Linux is like tra ...

  8. 打字机已经被计算机所取代用英语,无法被电脑所取代的职业

    无法被电脑所取代的职业 计算机和智能化设备的发展,让人们担忧今天的很多职业在未来将不复存在,如同曾经的打字机打字员一样.那么,有哪些职业是无法被电脑所取代的? 测试中可能遇到的词汇和知识: pedan ...

  9. ios PNG Crush error (PNG图片错误)

    我是这么解决的: I had the same problem. How to fix : Open up image with Preview -> File > Export > ...

  10. powerpoint技巧_几乎每个PowerPoint都烂鸡蛋

    powerpoint技巧 Almost 20 years ago - 2001! - Seth Godin wrote an ebook called Really Bad Powerpoint (a ...

最新文章

  1. unsupported operand type(s) for + NoneType and int
  2. 苹果系统怎么降低版本_1903、1809...到底怎么看系统版本?
  3. bootstrap-按钮(按钮工具栏)
  4. Keepalived 使用指南
  5. 记一次Weblogic连接池泄露的修复过程
  6. 你真的知道怎么实现一个延迟队列吗 ?
  7. tcpsyn发生在哪层_必看面试题之计算机网络:来自一位拿到了腾讯和字节双offer的大佬...
  8. cannot find mysql.frm_mysql 问题 - Run佳的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 怎样更改itunes备份位置_iphone备份太大,严重挤占C盘空间,怎么把备份放在其他的硬盘?...
  10. 在网页上获取当前日期,数字时钟
  11. 网易云音乐API 分析
  12. 百度地图之离线下载功能
  13. 哥伦比亚大学 Schulzrinne 教授:撰写科研论文详细教程
  14. Jquery colorbox不错的遮罩
  15. 自定义tab(上面是图片 下面是文字)
  16. python英文文本分析和提取_英文文本挖掘预处理流程总结
  17. 分组加密中的四种模式(ECB、CBC、CFB、OFB)
  18. pythonselenium浏览器_python3的爬虫笔记11——Selenium和浏览器的一些设置
  19. python中replace()方法
  20. 笑话:​我是个程序员,一天我坐在路边一边喝水一边苦苦检查程序。这时一个乞丐在我边上坐下了,开始要饭,我觉得可怜,就给了他1块钱...

热门文章

  1. 中科院计算所培训中心三季度公开课安排
  2. 闪存驱动器_仅使用闪存驱动器即可测试Linux
  3. 函数生成的ALV的按钮列表
  4. android 分辨率 尺寸,Android 屏幕分辨率与尺寸
  5. SAP License费用如何收取
  6. 验证码识别(Tess4J初体验)
  7. cdh用户权限_CDH用户管理
  8. [BOST] 博赞有机的学习技巧
  9. java中pack()
  10. 如何制作一份教师待办事项列表?多功能待办软件来帮你