低功耗蓝牙芯片CH579系列开发记录

低功耗蓝牙芯片CH579系列开发记录



前言

本系列文章主要关于CH579系列芯片开发记录,CH579是基于ARM架构Cortex-M0内核的32位低功耗蓝牙MCU ,由南京沁恒微电子股份有限公司开发。其片上集成低功耗蓝牙BLE通讯模块、以太网控制器及收发器、全速USB主机和设备控制器及收发器、段式LCD驱动模块、ADC、触摸按键检测模块、RTC等丰富的外设资源。

在这里插入图片描述


一、CH579系列芯片

1.1 引脚排列

CH579系列有两款芯片,分别是CH579M和CH579F,引脚分布如下。
CH579M和CH579F

1.2 引脚描述

CH579M资源会多一些,比CH579F多了几路AD通道,串口以及PWM驱动引脚。
详细引脚定义如下:
QFN48为CH579M,QFN28为CH579F。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 系统结构

CH579芯片结构框图
CH579芯片系统结构图

1.4 最小系统

CH579M
在这里插入图片描述
CH579F
在这里插入图片描述


二、资料下载

2.1 关键资料

官方网站有提供详细的资料下载,包括原理图、例程、下载器驱动等资料,链接如下。
CH579系列官方资料

2.2 视频资料

官方视频资料没有CH579的,但是有其他CH系列的,官方例程都有良好封装,直接调用封装库就可以,小伙伴们可以类比着看。
官方CH系列开发B站视频

三、评估开发板

3.1 开发板概览

CH579系列有一款评估开发板,可以方便调试,入门十分推荐,还有就是买的时候不要忘记同时买配套专用的WCH烧写器,与板子配合十分方便,尤其在打印输出和调试方面。
CH579M开发板

3.2 开发板购买

开发板购买

官方WCH烧写器


四、开发初体验

4.1 环境搭建

  1. 开发环境选择keil5,没装的伙伴下面连接传送。
    keil5官方下载

  2. 下载安装好keil后需要安装CH系列芯片包才能编译CH579系列例程,下载连接如下。
    开发工具包
    下载好后解压,打开文件夹选择CH579EVT/PUB目录下的.pack文件双击安装。请添加图片描述

  3. 安装连接开发板的驱动
    CH340驱动下载

  4. 安装烧录程序的软件
    WCH烧写软件
    安装之后打开,如果是英文界面可以通过view/UI language/simplified Chinese。

4.2 跑通例程

我们先拿简单的串口例程体验。
首先在keil中打开例程文件,目录为CH579EVT\EVT\EXAM\UART1\CH57x.uvprojx。
请添加图片描述
在keil打开后看到例程目录如下,打开user文件夹下main.c
请添加图片描述

关键代码如下

#include "CH57x_common.h"


UINT8 TxBuff[]="This is a tx exam\r\n";
UINT8 RxBuff[100];
UINT8 trigB;


int main()
{
    
/* 配置串口1:先配置IO口模式,再配置串口 */   
    GPIOA_SetBits(GPIO_Pin_9);
    GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);                        // RXD-配置上拉输入
    GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);                // TXD-配置推挽输出,注意先让IO口输出高电平
    UART1_DefInit();
    
#if 1       // 测试串口发送字符串
    while(1){
                        UART1_SendString( TxBuff, sizeof(TxBuff) );
                        mDelaymS( 1000 );
                }
#endif 

#if 0       // 查询方式:接收数据后发送出去
                UINT8 len;
    while(1)
    {
        len = UART1_RecvString(RxBuff);
        if( len )
        {
            UART1_SendString( RxBuff, len );
        }
    }

#endif    

#if 0      // 中断方式:接收数据后发送出去
    UART1_ByteTrigCfg( UART_7BYTE_TRIG );
    trigB = 7;
    UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
    NVIC_EnableIRQ( UART1_IRQn );
#endif    

}


void UART1_IRQHandler(void)
{
    UINT8 i;
    
    switch( UART1_GetITFlag() )
    {
        case UART_II_LINE_STAT:        // 线路状态错误
            UART1_GetLinSTA();
            break;
        
        case UART_II_RECV_RDY:          // 数据达到设置触发点
            for(i=0; i!=trigB; i++)
            {
                RxBuff[i] = UART1_RecvByte();
                UART1_SendByte(RxBuff[i]);
            }
            break;
        
        case UART_II_RECV_TOUT:         // 接收超时,暂时一帧数据接收完成
            i = UART1_RecvString(RxBuff);
            UART1_SendString( RxBuff, i ); 
            break;
        
        case UART_II_THR_EMPTY:         // 发送缓存区空,可继续发送
            break;
        
        case UART_II_MODEM_CHG:         // 只支持串口0
            break;
        
        default:
            break;
    }
}

点击左侧双箭头编译,注意设置警示模式为C99。
请添加图片描述

4.3 下载编译后的HEX文件

编译并连接好开发板后打开WCH下载软件,注意芯片要选择CH57x系列,启用串口免下载和下载校验,下载方式选择串口,选择好用户程序文件的路径,hex在obj文件夹下。
然后点击下载,等待2-5秒出现串口串口下载完成就成功了,同时板子会自动开始跑程序。
在这里插入图片描述
打开串口助手可以看到打印结果如下:在这里插入图片描述

小结

到这里CH579开发初步的环境搭建和例程调试就跑通了,接下来逐步调试其他例程,并尝试组合。