前言
古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。
相对于最初几节的轻松愉快,随着学习深入,必然有不懂的名词或者专业术语。何止是学一门技术,实际做任何事情都一样,没有太多一帆风顺的坦途,往往处处沟壑。那么如何跨越它,只有一个办法,架桥! 锻炼下意志力吧!先从能看完一篇科普短文开始。还是那句话,如果这个系列的入门知识看不下去,那么说明你是技术绝缘体,请回头看抖一抖视频,轻松愉快的过完这一生,本专栏是爱看不看系列,只为正能量爆棚、意志力坚韧的朋友准备。
16.1 上位机与下位机的桥梁:驱动程序与驱动电路

上位机一般指的就是我们用的个人计算机,随着技术进步现在看平板、手机都可以作为上位机的一种了。
下位机一般指的是我们现在学习的单片机和PLC之类的硬件设备。
在开发工程师中,有一类公认的神人,驱动程序员。为什么驱动程序员封神的很多,他们既要懂操作系统,也要对底层硬件了解的深入,是精通应用程序工程师、嵌入式工程师甚至硬件工程师的大部分工作的通才。
先拜拜神人,沾点才气,然后必将踩死犬蛹。

今天我们学习的C区的硬件,就是驱动电路,核心的单片机里面写的程序就是与USB接口通讯的驱动程序。


C区核心是一个单片机 ATmega16,很多人看到单片机就会觉得高大上,以为这辈子与单片机编程无缘了,实际上单片机电路相对于电源部分电路及其他模拟部分电路,可以说降低了3个数量级的难度。
如果对嵌入式程序说有点难度的话,硬件工程师设计单片机电路可以说是最简单的。
基本上学会一个单片机硬件电路,同类型的单片机就不需要再学了,照着拷贝就能够完成大部分任务。
隆重欢迎今天的主角登场ATMEGA16U2-MU
原厂家的数据表: http://120.52.51.17/http://ww1.microchip.com/downloads/en/DeviceDoc/doc7799.pdf
单片机相信很多人是感觉挺复杂的一件东西,上一节我们说过,当你觉得她复杂时,就把它当做一个人来理解就好了。
单片机是一台电脑,也是一个人。单片机稍微加几个零件就是一台完整的电脑,一位内在相似度80%的人。
看看一个单片机的科普视频
https://www.iqiyi.com/w_19ruret421.html

这图漂亮吧!是不是看到这么复杂的图,准备退避三舍了:)
那么我们换张图,

我们的大脑的复杂度是上面单片机内部框架图的亿万倍。这不是完全降维打击它么。
上面那张图,你看它像什么? 像一个小镇,有道路,有建筑物;也像一家大型的工厂,每个车间都完成一定的功能,最后装车、运货、收货...
这样我们再看它是不是亲切很多?
是不是有很多道路,道路中跑着的小车就是数据,不同的车辆是不同的数据。 这里有个视频有很多时网络协议的数据包传输过程。只是更复杂。提前预览下。
http://video.tudou.com/v/XMTE2NzkxODA=.html
单片机像村镇,电路像道路,数据包像货车。 为什么现在不把它类比为水了,而是更加复杂的物体?
这是因为 #聚沙成塔# ,无序的电子像流动的水,有序的排列组合就能组成形体。一个个电子元件犹如各种容器,各种复杂的容器组合是什么?房子也是个容器,就是体积大了。
16.2 栈桥
C区这个单片机的作用就是架起电脑与核心单片机的桥梁。


青岛栈桥这个名字起得非常好,栈和桥在通讯电路中,或者写程序时都是常见的两个名词。栈有缓存的意味,桥自然是连接用的。 再加上海天共一色的青岛,欢迎到青岛赏天赏海赏秋香:)


