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

小弟做了块板子,用其中一个gpio口驱动继电器,但是一上电gpio口(内部上拉)输出为高电平,继电器马上就动作。不是所要求的。请问是否可以通过什么设置改变这种情况,使得上... 小弟做了块板子,用其中一个gpio口驱动继电器,但是一上电gpio口(内部上拉)输出为高电平,继电器马上就动作。不是所要求的。
请问是否可以通过什么设置改变这种情况,使得上电后改io口输出为低电平。在硬件上能否采取在该io口(内部有上拉电阻)接下拉电阻这种措施。
展开
 我来答
showUtheWorld
2008-10-27 · TA获得超过567个赞
知道答主
回答量:65
采纳率:0%
帮助的人:0
展开全部
类似的问题我也遇到过,我觉得是无法通过改变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 the port from input to output using the GPxDIR register bit, the
current level of the pin is reflected in the GPxDAT register. The GPxDAT
register is described later in this section. When the direction of the port is
changed from input to output, the value already in the GPxDAT register is used
to determine the state of the pin.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式