——迪文开发者论坛
本方案采用迪文T5L1芯片作为整机控制的核心,接收和处理触摸,ADC采集、PWM控制信息,驱动3.5寸液晶屏实时显示当前状态。通过支持WiFi模块实现LED光源亮度的远程触控调节,支持语音报警。
演示视频
35.可调功率LED电源方案
1、采用T5L芯片高频运行,AD采样稳定,误差小;
2、支持TYPE C直连PC机器调试,程序烧录;
3、支持高速OS核接口,16bit并口;UI核PWM口、AD低成本的应用设计不需要额外添加MCU;
4、支持WiFi、蓝牙远程控制;
5、支持5~12V DC输入宽电压宽范围。
1.1 方案框图
1.2 方案背板实物图
1.3用户界面
下载方案完整信息包,请到迪文开发者论坛获取:
迪文开发者论坛 - Powered by Discuz!
1.4 T5L48320C035电路图
1、MCU逻辑供电3.3V:C18, C26, C27, C28, C29, C31, C32, C33 ;
2、MCU内核供电1.25V:C23, C24;
3、MCU模拟供电3.3V:C35为MCU模拟电源。排版时,核心1.25V地和逻辑地可以并存,但模拟地必须分开,模拟地必须与数字分开LDO输出大电容负极收集,模拟正极也应在LDO大电容正极收集,使AD最低采样噪声。
4、AD模拟信号采集电路:CP1为AD过滤电容器的模拟输入。MCU模拟地与数字地独立分离,CP1负极必须连接到最小阻抗MCU在模拟地,晶体振动的两个并联电容接收MCU模拟地。
5.蜂鸣器电路:C25为蜂鸣器提供电容。蜂鸣器是一种电感器件,工作时会有尖峰电流。为了降低峰值,需要使用蜂鸣器MOS减少驱动电流,使MOS管道在线区域工作,并在开关模式下设计电路。R蜂鸣器两端并联,调节蜂鸣器的声音质量,使蜂鸣器的声音清脆悦耳。
6、WiFi电路:WiFi芯片采样ESP32-C,带WiFi Bluetooth BLE。在布线上,射频功率与信号分开。
1.5 WiFi 电路设计
在上图中,上部涂铜是一个功率回路,WiFi天线反射地回路必须大面积到功率地,功率地的收集点在C6负极。功率地和WiFi反射电流应在天线之间提供,因此WiFi天线下必须有铜,铜长度超过WiFi天线延伸长度,延伸长点会使WiFi灵敏度增加;下部涂铜作为信号,聚集点在C2负极。大面积涂铜可以屏蔽WiFi天线辐射带来的噪音。底层分开两个铜地,通过孔收集ESP32-C中间焊盘。射频电源需要比信号电路低的阻抗,因此芯片焊盘有6个过孔,以确保足够低的阻抗。晶振地回路不能有射频功率流动,否则晶振会产生频繁抖动,WiFi频率偏移无法收发数据。
7、背光LED供电电路:SOT23-6LED驱动芯片采样。DC/DC 给LED电源独立构成电路,DC/DC的地接到3.3V LOD地。由于PWM2口内核已专用化,输出600K的PWM添加一个信号RC把PWM作为一个输出ON/OFF控制。
8、电压输入范围:设计2个DC/DC降压。注意DC/DC电路中R13, R17电阻无法节省,2电阻DC/DC芯片支持最高18V外部供电方便。
9、USB TYPE C调试口:TYPE C 可正反插拔,正反插拔WIFI芯片ESP32-C给予通信WIFI芯片烧录代码;反向插入和XR21V1410IL16给予通信T5L烧录代码。TYPE C支持5V供电。
10.并口通信:T5L OS核有很多IO可设计16个免费口bit并口通讯。结合ST ARM FMC并口协议支持同步读写。
11、LCM RGB高速接口设计:T5L RGB输出直连LCM RGB,中间增加缓冲电阻,减少LCM水纹波干扰。接线时,减少RGB特别是接口连接的长度PCLK信号,增加RGB接口PCLK, HS, VS, DE测试点;屏SPI口连接到T5L的P2.4~P2.设计屏幕驱动方便7口。引出RST、nCS、SDA、SCI便于底层软件开发的测试点。
1.6 设置数据变量显示控制器
//------------------------------DGUS读写格式
typedef struct
{
u16 addr;//UI 16bit变量地址
u8 datLen;//8bit数据长度
u8 *pBuf;//8bit数据指针
} UI_packTypeDef;//DGUS 读写包
//
typedef struct
{
u16 VP;
u16 X;
u16 Y;
u16 Color;
u8 Lib_ID;
u8 FontSize;
u8 Algnment;
u8 IntNum;
u8 DecNum;
u8 Type;
u8 LenUint;
u8 StringUinit[11];
}
Number_spTypeDef;///数据变量描述结构体
typedef struct
{
Number_spTypeDef sp;&nbp;//定义sp描述指针
UI_packTypeDef spPack; //定义sp变量DGUS读写包
UI_packTypeDef vpPack; //定义vp变量DGUS读写包
} Number_HandleTypeDef; //数据变量结构体
有了前面的数据变量handle定义,接下来给电压采样显示定义一个变量:
Number_HandleTypeDef Hsample;
u16 voltage_sample;
首先 执行初始化函数
NumberSP_Init(&Hsample,voltage_sample,0x8000); //这里的0x8000就是描述指针。
//---------------数据变量显示SP指针结构初始化--------------------------
void NumberSP_Init(Number_HandleTypeDef *number,u8 *value, u16 numberAddr)
{
number->spPack.addr = numberAddr;
number->spPack.datLen = sizeof(number->sp);
number->spPack.pBuf = (u8 *)&number->sp;
Read_Dgus(&number->spPack);
number->vpPack.addr = number->sp.VP;
switch(number->sp.Type) //根据DGUS界面设计的数据变量类型自动选择vp变量的数据长度。
{
case 0:
case 5:
number->vpPack.datLen = 2;
break;
case 1:
case 2:
case 3:
case 6:
number->vpPack.datLen = 4;
case 4:
number->vpPack.datLen = 8;
break;
}
number->vpPack.pBuf = value;
}
通过初始化之后,Hsample.sp 就是电压采样数据变量的描述指针;Hsample.spPack 是OS核通过DGUS接口函数和UI电压采样数据变量通信指针;Hsample.vpPack是改电压采样变数据变量的属性,比如字体颜色等,也是通过DGUS接口函数传递到UI核。Hsample.vpPack.addr 是电压采样数据变量地址,已经从初始化函数自动获取了。当你在DGUS 界面改变变量地址或变量数据类型时,无需在OS核同步更新变量地址。OS核心计算出voltage_sample变量后只要执行Write_Dgus(&Hsample.vpPack)函数更新就行,无需再把voltage_sample打包进行DGUS发送。