【BAT32G113-与普诚PT16752实现汽车LED驱动方案-反馈信号检测-A7-2025/4/3】

提示:本内容仅供学习,切勿商用!
在学习BAT32G113单片机之前,我们已经完成了单片机通用定时器单元Timer4中断控制LED无极调光方法的第六步,本文主要介绍中微BAT32G113与普诚PT16752进行结合,从硬件设计到软件编写来解决反馈信号的应用层方案!

本人只是一个普通的嵌入式低级(初级)玩家,文章主要针对新手,所以大佬要是发现文中有何不妥之处,还请口下留情,若能指出,我一定虚心改正。

文章目录

  • 前言
  • 一、单片机的输入引脚有哪些模式,单片机上电时,此引脚处于什么电平状态?
  • 二、普诚PT16752汽车级车灯驱动器-反馈应用
  • 谢谢观看


前言

提示:此壁纸收集于互联网,如有侵权,请联系作者!
在这里插入图片描述

算一算,作者本人,自毕业到现在已经有了半年多时间,在这段工作的时间里。已步入道 —— 新能源行业!写此专栏,主要是记录和分享开源精神!希望,看到这里的朋友,也能收获到一丝有用的东西!好了,开始今天的正题!


一、单片机的输入引脚有哪些模式,单片机上电时,此引脚处于什么电平状态?

哈哈!首先你得知道,单片机的内部电路长什么样子才行哟。
BAT32G113单片机样式:下载对应的芯片手册!

关于CPU的优势介绍,单片机用户手册-第一章 CPU已经介绍!
更详细的内容,如芯片的引脚图、产品结构图、产品型号一览表等,请看单片机的数据手册!

烧录方法请看此链接:【BAT32G113-仿真器及脱机烧录器教程-A3-2024/9/19】
下图是产品结构图:(由于篇幅原因,这里就不依次介绍每一个框图的作用)

在这里插入图片描述
温馨提示:芯片手册的丰富度决定了一个公司的水准,其次个人学习的过程是站在巨人的肩膀上,才能发挥自己微不足道的力量!

如果你觉得上面框图内容比较多,其实可以简化框图的,如下图所示:

在这里插入图片描述
这个框图,想要具体了解某个部分(如上图这些东西体现在芯片的哪些地方,范围多少),请自行查阅用户手册-第一章 CPU!

归回主题,下图是单片机引脚模式配置-电路原理图:
下图展示的是微控制器 GPIO(通用输入输出)引脚的内部功能结构,主要用于实现引脚的输入输出控制、模式配置及复用功能,具体电路解析如下:

  1. 寄存器控制模块
    PU 寄存器(PUm): 用于控制引脚的上拉功能,通过WRPU信号写入配置,决定内部上拉电阻是否启用。
    PMC 寄存器(PMCnn): 管理引脚的模式配置(如输入、输出、复用功能等),由 WRPMC信号写入。
    输出锁存器(Pm): 存储输出数据,通过 WRPORT 信号写入,控制引脚输出电平。
    PMS 寄存器: 可能用于配置引脚的特殊功能模式,由 RDPMS读取相关状态。
    PM 寄存器(PMmn): 辅助控制引脚功能,结合其他寄存器实现复杂配置。
  2. 信号处理与驱动模块
    输入部分: 输入信号经Schmitt 触发器(施密特触发器)处理,增强信号抗干扰能力,优化输入波形。
    输出部分: P-ch(P 沟道)N-ch(N 沟道) 晶体管组成驱动电路,根据输出锁存器和寄存器配置,驱动引脚输出高 / 低电平。
  3. 复用功能模块
    支持 复用功能(如 SAU 及其他外设功能): 通过寄存器配置切换引脚功能,实现引脚在不同外设(如串口、定时器等)中的复用。
    模拟功能: 预留路径,支持引脚作为模拟信号输入(如 ADC 功能),需关闭数字输入功能以避免干扰。
  4. 数据交互接口
    BUS 总线: 连接内部寄存器与数据总线,通过 WRPORT(写端口)、RDPORT(读端口)等信号实现数据读写操作,完成引脚状态的配置与读取。

