打印
[菜农群课笔记]

农民进城第一课《GPIO之硬件设计进阶》

[复制链接]
12772|67
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2010-12-26 15:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hotpower 于 2011-3-20 02:47 编辑

主讲人:雁塔菜农
课  题: 《GPIO之硬件设计进阶》
内  容:菜鸟在GPIO设计中应该遵守的要诀等
          为纪念今天毛爷爷的117周年诞辰,红杏V1.17群外公开发布且公测
地  点:菜农Cortex-M0技术交流群 群号:12047788
时 间:暂定为午夜凌晨1:17开讲,有可能提前来电。

菜农HotPower 2010.12.26 于雁塔菜地


相关帖子

来自 2楼
tear086| | 2010-12-26 20:21 | 只看该作者
本帖最后由 tear086 于 2010-12-27 12:11 编辑

21:53:44
农民进城第一课《GPIO之硬件设计进阶》

21:54:15
学单片机从何学起呢???

21:55:02
至少知道与,或,非,异或

21:56:03
这四种可谓“万物之根”

21:57:41
学习单片机不懂这些行吗???

21:57:47
肯定不行

21:58:22
还要知道二极管,三极管,电阻,电容及电感

21:58:53
若知道了这些,就可以上阵学习单片机了

21:59:09
菜鸟进阶只需今晚时分



22:02:03
这就是TTL的输入级

22:04:05
这就是我们今晚的要点之所在

22:04:57
为什么单片机可以控制LED亮和知道键盘有输入呢???

22:05:20
如何设计才是合理的呢???

22:09:27
为什么键盘一般需要拉低有效呢???输出也要低电平输出呢?
即为什么都是“负逻辑”设计呢???

22:11:28
假若键盘采用正逻辑设计会出现什么问题呢?为什么需要将设计者拉出去枪毙呢?

22:12:45
纵观天下,只有51的复位是正逻辑设计,为何不被枪毙呢?

22:13:49
51不是很成功吗?为何没人再敢用正逻辑复位?

22:14:30
农民虽在乡村,足不出门,但这些还是有思考的

22:15:13
谁给俺再举出一个正逻辑复位的MCU/ARM/DSP/CPLD/FPGA

22:16:48
因为51的复位采用了施密特触发电路,即高门槛电路

22:17:24
此电路必然成本增加,故没人跟进

22:18:23
一般认为IO悬空为无关或高电平

22:19:34
那么试问压下键有效为高,那么断开不也为高吗?

22:20:25
时间的关系,一般认为对如TTL这样的输入级应该采用负逻辑设计

22:20:56
那么为什么输出也要用负逻辑呢?



22:22:01
可以看到TTL的输出级(俗称“图腾柱”)

22:22:38
它的R4就是一个限流电阻

22:23:56
假若无此电阻,假若(不可能的)T3,T4同时导通会是怎样???

单片机玩家(373884636)  22:24:45
那VCC对GND就短路了呀。

22:24:46
所以任何IO的输出设计必须有此电阻,即内部动态电阻

22:25:52
根据其大小称为“弱上拉”或"大电流输出"

22:26:43
故IO的低电平一般要比高电平的输出都大些

22:26:54
几乎不可能一样

22:27:24
所以,一般输出也应该采用“负逻辑”设计

单片机玩家(373884636)  22:27:24
我知道51的灌电流要远远大于拉电流

22:27:48
对,有灌和拉之分

22:28:48
现在就进入MCU的IO

22:29:12
上51的IO图来

22:31:22
51的生存周期长久的一个重要原因就是它IO设计的简单和独到

22:32:15
大家应该用过近代的IO吧,如PIC,AVR,。。。。

22:33:20
这次芯唐跟进了,它太聪明了

D.H(46915379)  22:33:43
读写方向控制。
D.H(46915379)  22:33:50
上拉下拉控制。
D.H(46915379)  22:33:59
驱动电流控制。

22:34:00
对,用读写方向控制

22:34:28
刚说的是真双向IO

22:37:28


22:38:09
这种电路可以做到IO永远不会烧毁的自检程序

22:39:36
当外部为低电平即负逻辑输入时,由于是内部上拉,电流很小

22:40:48
反之,当IO输出低即?V2对地时,外部是不敢接VCC或高电压的

