——来自迪文开发者论坛
本方案采用迪文T5L1芯片作为整机控制核心,接收并处理触控、ADC采集、PWM控制信息,驱动3.5寸液晶屏实时显示当前状态。支持通过WiFi模块实现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 用户界面
资料下载
方案完整资料包下载请前往迪文开发者论坛获取:
http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=5415&extra=page%3D1&page=1 方案简介
(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 StringUinit[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发送。
全部0条评论
快来发表一下你的评论吧 !