用 CH579 开发一款手表并试用?
最编程
2024-03-11 09:08:55
...
1、项目背景
2021年8月份的时候评估CH579,觉着这个芯片不错,资源丰富,开发还特别简单,使用CH579开发完门禁项目后总觉得还没过瘾,就用CH579做了个评估板。那段时间交流群里面一直在讨论做手表,所以我就开始用CH579做个假手表。
为什么是假手表呢,首先做真手表的意义不大,因为我只是评估CH579芯片的外设和资源不足以做真手表,而我这里只需要用到LCD,ADC,按键,串口等,买个原型LCD,做成手表的外形,顺其自然。
最重要的是要送几个给做技术的好友,推荐他们用用CH579。
2、硬件设计
最近买了个电脑,11代i7配置不错,打开最新版AD21,开始愉快的硬件设计。
具体硬件明细如下。
2-1、原理图
- CPU :CH579,配置请点击
- LCD:240*240,SPI接口
- USB toTTL:CP2102
- 其他模块
2-2、具体设计
- 电源电路:考虑到电池电压会低于3.4V还要工作,选择DCDC。
- 充电电路:选择拓品的TP4055,电路很简单,价格很美丽,值得推荐。
- 一键开关电路:低功耗设备,需要完全断电。
- LCD电路:中景园的1.28寸SPI接口,价格30内,背光记得可控,用于省电。
- USB to TTL电路:CP2102最近涨价到10块钱了,快用不起了,跳线接CH579两个串口,一个Log,一个用户。
2-3、PCB
放两张图吧
3、软件设计
下载官方SDK,开始撸码。
3-1、软件
- 增加LED、KEY驱动,SDK自带的,只要使能即可:
#ifndef HAL_KEY
#define HAL_KEY TRUE
#endif
#ifndef HAL_LED
#define HAL_LED TRUE
#endif
- 参考LED、写个LCD,更多参考源码:
void HAL_LcdInit(void)
{
/* Initialize */
LCD_RST_DDR;
LCD_DC_DDR;
LCD_BK_DDR;
GPIOA_SetBits(GPIO_Pin_12);
GPIOA_ModeCfg(GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14, GPIO_ModeOut_PP_5mA);
SPI0_MasterDefInit();
LCD_RES_Clr();
DelayMs(100);
LCD_RES_Set();
DelayMs(100);
LCD_Init();
LCD_BLK_Set();//打开看看刷新速度
LCD_ShowPicture(0, 0, 240, 240, gImage_2);
DelayMs(500);
LCD_Fill(0,0,240,240,WHITE);
LCD_ShowChinese(30, 40, "送给最帅的人", RED, WHITE, 32, 1);
LCD_ShowString(32, 80, "key num:", RED, WHITE, 16, 1);
LCD_ShowString(32, 100, "Increaseing Num:", RED, WHITE, 16, 1);
// LCD_BLK_Set();
PRINT("LCD init.\n");
}
- 蓝更改蓝牙名为Hello XB,并在蓝牙连上和断开地方增加LED指示和串口Log输出:
// GAP Profile - Name attribute for SCAN RSP data
static uint8 scanRspData[] =
{
0x09, // length of this data
GAP_ADTYPE_LOCAL_NAME_COMPLETE,
'H',
'e',
'l',
'l',
'o',
' ',
'X',
'B',
};
4、效果
演示视频拍不出效果,所以就不放了。
更多功能可以自己开发,例如:
- 提升SPI刷屏速度,移植LVGL
- 按键切换界面等
- 一键开关机显示进度等
- 电量检测显示
- 蓝牙相关信息显同步示
5、开源下载
公众号回复“手表”下载。
——————END————
上一篇: 简书 markdown 教程
推荐阅读