最近写了不少,反馈不怎么好,点赞、评论都比较少,估计我哪里写的有问题了;欢迎如果知乎朋友、同学们在讨论区给予说明和提提建议。 先暂停一段时间,了解下同学们那里有疑问,不知道问题去写,仅是自嗨没啥用:)
很高兴获得 @haoziadad @迷路的麋鹿 给出的建议与认可;还有朋友们的点赞就是动力。
秋香姐欣赏完了,那么继续我们的技术拓展。
向来从善如流,思索了下,文章改用上下两部分的写法,前半段,针对入门的朋友,后半段针对进阶的朋友。
前半段待续...
========================
进阶篇
展现真正技术的时候到了,向导不仅仅会科普写文,稍微专业点也凑合。
实际上,Arduino Uno Rev3 作为Arduino第一款开源硬件,做的非常好,然后各大公司对它的支持力度都不错。
Atemga16 在其中实现了USB转串口的功能。国内CH340系列,也是常用的USB转串口芯片。国外的FT232系列是比较知名的产品。
Atmega16 是atmel公司的单片机,现在已经被Microchip Technology收购了,所以我们上网搜索其DataSheet,到达的官网是Microchip。
Atmega16 本身是一款单片机,但是Arduino的大神们编制了一段程序,用来模拟USB转串口的芯片,并且做得非常稳定。并且免驱动可以用在windows平台中。
实际试验下,Win10 我用的系统,CH340G,CH340C等芯片仍然有蓝屏情况出现,这种情况不是说明CH340这款芯片不好,而是其驱动程序总是不如微软原生的兼容性更好。因为Arduino用户量特别大,同为欧美的产品,微软对其的支持力度相对较好。虽然芯片稍贵,但是稳定性好。如果有工程师制作开源的硬件产品,参考其电路的话,建议使用Atmega16芯片模拟usb转串口,另一款FT232口碑也不错,但是价格昂贵。
或者使用ch340 但是要容忍偶尔的崩溃,如果是做大量的产品,稳定性第一位的。

图中,USB-B_TH 为方口USB插座,标准定义,其中F1 位500ma PTC自恢复保险丝,自恢复保险丝的作用就是在过流的情况下断电,待电流正常后再恢复连通状态。
RN3.1 RN3.4 皆为22R 的电阻,用于限流保护Atmega16芯片。Z1 Z2 用于保护D-D+接口,L1 用于连接方口USB外壳和内部的GND,一般像电脑主机箱或者我们带外壳的工业设备、家用设备,内部PCB的数字地或者模拟地不能与外壳直接相连,这个电路是放置了L1 作为外壳地和内部地的连接,另外一种常用的方式,是用一个1M电阻并上一个10nf/2000V的安规电容作为连接器件。
一般机箱或者外壳为金属的设备,避免干扰或者触电,都需要加上这几个元件作为防护或去干扰的措施。
作为单片机我们前几节说过,要保证其工作必须有几个先决条件:
1)电源 VCC AVCC
2)地 GND
3)晶振电路 R1 Y1 C9 C11
4)复位电路 D3 RN1.3
5)写程序接口 ICSP1
没有电源和GND,犹如人没有心脏,没有血液。没有晶振,犹如人没有生物钟。
复位电路就是将单片机的各个引脚和内部电路初始化成原始的状态。
单片机一般都是可以反复写入程序的,所以必定有烧写程序接口。
ATmega单片机,烧写程序的接口非常标准,电源、GND、SCK、RESET、MISO、MOSI六个引脚,组成完成的烧写接口。
单片机写程序是需要专门的烧写工具的,微雪公司有几个工具,不过太贵,还有些简易的烧写工具,一个USBISB硬件+ProgISB软件,也可以实现烧写程序的功能,成本十几块钱,简单写写是可以的。
单片机的学习很多人容易陷入一个误区,喜欢拿到教程一点点的研究内部的寄存器或者艰深的算法理论或者比较复杂的函数、程序实现方式。
这种学习方法效率非常低下。
作者总结的快速方式是,找到市面上的开源硬件,然后直接找到一份完整的程序,最好是说明也完整的,然后直接烧写进去,能够让其运行,然后一句句的代码拆解,进行反向理解。
也就是先实现功能,然后倒推的方式。搞懂一个完整的单片机程序,在学习另一个。
这样可以快速的实现功能,兴趣也来了。
学了半年连一个单片机完整的功能都实现不了,相当一部分同学卡在了这里,然后放弃。
特别注意图中,PD7(13引脚)的外接电路,它实现的功能是电脑Arduino程序准备好,进行下载到Atmega328内部时,提前给Atmega328一个复位信号,这样才能继续写入。
因为有些人自制usb转串口的功能来代替atmega16,但是没有把这个引脚功能理解清楚,所以不能实现下载的功能。
例如下面的原理图,实现CH340 替代atmega16的功能。
https://www.arduino.cn/thread-19538-1-1.html
这里说明下,C区部分的atemga16 完全可以被CH340 FT232 等USB转串口芯片替换掉。
Arduino是一个完整的开源平台,实现的思想非常好,能够我们以非常低的门槛用软硬件实现自己的想法,所以在开源领域非常著名。
想学习软硬件,新手可以从这里入门。
进阶篇总结:
Atmega16,是电脑下载程序到Atmega328之间的桥梁,它实现的功能就是USB转串口。可以用其他的USB转串口芯片替换掉

被折叠的 条评论
为什么被折叠?