22:41:51
但是,由于它是准双向IO,即输出低时,还能检测管脚的电平

22:42:16
提问,此时会烧毁吗?

世风依人(181323226)  22:42:57
烧毁要时间,看muc反应时间了

22:43:48


22:46:18
此时读IO为“1”

22:47:45
当你读为1时,迅速将IO切换为输入或输出1,则IO无忧也~~~

22:48:03
为什么读出为“1”,何也?

datouyuan<datouyuan123@qq.com>  22:48:07
这个口的输出功能没有了。
输入功能还有用。
V2烧断了。

22:48:52
不会烧,假若你处理迅速

22:50:29
这个问题实际归结为三极管的EC间施加了VCC

22:51:41
EC实际是有内阻的,在短时间会产生大电流,温度迅速升高

22:52:30
当处理迅速,则IO无事也

22:53:08
这个问题结束,这是俺从85年就开始的自检程序

22:54:26
都有内阻的,就是大小问题

22:55:12
由于VCC施加在IO上,所以读IO就是读到VCC,所以读为“1”

22:55:26
因为快

22:55:53
输出后立即读一次

世风依人(181323226)  22:55:58
大概时间多少?

22:56:14
就2条指令的时间

datouyuan<datouyuan123@qq.com>  22:56:25
我理解了
在准双向口,采用这种方式可以识别io口是否有错误。

HotCortex(106821270)  22:56:48
IO自身安全性好

22:56:53
晕,俺在STC上有测试程序
http://blog.21ic.com/user1/46/archives/2005/560.html

22:57:53
对,就是准双向

22:58:29
它是弱上拉,真IO俺没敢试过~~~

22:59:59
若电源加保护,则可以做到IO永不烧毁

23:00:30
而且可以检测管脚之间的短路,开路等

23:01:53
因为当年的制版技术的落后,过孔断,管脚复连等,俺才琢磨了此招

23:03:04
俺给人表演:用一把铁砂洒在51管脚上,还有用锯条弹钢琴

23:03:36
任意短路,拿个VCC,GND乱桶

23:04:27
程序就是俺刚给的链接,此非典已经25年了

23:06:03
M0的IO如何?

23:06:47
至少有准双向IO可以自检

23:07:18
所以,今天俺就重点地讲了准双向IO

23:08:30
http://blog.21ic.com/user1/46/archives/2005/560.html
这个就是因为STC管脚被烧毁后找不到原因而编写的

23:08:49
这样俺才找到原因

23:09:18
记得STC当时在二姨这也有论坛

dcp(79505816)  23:11:07
真是佩服 一个IO也用得这么细

23:11:22
还跟VCC抢时间

23:11:27


23:12:26
而且不用判断就知道什么管脚错了,是短路,开路,接VCC,接GND

23:11:45
你可以看那个例程
http://blog.21ic.com/user1/46/archives/2005/560.html

23:21:20
M0的GPIO


23:22:26
它实际51的增强型



23:23:26
这就是近代的IO输出

23:23:41
俺没看它的指标

23:24:30
有些标注:
拉电流15mA
灌电流20mA

23:24:35
何也?

23:25:17
这变相地说内部是上拉电阻

23:28:17


23:28:48
它的输入为什么有2个非门,不加也一样呀??
何也?

23:29:51
整形

23:31:08
外部信号可能是杂乱的,边沿不可能笔直

23:31:43
有可能在非法的电平之间徘徊


23:32:08
假若它不是施密特就是一般的OC

23:33:19
这个电路要比51的准双向IO复杂许多

23:34:35
可以选择4个模式,这个是其一


23:35:06
这个干什么的?

23:35:40
防止竞争冲突



23:36:48
奇怪不?

23:38:06
现在讲点红杏如何操作IO

23:40:40
芯唐的M0的GPIO现在分两种

23:40:55
一种是所谓的快速IO

23:41:06
一种是普通的

23:41:17
俺想电路都是一样的

23:41:29
只是编程不一样

23:41:46
在NUC100(可能以后会改)


23:44:32
        PORTs.PB.DOUT.Bits.Pin0 = 1;

23:44:54
这是 nuc100的IO输出

23:45:18
它用的是位域方式

23:45:59
既在寄存器PB.OUT把PIN0置1


23:47:04
输出级的PMOS打开

