在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
Eric Ma:
一般来讲,都是先配置GPIO对应的外设功能,在初始化外设。
你提到的PWM对应的GPIO引脚在初始化后,会出现低电平,那我的建议是,你在配置GPIO的功能时,把内部的上拉打开。
ERIC
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
BradGong:
回复 Eric Ma:
你好,Eric
在实验中,我的内部上拉不管打开还是没打开,都会出现这个低电平,感觉这个内部上拉没啥用,(我的外部电路都做了上拉);
整个电平的变化情况如下:
上电初到配置GPIO之前输出电平为高电平
GPIO配置完之后,输出电平被拉低
PWM配置完之后,输出电平被强制拉高(此时是我软件做了强制输出高电平处理)
但是如果先配置PWM(也做了强制上拉),再配置GPIO,整个过程都是高电平,这个也是我期望的结果。
另外我想问一下:如果外部电路做了上拉处理,DSP的内部上拉应该没啥用了吧?内部上拉应该是在外部电路没有上拉或者下拉时才会起作用吧?
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
rookiecalf:
回复 BradGong:
引脚初始化都是GPIO输入,但是上下拉是有区别的(一部分是默认上拉,另一部分是默认不上拉),你使用的epwm一般都是不上拉的,需要结合手册进行外围硬件的设计,否则会出现这样的问题
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
Eric Ma:
回复 BradGong:
如果用了外部上拉,那么内部上拉就不用了,内部是一个弱上拉的功能。
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
BradGong:
回复 Eric Ma:
谢谢!
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
BradGong:
回复 rookiecalf:
谢谢!
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
BradGong:
回复 Eric Ma:
Hello,Eric
如果外部做了下拉,那么内部上拉是否还有意义,还能不能配置为上拉?
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
user5229665:看了您说的我也做了个实验,我没有进行外部上拉,因此上电初PWM输出低电平。先把GPIO1配置成PWM再初始化PWM(此时软件强制高),观察到PWM输出由低变高;反过来,先初始化PWM(此时软件强制高)再把GPIO1配置成PWM,观察到仍是低电平。结合您的实验结果,说明反过来这种编程方式不改变PWM状态。因此,您的反过来一直为高可以解释为:初始外部上拉拉高,先配PWM后配GPIO不改变状态还是高。
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
Eric Ma:
回复 BradGong:
“如果外部做了下拉,那么内部上拉是否还有意义,还能不能配置为上拉?”
Eric:
你如果做了外部下拉,那么内部就不用管啦,不起作用了。
在初始化外设和GPIO时您觉得是先初始化配置GPIO然后再初始化其他外设(比如PWM);还是先配置其他外设再去配置GPIO?
通过实验进行PWM配置和GPIO配置先后顺序对比(期望上电初,被配置为PWM的GPIO口在上电初输出无效电平,本实验设定高电平为无效)
发现,如果先配置GPIO,上电初被配置为PWM的GPIO口,会在PWM配置之前,拉为低电平(即有效),意味着上电初有可能使外部电路误动作,这种配置方法显然不可取。
如果先对PWM寄存器进行配置,配置完之后再去配置GPIO的功能,在上电初,被配置为PWM口的GPIO口电平始终保持高电平(无效电平),这样上电初外部电路就不会误动作,这也是想要的结果。
从DSP的结构来看,GPIO口多具复用功能,GPIO口的引脚是直接连到外部电路,相当于GPIO是最后一道关卡,如果外设的寄存器还没有按照预想的配置完成,先配置了GPIO口,以为这上电初GPIO口的输出电平是一个未知态(应该是DSP的默认态),也许这个上电初的默认态不是我们想要的就会造成我们设计的电路误动作,为了保证我们设计的电路在上电初不被误动作,上电初我们期望GPIO的引脚电平是我们的期望电平,因此我们需要先对外设的寄存器进行预期初始化,最后再对GPIO口的功能进行配置。
就好比GPIO配置为通用IO口时,我们需要先对其数据寄存器进行设置,然后再去设置其方向,这样上电初,如果GPIO被配置成输出口,其输出电平就是我们前面设置的。想反,如果先设置方向再去设置数据寄存器的值,则上电初会有一小段输出电平是DSP的默认值而不是我们的期望值。
鄙人理解不知道是否正确,烦请同道中人解说,谢谢!
Eric Ma:
回复 user5229665:
“看了您说的我也做了个实验,我没有进行外部上拉,因此上电初PWM输出低电平。先把GPIO1配置成PWM再初始化PWM(此时软件强制高),观察到PWM输出由低变高;反过来,先初始化PWM(此时软件强制高)再把GPIO1配置成PWM,观察到仍是低电平。结合您的实验结果,说明反过来这种编程方式不改变PWM状态。因此,您的反过来一直为高可以解释为:初始外部上拉拉高,先配PWM后配GPIO不改变状态还是高。”
Eric:
PWM对应的GPIO口内部上拉默认是关的,默认是高组态。如果初始化PWM并强制PWM为高,配置GPIO1为PWM后,GPIO1应该是高电平才对。