应广单片机 c语言,双核单片机 应广芯片 【芯片介绍2】

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

【IO简介】

(1). 一般 IO 架构图:

(2). 一般 IO 输出入表:(以 PA 为例)

PAC.x PA.x PAPH.x

Output High 1 1 X

Output Low 1 0 X

Input + Pull High 0 X 1

Input 0 X 0

Pull High 在 Output Low 时,是自动被关闭的。

至于 Output High 时,有无 Pull High,影响不大。

(3). 简易 IO 语法,请参考如下范例:

$ PA.0 Out, High; // PA.0 输出 High

$ PA.1 Out, Low, In; // PA.1 输出 Low 后,再切为 Input

$ PA.2 In, Pull; // PA.2 输入 并 Pull High

$ PA.3 NoPull; // PA.3 的 Pull High 关掉

【一般注意事项】

(1). 未使用的 IO 脚:

如果 IO 脚没有使用,请将它设为固定准位,

如: Output High 或 Output Low 或 Input + Pull High 或 模拟输入脚。

如 IO 脚只能当作单纯 Input 脚 (如有些型号的 PA5),请将它接到 VDD 或 GND。

(2). Pull High 的注意事项: 一般在 5V 时,Pull High 电阻约在 80K 附近, 不同的 IC、电压、温度,都会使 Pull High 电阻不同, 如果你想利用它来做一般按键的 Pull High,是足够的, 但如果作通讯用的 Pull High (如 I2C 接口),却是不行的。

很多系列的 PAPH、PBPH 是 Write Only,所以你不可以对它们作 SET0、SET1、SWAPC、TOG、XOR 指令。 因为以上指令的运作原理,是先读回 IO 的值,然后作 AND(SET0) / OR(SET1) / MOV(SWAPC) / XOR(TOG) 运算, 等设定相对应的 BIT 后,再整个 Byte 写回 IO。

那既然 PAPH、PBPH 是 Write Only,所以,就无法读回 IO 的值,也就无法使用了。

(3). Open Drain 的注意事项: 并不是所有系列都支持 Open Drain Mode,它可以被 I/O 的三态取代。 若 IO 口设为 Open Drain,当输出为 Open 时, 从 IO 口读回的值,将是 1,而不是 Input 的值。 如果你想作 I2C 的传输,建议你可从 Code Generate 中得到 I2C 的 Sample Code。 不过在 Sample Code 中,只用输出/输入切换完成 I2C 的传输,而不使用 Open Drain。

(4). 过电压的输入保护: 如果你的 IO 输入口,有高于 VCC 的电压输入,而又无法避免时, 请在 IO 口串连上一个电阻。 建议的电阻值为: 电压差(Volt.) × 100KΩ。 以下为例,VCC=5V,外部有一个 15V 的电源讯号到 IO 口,所以需接保护电阻: 电压差 (15V - 5V = 10V) × 100KΩ = 1MΩ 电阻。

(5). IO 的输入阻抗有多大 ? 由于一般三用电表只能量测到 20 M 的电阻,所以 IO 的输入阻抗,大到无法量测。

【共享其它功能】

(1). IO 与 Reset 共享时的注意事项: 在 IO 口中的 PA.5,并不存在 Pull High 的功能,也无法 Drive High。 当 PA.5 为输入脚时,如果没有使用,建议接到 VDD 或 GND。 只有 PAC.5 = 0 (Input) 时,才可以从 PA.5 读回输入脚, 当 PAC.5 = 1 (Output) 时,是无法读回输入脚。 我们可以利用切换 CLKMD.0,使 PA.5 成为 IC 的外界重置讯号源。 SET0 CLKMD.0 // 设定 PA5 是输入脚,这是系统默认值。 SET1 CLKMD.0 // 设定 PA5 是外界的重置讯号源。

附注:

(1): 至于其它的 IO 口,都有输出入切换与选择 Pull High 的功能。

(2): 有些系列的 IC (如 P234/..),增加了 PA5 Output Low 的功能。

(2). IO 与 External Crystal 共享时的注意事项: 当硬件的 EOSCR.7 设为 1 时,IO 口的 PA.6 / PA.7 会用来起振 Crystal。

为了兼容性起见,使用 Crystal 时,需设定 PA.6 / PA.7 为 Input + No Pull High。

请参考范例

【PDK82系列 & Crystal】。

【PDK22系列 & Crystal】。

【P234 / P201A 系列 & Crystal】。

在使用 ICE 时,请注意版子上 SW3 的切换。

在使用 PA.6 / PA.7 作一般 I/O 口时,请将版子上的 SW3 切为 ON。

在使用 Crystal 时,请将版子上的 SW3 切为 Off,以隔离外部讯号的干扰。

(3). IO 与 ADC 共享时的注意事项: 当你将 IO 用于 ADC 的转换时,请记得要设为 输入状态 与 致能模拟输入脚。 ( ADCDI / PBDIDR / … 的功能主要在切断输入端的耗电,使 ADC 的准确度提升)。

范例: 将 PB 的 7~4 设成 AD 输入端,其余为输出端。

PBC = 0x0F; // PB 的 7~4 设为输入状态。

ADCDI = 0xF0; // (a) 切断 PB 的 7~4 的输入端的耗电。

PBDIDR = 0xF0; // (b) 切断 PB 的 7~4 的输入端的耗电。

(附注: 由于不同系列 IC,造成同一功能有(a)(b)不同名称,十分抱歉。)

【SET0/1 IO.bit 的注意事项】

当对 IO 口作 SET0/1、SWAPC、TOG、XOR 指令,运作的原理,是先读回 IO 口的值,然后作 AND(SET0) / OR(SET1) / MOV(SWAPC) / XOR(TOG) 运算,等设定相对应的 BIT 后,再整个 Byte 写回 IO 口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值