zl程序教程

您现在的位置是:首页 >  其他

当前栏目

用CH579开发个手表,试试看?

2023-03-14 22:43:23 时间

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.
");
}
  • 蓝更改蓝牙名为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————