低功耗蓝牙芯片CH579系列开发记录
低功耗蓝牙芯片CH579系列开发记录
文章目录
前言
本系列文章主要关于CH579系列芯片开发记录,CH579是基于ARM架构Cortex-M0内核的32位低功耗蓝牙MCU ,由南京沁恒微电子股份有限公司开发。其片上集成低功耗蓝牙BLE通讯模块、以太网控制器及收发器、全速USB主机和设备控制器及收发器、段式LCD驱动模块、ADC、触摸按键检测模块、RTC等丰富的外设资源。
一、CH579系列芯片
1.1 引脚排列
CH579系列有两款芯片,分别是CH579M和CH579F,引脚分布如下。
1.2 引脚描述
CH579M资源会多一些,比CH579F多了几路AD通道,串口以及PWM驱动引脚。
详细引脚定义如下:
QFN48为CH579M,QFN28为CH579F。
1.3 系统结构
CH579芯片结构框图
1.4 最小系统
CH579M
CH579F
二、资料下载
2.1 关键资料
官方网站有提供详细的资料下载,包括原理图、例程、下载器驱动等资料,链接如下。
CH579系列官方资料
2.2 视频资料
官方视频资料没有CH579的,但是有其他CH系列的,官方例程都有良好封装,直接调用封装库就可以,小伙伴们可以类比着看。
官方CH系列开发B站视频
三、评估开发板
3.1 开发板概览
CH579系列有一款评估开发板,可以方便调试,入门十分推荐,还有就是买的时候不要忘记同时买配套专用的WCH烧写器,与板子配合十分方便,尤其在打印输出和调试方面。
3.2 开发板购买
四、开发初体验
4.1 环境搭建
-
开发环境选择keil5,没装的伙伴下面连接传送。
keil5官方下载 -
下载安装好keil后需要安装CH系列芯片包才能编译CH579系列例程,下载连接如下。
开发工具包
下载好后解压,打开文件夹选择CH579EVT/PUB目录下的.pack文件双击安装。 -
安装连接开发板的驱动
CH340驱动下载 -
安装烧录程序的软件
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开发初步的环境搭建和例程调试就跑通了,接下来逐步调试其他例程,并尝试组合。