其实,上面的知识了解个大概就行!一般来讲:输入模式有4种,输出模式有2种
输入模式:
1.普通输入模式(INPUT)
2.上拉输入模式(PULLUP_INPUT)
3.TTL输入模式(TTL_INPUT)
4.模拟输入模式(ANALOG_INPUT)
输出模式:
1.普通输出模式(OUTPUT)
2.开漏输出模式(OPENDRAIN_OUTPUT)
最常用的就是PULLUP_INPUT、INPUT和OUTPUT、OPENDRAIN_OUTPUT。至于其他引脚的作用,可自行百度查阅!

在这里插入图片描述

根据上图,如果你看不懂,不如,请看如下链接:
1.极速入门三极管NPN与PNP放大原理【极速入门数模电路P05】
2.GPIO推挽输出和开漏输出
3.NPN型三极管与PNP型三极管基本原理
4.NMOS和PMOS详解 - lsgxeva - 博客园
小节:
1.根据理论知识,请画出NPN和PNP的原理图?
2.画出NPN和PNP原理图之后,请画出控制LED亮灭的电路原理图?
3.根据三极管控制LED灯原理图,请自行深入研究元器件的损坏临界功率、电流、电压?
4.用三极管或Mos管,画出推挽输出电路和开漏输出电路原理图?
5.输入电路原理图,请根据上图研究电路设计知识?
6.NPN和PNP导通的条件是什么?
7.NPN和PNP分别指出导通时,三点电压关系,电流关系及方向关系?
8.请仔重新细阅读NMOS和PMOS的原理和应用及特性?
说明:由于作者经验和文章篇幅,这几个问题点,等后续时间,重新会使用跳转方式,引入作者简单到深入讲解!

这里我给一个按键扫描Demo
配置输入端口为上拉输入,此时单片机上电,端口处于高电平状态,只有当按键按下,进行一次置标志位操作!松手则标志位恢复原样!

Key.c文件:

/**
  **********************************  BAT32G113  ***********************************
  * @文件名     : Key.c
  * @作者       : Xiaoxin
  * @库版本     : CMSIS:V5.6.0    Device:V1.0.0
  * @文件版本   : V1.0.0
  * @日期       : 2025年04月03日
  * @摘要       : Key配置
  ******************************************************************************/
/*----------------------------------------------------------------------------
  更新日志:
  2025-04-03 V1.0.0:初始版本
  ----------------------------------------------------------------------------*/
/* 包含的头文件 --------------------------------------------------------------*/
#include "Key.h"

uint8_t KEY1_value = 0;
uint8_t KEY1_Lock_Flag;
uint32_t KEY1_Cnt;

uint8_t KEY2_value = 0;
uint8_t KEY2_Lock_Flag;
uint32_t KEY2_Cnt;

void KEY_Init(void)
{
    PORT_Init(PORT0, PIN0, PULLUP_INPUT);
	PORT_Init(PORT7, PIN3, PULLUP_INPUT);
}

/************************************************
函数名称 : KEY_Init
功    能 : 按键扫描
参    数 : 无
返 回 值 : 无
作    者 : Xiaoxin
*************************************************/
void KEY_Scan(void)
{
		if(PORT_GetBit(PORT0, PIN0))
		{
				KEY1_Lock_Flag = 0;
				KEY1_Cnt = 0;
				KEY1_value = 0;
		}
		else if(!KEY1_Lock_Flag)
    {	
				KEY1_Cnt++;
		
				if(KEY1_Cnt > 20)
				{
					KEY1_Cnt = 0;
					KEY1_Lock_Flag = 1;
					KEY1_value = 1;
				}	
    }		
		
		if(PORT_GetBit(PORT7, PIN3))
		{
				KEY2_Lock_Flag = 0;
				KEY2_Cnt = 0;
				KEY2_value = 0;
		}
		else if(!KEY2_Lock_Flag)
    {	
				KEY2_Cnt++;
		
				if(KEY2_Cnt > 20)
				{
					KEY2_Cnt = 0;
					KEY2_Lock_Flag = 1;
					KEY2_value = 2;
				}	
    }
}

