dsp2812 复位时GPIO引脚DAT的值是否可以改变

来源:百度知道 编辑:UC知道 时间:2024/05/27 03:55:05
小弟做了块板子,用其中一个gpio口驱动继电器,但是一上电gpio口(内部上拉)输出为高电平,继电器马上就动作。不是所要求的。
请问是否可以通过什么设置改变这种情况,使得上电后改io口输出为低电平。在硬件上能否采取在该io口(内部有上拉电阻)接下拉电阻这种措施。

类似的问题我也遇到过,我觉得是无法通过改变GPxDAT的值来解决这个问题。

GPxDAT寄存器是内部上拉的,复位后I/O是默认输入,需要设置相应的I/O为输出,在此之前又无法对GPxDAT进行写操作,所以设置I/O为输出后一定是先输出高电平,然后才能设置为低电平。

我是在后面的电路中加入延时上电功能来解决的,对你这个问题,是否可以修改电路,使继电器在I/O输出低电平时动作?这样就避免了这个现象。

/*******************************************
加下拉电阻肯定是不行的,从逻辑上就实现不了你的功能:下拉之后就一直是低电平了,继电器始终断开,不管你I/O怎么变都起不到控制继电器的作用,这是其一。从另一个角度讲,I/O输出高电平时你硬给它拉低,电流就等于它的最大拉电流,跟直接把它接地差不了多少。这样可能会烧片子,这是其二。
*///////////////////////////////////////////////////////
不好意思,我又想了一下,上面注释掉的这一段是错的。我没有正确理解你的意思。如果拉低,在I/O刚上电处于输入状态时,自动配置为输入,则GPxDAT寄存器中的相应位变为0,然后配置为输出后,输出低电平,这样做应该是可以的。
但是拉低的强度要大于内部上拉的强度,我估算了一下,内部上拉电阻约24K,那么加一个2K下拉应该就可以了。 不过这样用的I/O路数少还可以,多了恐怕
带不动。

最好还是给I/O接个反向器,让继电器在I/O输出低电平时动作。

另外我也请教一个问题:你是如何用I/O驱动继电器的?是中间经过一个三极管吗?

手册中相关内容:
On reset, the default value for all GPxMUX and GPxDIR register bits is 0. That
is, at reset all I/O ports are configured as input pins. Before changing the
direction of t