——来自迪文开发者论坛
本方案采用迪文t5l1芯片作为整机控制核心,接收并处理触控、adc采集、pwm控制信息,驱动3.5寸液晶屏实时显示当前状态。支持通过wifi模块实现led光源亮度的远程触控调节,支持语音报警。
视频演示
一、方案特点
采用t5l芯片高频率运行,ad模拟采样稳定,误差小;
支持type c直连pc机进行调试、程序烧录;
支持高速os核接口,16bit并口;ui核pwm口、ad口引出,低成本应用设计,无需增加额外mcu;
支持wifi、蓝牙远程控制;
支持5~12v dc宽电压宽范围输入。
1.1 方案框图
1.2 方案背板实物图
1.3 用户界面
二、资料下载
方案完整资料包下载可前往迪文开发者论坛:
三、方案简介
(1)硬件电路设计
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模拟地,晶振的2颗并联电容接到mcu模拟地。
5、蜂鸣器电路:c25为蜂鸣器供电电容。蜂鸣器是电感器件,工作时会有尖峰电流,为了降低尖峰,需把蜂鸣器mos驱动电流调小,使mos管工作在线性区域,并设计电路让它工作在开关模式。注意r18需并联在蜂鸣器两端,用于调节蜂鸣器声音品质,使蜂鸣器声音清脆悦耳。
6、wifi电路:wifi芯片采样esp32-c,带wifi bluetooth ble。布线上,射频功率地和信号地分开。
1.5 wifi电路设计
上图中,上半部敷铜是功率地回路,wifi天线反射地回路必须要大面积到功率地,功率地的汇集点在c6负极。功率地和wifi天线之间要提供反射电流,所以wifi天线下边必须要有敷铜,敷铜长度超过wifi天线延伸长度,延伸长点会使wifi灵敏度增加;下半部敷铜作为信号地,汇集点在c2负极。大面积敷铜可以屏蔽wifi天线辐射带来的噪声。2个敷铜地在底层分开,通过过孔汇集到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口空闲,可以设计16bit并口通讯。结合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测试点,便于底层软件开发。
(2)dgus界面设计
1.6 数据变量显示控件
(3)os主要程序
//---------------------------------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 strinnit[11];
} number_sptypedef; //数据变量描述结构体
typedef struct
{
number_sptypedef sp; //定义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发送。
上一篇:迪文圆形智能屏上市