23:47:44
OUT=1,非门输出0,PMOS需要低才打开

23:48:10
故PB.OUT.Pin0=1就让PMOS输出了

23:48:34
所以,脑子里要有硬件图

23:48:53
哪怕一个IO管脚

23:49:29
可以看出PMOS和NMOS是不会同时打开的

23:49:44
NMOS需要高才打开

23:50:05
所以,学了它就知道了mos管

23:53:34
芯唐的M0的IO在两个系列及NUC100和M051都可以用 DOUT控制输出IO

23:54:01
但是大家知道位域的效率是最低的

23:54:20
而结构的偏移效率是最高的

23:55:31
因为在文字池中取出PB的首地址后,偏移是可以在指令中不浪费其他计算的

23:56:27
所以,M051有快速IO即结构偏移寻址的操作指令

23:57:05
//0x00000D22~0x00000D2E        7条指令14个字节(不推荐语句)
        PORTs.PBDx[E_PORT3].Pinx[E_PIN6].Bits.DOUT = 1;
        __NOP();
//0x00000D32~0x00000D35        2条指令4个字节(极力推荐语句)
        PORTs.PBD3.Pin6.Regs = 0;
  
23:57:51
这个讲需要很多时间

23:58:14
自己先看看红杏中他们的区别

0:00:04
即快速IO是靠浪费寄存器分配的空间提高IO的速度的
普通IO是位域即节约寄存器分配空间而降低IO速度的

1.jpg (14.53 KB )

1.jpg

2.jpg (21.01 KB )

2.jpg

6.jpg (24.07 KB )

6.jpg

7.jpg (15.68 KB )

7.jpg

8.jpg (24.53 KB )

8.jpg

9.jpg (30.35 KB )

9.jpg

10.jpg (59.18 KB )

10.jpg

11.jpg (10.29 KB )

11.jpg

12.jpg (7.63 KB )

12.jpg

13.jpg (15.49 KB )

13.jpg

使用特权

评论回复
板凳
火箭球迷| | 2010-12-26 17:56 | 只看该作者
关注。。。

使用特权

评论回复
地板
retools| | 2010-12-26 18:43 | 只看该作者
这个要顶

使用特权

评论回复
5
hotpower|  楼主 | 2010-12-27 00:05 | 只看该作者
哈哈~~~农会暂无银两,发放棉裤一条以资鼓励

使用特权

评论回复
6
ocon| | 2010-12-27 17:26 | 只看该作者
很好的课程:victory:

使用特权

评论回复
7
c51avr| | 2010-12-27 19:27 | 只看该作者
:victory:

使用特权

评论回复
8
yuyi21ic| | 2010-12-28 16:49 | 只看该作者
MARK ,晚上看,LZ辛苦了!

使用特权

评论回复
9
zaianda| | 2010-12-28 17:30 | 只看该作者
MARK

使用特权

评论回复
10
金鱼木鱼| | 2010-12-28 20:09 | 只看该作者
受教了

使用特权

评论回复
11
sinadz| | 2010-12-28 21:37 | 只看该作者
很称职的会议报到员,学了不少知识

使用特权

评论回复
12
mcu_david| | 2010-12-29 10:08 | 只看该作者
收益不少,谢过了!

使用特权

评论回复
13
yybj| | 2010-12-29 15:56 | 只看该作者
这是在帮大家补习模电和数电:lol

使用特权

评论回复
14
anjunyang| | 2010-12-29 19:50 | 只看该作者
好的~有时间学

使用特权

评论回复
15
秋天落叶| | 2010-12-29 21:20 | 只看该作者
很有启发,如果能整理的更好一点。。。

使用特权

评论回复
16
batsong| | 2010-12-30 13:48 | 只看该作者
菜农讲的这个很有用的,看到有的同学搞了几年了这些基本的东西还是浆糊

使用特权

评论回复
17
xsgy123| | 2010-12-30 18:46 | 只看该作者
总体还不错

使用特权

评论回复
18
416775364TP| | 2010-12-30 19:22 | 只看该作者
MARK

使用特权

评论回复
19
pkat| | 2010-12-30 21:45 | 只看该作者
还不错:lol

使用特权

评论回复
20
hq_y| | 2010-12-31 18:19 | 只看该作者
蛮好的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21619

帖子

506

粉丝