wansrkl 发表于 2023-2-28 20:48:16

I/O 口工作模式与上拉电阻的问题




如图, I/O 口工作模式比如设置为开漏,当端口锁存器为 0 时,开漏输出关闭所有上拉晶体管。
这时如果设置新增上拉电阻有效,那么开漏输出是否还有上拉电阻?

也就是说,新增的上拉或下拉电阻,如果设置其有效,则相当于I/O口外部(芯片外部)接了一个
上拉或下拉电阻,而与I/O 口工作模式无关。

望赐教!
多谢!

梁工 发表于 2023-4-20 16:03:51

本帖最后由 梁工 于 2023-4-20 22:46 编辑

JISHUZHAI 发表于 2023-4-20 15:33
我选择P0口设置开漏输出模式,启用全部上拉电阻,全对外输出1,拿万用表测量,为P0口什么都是0V?
P0M0 = 0 ...
因为你没有允许操作扩展寄存器,所以设置操作无效。
P_SW2 |= 0x80;   //允许访问扩展寄存器
P0PU = 0xFF;      //允许P0口额外上拉电阻

神农鼎 发表于 2023-2-28 21:09:43

4.1K 上拉电阻是独立的,相当于:外部 【焊上4.1K上拉电阻,还是不焊4.1K上拉电阻】

梁工 发表于 2023-2-28 23:14:18

新增的4K上拉电阻是独立的,与IO模式设置无关,一旦允许,则相当于引脚固定接一个上拉电阻到VCC,而与I/O 口工作模式无关。

创隆科技 发表于 2023-3-4 21:13:02

使用注意,虽然说是上拉电阻,但是它是在复位与程序执行响应操作后才起作用,这就会在上电与起作用后有个时间差,如果要求严格,还是自己加吧,很鸡肋的功能

神农鼎 发表于 2023-3-4 21:21:45

楼上这讲法,纯属你自己一家之言,我们认为你的结论是错的
1,STC8H/STC32G 的 I/O上电后为【仅为高阻输入】,仅为高阻输入对外无驱动能力,
   不影响外部状态,这是全球趋势!
2,如系统要求某个I/O上电后立即转为高或低,你外部加10K上拉/下拉即可
3,如是和外部普通的OC门开漏器件通信,典型的 1线制/I2C/SPI--OC门开漏器件通信,
   MCU内部不占外部面积的上拉电阻则可用来取代外部上拉,简化硬件设计

神农鼎 发表于 2023-3-4 21:29:54





xxkj2010 发表于 2023-3-26 10:21:32

我用STC8H8K64U实验板,3.3V供电,将P1口中设置成准双向+上拉电阻模式,然后给P1口置1,
这时P15和P16可以输出3.2V,而P13只能输出1.84V,P17输出1.49V?

#define   P1PU         (*(unsigned char volatile xdata *)0xfe11)//
sfr         P_SW2       =         0xBA;//

void main()
{

      P1M0 = 0x00; P1M1 = 0x00; //
      P1PU = 0xff; //P_SW2=P_SW2|0x80;
      P_SW2 =0x80;

    while (1)
    {
    }
}

神农鼎 发表于 2023-3-26 10:31:03

P1.7/P1.6/P1.5/P1.3


学会看原理图后再编写程序

梁工 发表于 2023-3-26 11:37:06

创隆科技 发表于 2023-3-4 21:13
使用注意,虽然说是上拉电阻,但是它是在复位与程序执行响应操作后才起作用,这就会在上电与起作用后有个时 ...

很鸡肋的功能?
各厂家的ARM也是这样的,大部分的8位机也是这样的,你为什么不说也很鸡肋?
不要带有色眼镜看STC的IC,除了老的51,几乎所有各家的MCU的IO都是上电高阻,这是最常用的方式,上电复位期间你要搞好是低,可以外接电阻确定。

JISHUZHAI 发表于 2023-4-20 15:33:28

我选择P0口设置开漏输出模式,启用全部上拉电阻,全对外输出1,拿万用表测量,为P0口什么都是0V?
P0M0 = 0xff;
P0M1 = 0xff;
P0PU = 0xFF;   
P0   = 0xff;
页: [1] 2
查看完整版本: I/O 口工作模式与上拉电阻的问题