Key.h文件:

/**
  **********************************  BAT32G113  ***********************************
  * @文件名     : Key.h
  * @作者       : Xiaoxin
  * @库版本     : CMSIS:V5.6.0    Device:V1.0.0
  * @文件版本   : V1.0.0
  * @日期       : 2025年04月03日
  * @摘要       : 输入检测
  ******************************************************************************/

/* 包含的头文件 --------------------------------------------------------------*/
#include "BAT32G_gpio.h"

/* 定义防止递归包含 ----------------------------------------------------------*/
#ifndef _Key_H
#define _Key_H

extern uint8_t KEY1_value;
extern uint8_t KEY2_value;

/* 函数申明 ------------------------------------------------------------------*/
void KEY_Init(void);
void KEY_Scan(void);

#endif /* _Key_H */


二、普诚PT16752汽车级车灯驱动器-反馈应用

我们在设计LED驱动原理图时,常常会思考哪一家IC的性价比不错!这里推荐使用PT16752,驱动大功率LED时,如多个LED跑流水灯、呼吸灯、渐变无极调光,都可以满足!
规格书链接:PT16752规格书
不必过于担心电路设计,这里有典型电路设计案例,如下图:
在这里插入图片描述

这里,你可以采用硬件调光或者软件调光!
注意:
1.其中IC的第1引脚必须使能(代表IC上电)其次IC的第3引脚,上电默认为高电平,当灯板损坏时,会输出高低连续周期性变化!

2.若是灯板是松动状态,也会反馈报错。在此基础上,重新接牢固!此时,反馈信号要恢复正常!

关于反馈信号规定,按照国标测试要求!
转向灯每零点几秒进行周期性变化(受BCM控制)。其次,转向灯与其余灯的逻辑关系会存在时间上关系!最后,测试数据最关注的点就是灯珠过电流、启辉电流、输入输出电压、颜色和流明值等相关参数

根据上述,我们知道了,设计反馈信号时,需要按照国标要求为准,进行合理的设计!
1.反馈输入引脚必须改为普通输入模式,在这种模式下,引脚不提供上拉或下拉电阻,其电平状态由外部信号决定。
2.转向灯每零点几秒进行周期性变化,在BCM给电源这段时间内,需要进行反馈信号判断。

反馈报错,设计需要考虑高低电平,解决方案:
1.在低电平时,进行错误计数,达到一定值时,决策报错信息!
2.若,返回高电平时,进行时间ms级计数,同时判断低电平计数是否还在继续,如果错误计数没有继续,则达到ms级计数一定值时,进行清除报错信息!

这里我给一个反馈检测Demo

/************************************************
函数名称 : 无
功    能 : 反馈检测算法
参    数 : 无
返 回 值 : 无
作    者 : Xiaoxin
*************************************************/
if(error == 0)//判断引脚是否处于低电平
{
	error_cnt++;//一直累加
	if(error_cn ==20)
	{
		time=0}
	if(error_cn<20)//防止意外报错
	{
		error_falg = 1;//开启指示灯
	}
	else
	{
		error_cnt = 19;
		error_falg = 0;//关闭指示灯		
	}
}
else//判断引脚是否处于高电平
{
	//19时进入高电平,20进入低电平
	if(error_cnt ==19)
	{
		time++if(time > 200)
		{
			error_cn = 0;
			error_falg = 1;//开启指示灯
		}
	}
}

谢谢观看

博主分享不易,请给一键三连哦(关注 + 点赞 + 收藏),你的鼓励是博主分享的动力。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星新计划

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值