众所周知,当给A板供电的时候,最外圈四个输出接口的电压是0,找了很久也没有系统解释,今天在这里总结一下(文末附程序源码)。
首先要明白为什接电后电压为0:
这个答案在A板的用户手册里面,我将截图放在下面。
从表格说明里面可以看出,该电源输出接口是使用程序开启的,如果程序里面没有写“开启代码”,这四个接口的输出电压就是0。在用户手册后面也有交代。
(图片看不清没关系,这里只是展示一下,后面会有详细讲解)
具体的电路实现在原理图的第七页,我们以左上接口为例进行讲解 (其他的大差不差,改改参数就好了)。
从图中我们可以看出,编号J20的接口要使能PH2开启。那么问题来了,J20到底是哪个?这时候就要拿出我们的位号图了。从位号图中可以得到四个接口的编号。由于原理图截图放上来很乱,我就直接把四个接口标出来了。
这个时候我们回到原理图,从原理图里可以看出来当引脚置于高电平时24v输出电压开启,即输出高电平时电路导通。其他四个同理。
程序源码:
标准库(省略一些小细节,只写主体部分)
//.c文件部分
void J20_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH, ENABLE); //使能PORTA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PH2
GPIO_SetBits(GPIOH,GPIO_Pin_2); //设置引脚为高电平
}
//.h部分
#define POWER1_CTRL PHout(2) //这个地方不是必需,当引脚为高电平,即POWER1_CTRL=1时开电
HAL库:
#define POWER1_Pin GPIO_PIN_2
#define POWER1_GPIO_Port GPIOH
......
//高电位供电
HAL_GPIO_WritePin(GPIOH, GPIO_PIN_2, GPIO_PIN_SET);
//低电位断电
HAL_GPIO_WritePin(GPIOH, POWER1_Pin, GPIO_PIN_RESET);