[活动专区] 【沁恒CH579开发板评估】+ 评测立贴

[复制链接]
422|19
 楼主 | 2020-1-1 14:10 | 显示全部楼层 |阅读模式
本帖最后由 zykzyk 于 2020-1-1 15:55 编辑

2020年新年第一天-很高兴可以申请到【沁恒CH579开发板】进行项目评估。首次开箱物品展示如下:

1、沁恒CH579开发板主图
CH579评估板.png

2、CH340的USB转串口模块
CH340的USB转串口模块.jpg
3、硬件模块图
CH579评估板 硬件标示图.png

4、末完待续,敬请期待!


使用特权

评论回复
 楼主 | 2020-1-1 14:40 | 显示全部楼层
本帖最后由 zykzyk 于 2020-1-3 11:05 编辑

1、《WCHISPTool_Setup.exe》软件安装 WCHISPTool 烧录软件.png

2、串口下载
第 1 步:打开“WCHISPTool.exe”工具软件,选择芯片型号: CH579(具体匹配当前烧写
的芯片型号),下载方式:串口下载,串口设备列表:选择使用的 COMx 。
第 2 步:将 MCU 的 PB22 引脚接到 GND 上(此过程 MCU 不要上电)(PB22实际上就是按键S3)。
第 3 步:给下载板供电。  
第 4 步:电脑端的烧录工具软件检测到可用的“串口设备列表”(如果没有,请检查自己
的串口设备),点击“下载”控件,执行烧录。
第 5 步:“下载记录”中查看烧录结果。提示完成后,将直接运行用户程序,也可重新上
电或硬件复位来运行下载板中刚烧录的用户程序。如果提示失败,请重复上述
步骤 4-5。  


3、末完待续,敬请期待!

使用特权

评论回复
 楼主 | 2020-1-1 15:02 | 显示全部楼层
本帖最后由 zykzyk 于 2020-1-1 15:04 编辑


1、芯片简介
概 述:
        CH579是集成BLE和Zigbee双模无线通讯的ARM内核32位微控制器。片上集成低功耗蓝牙BLE通讯模块、Zigbee通讯模块、以太网控制器及收发器、全速USB主机和设备控制器及收发器、段式LCD驱动模块、ADC、触摸按键检测模块、RTC等丰富的外设资源。



特 点:

   > 32位ARM Cortex-M0内核,最高40MHz系统主频

   > 内置32K SRAM,250KB CodeFlash,2KB DataFlash, 4KB BootLoader,支持ICP、ISP和IAP,支持OTA无线升级

   > 蓝牙BLE和Zigbee双模,BLE兼容Bluetooth Low Energy 4.2规范,Zigbee兼容IEEE 802.15.4规范

   > 集成2.4GHz RF收发器和基带及链路控制,单端RF接口,无需外部电感,简化板级设计,提供协议栈和应用层API

   > 支持3.3V和2.5V电源,范围2.1V~3.6V, 内置DC/DC转换,0dBm发送功率时电流6mA

   > 多种低功耗模式:Idle,Halt,Sleep,Shutdown,内置电池电压低压监控,最低电流0.2uA

   > 提供10M以太网接口,内置PHY

   > 内嵌USB控制器和USB收发器,支持USB2.0全速和低速主机或设备,支持控制/批量/中断同步传输,支持USB type-C主从/电流检测

   > 内置实时时钟RTC,支持定时和触发两种模式

   > 提供段式LCD驱动接口,支持96点(24×4)LCD面板

   > 提供14通道12位ADC模数转换器,支持14通道触摸按键

   > 提供4组26位定时器,支持捕捉/采样,支持12路PWM输出

   > 提供4组独立UART,兼容16C550,最高通讯波特率可达5Mbps

   > 提供2组独立SPI,内置FIFO ,SPI0支持Master和Slave模式,支持DMA

   > 提供 LED点阵屏接口:支持1/2/4路数据线

   > 支持8位被动并口

   > 内置温度传感器

   > 提供40个GPIO,32个中断输入

   > 内置AES-128加解密单元,芯片唯一ID

   > 封装:QFN48_5X5、QFN28_4X4


2、芯片框图

CH579 芯片框图.png


3、芯片封装

芯片封装.png


4、官网资料

资料列表图.png


5、末完待续,敬请期待!

使用特权

评论回复
 楼主 | 2020-1-1 15:13 | 显示全部楼层
本帖最后由 zykzyk 于 2020-1-9 16:56 编辑

LCD 例程.png

1、开始第一个例程:LCD



2、编译成功
linking...
Program Size: Code=1772 RO-data=156 RW-data=0 ZI-data=0  
FromELF: creating hex file...
".\obj\CH57x.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:05


3、至此第一个官方例程编译成功。

4、末完待续,敬请期待!

使用特权

评论回复

评论

WCHTech2 2020-1-2 09:28 回复TA
感谢测评,更多蓝牙、网络方面的例程等着你哦 
| 2020-1-2 08:20 | 显示全部楼层
资料呢?

使用特权

评论回复
| 2020-1-2 09:28 | 显示全部楼层

可以再WCH官网搜索CH579,所有的例程资料都有哦。

使用特权

评论回复
 楼主 | 2020-1-3 11:06 | 显示全部楼层

此评估板和芯片资料请到官网下载,非常方便。http://www.wch.cn/downloads/category/27.html

使用特权

评论回复
 楼主 | 2020-1-3 11:10 | 显示全部楼层
官方例程是每个功能一个项目,我准备将所有单一模块例程,通过一个简单的产品功能应用方案,整合到一个项目里面,敬请期待!!!

使用特权

评论回复
 楼主 | 2020-1-4 13:08 | 显示全部楼层
现在移植一个在其它平台的定时多级处理函数竟然不能正确运行,研究中。。。

使用特权

评论回复
 楼主 | 2020-1-9 15:02 | 显示全部楼层
WCHTech2 发表于 2020-1-2 09:28
可以再WCH官网搜索CH579,所有的例程资料都有哦。

@WCHTech2 请问CH579的RTC驱动库哪里可以下载?

使用特权

评论回复
 楼主 | 2020-1-10 15:14 | 显示全部楼层
WCHTech2 发表于 2020-1-2 09:28
可以再WCH官网搜索CH579,所有的例程资料都有哦。

@WCHTech2
// Length of characteristic in bytes ( Default MTU is 23 )
#define SIMPLEPROFILE_CHAR1_LEN               1

请问这个长度怎么理解?现在的例程可以发送一个字节,假如我想收发几十个字节的数据帧该怎么处理呢?

使用特权

评论回复
 楼主 | 2020-1-11 15:11 | 显示全部楼层
本帖最后由 zykzyk 于 2020-1-11 15:19 编辑

1、开始BLE例程:
采用BLE Peripheral例程进行试验。
实现手机端蓝牙调试助手连接进行单字节通讯成功。实现蓝牙广播名称的修改为CH579 BLE.
BLE.png
2、编译成功linking...
Program Size: Code=81516 RO-data=1352 RW-data=1564 ZI-data=9668  
FromELF: creating hex file...
"..\Output\CH57x.axf" - 0 Error(s), 4 Warning(s).
Build Time Elapsed:  00:00:16

3、至此第一个官方例程编译成功。

4、下一步评估传输长数据帧的试验。
5、末完待续,敬请期待!


使用特权

评论回复
 楼主 | 2020-1-11 17:30 | 显示全部楼层
WCHTech2 发表于 2020-1-2 09:28
可以再WCH官网搜索CH579,所有的例程资料都有哦。

// Length of characteristic in bytes ( Default MTU is 23 )
#define SIMPLEPROFILE_CHAR1_LEN               1

请问这个长度最大是多少?

使用特权

评论回复
| 2020-1-13 13:01 | 显示全部楼层
zykzyk 发表于 2020-1-11 17:30
// Length of characteristic in bytes ( Default MTU is 23 )
#define SIMPLEPROFILE_CHAR1_LEN         ...

根据定义的MTU,最大为 MTU - 3。

使用特权

评论回复
 楼主 | 2020-1-14 15:09 | 显示全部楼层
WCHTech2 发表于 2020-1-13 13:01
根据定义的MTU,最大为 MTU - 3。

请问:CH579芯片发送数据给上位机,是不是只能通过发送 通知数据 给上位机?

使用特权

评论回复
 楼主 | 2020-1-15 08:35 | 显示全部楼层
WCHTech2 发表于 2020-1-13 13:01
根据定义的MTU,最大为 MTU - 3。

#define ATT_MTU_SIZE                     L2CAP_MTU_SIZE //!< Minimum ATT MTU size

请问L2CAP_MTU_SIZE  这个定义在哪个文件?

使用特权

评论回复
| 2020-1-15 09:51 | 显示全部楼层
zykzyk 发表于 2020-1-15 08:35
#define ATT_MTU_SIZE                     L2CAP_MTU_SIZE //!< Minimum ATT MTU size

请问L2CAP_MTU_S ...

这个是在库里定义好了,根据ble初始化的值确定的,你定义多少就是多少。

使用特权

评论回复
 楼主 | 2020-1-16 13:51 | 显示全部楼层
WCHTech2 发表于 2020-1-15 09:51
这个是在库里定义好了,根据ble初始化的值确定的,你定义多少就是多少。 ...

想问的是通过BLE的初始化的那个值确认的呢?
void CH57X_BLEInit(void)
{
    UINT8 i;
    bleConfig_t cfg;

    if (tmos_memcmp(VER_LIB, VER_FILE, strlen(VER_FILE)) == FALSE)
    {
        PRINT("head file error...\n");
        while (1);
    }
    R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;
    R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;
    R16_CLK_SYS_CFG = RB_CLK_OSC32M_XT | (2 << 6) | 0x08;                        // 32M -> Fsys
    R8_SAFE_ACCESS_SIG = 0;
    SysTick_Config(SysTick_LOAD_RELOAD_Msk);
    SysTick->CTRL  &= ~SysTick_CTRL_TICKINT_Msk ;   /* disable SysTick IRQ */
    tmos_memset(&cfg, 0, sizeof(bleConfig_t));
    cfg.MEMAddr                  = (u32)MEM_BUF;
    cfg.MEMLen                   = (u32)BLE_MEMHEAP_SIZE;
    cfg.SNVAddr                        = (u32)BLE_SNV_ADDR;
    cfg.SNVNum                        = (u32)BLE_SNV_NUM;
    cfg.BufMaxLen                = (u32)BLE_BUFF_MAX_LEN;
    cfg.BufNumber                = (u32)BLE_BUFF_NUM;
    cfg.TxNumEvent  = (u32)BLE_TX_NUM_EVENT;
    cfg.TxPower                        = (u32)BLE_TX_POWER;
    cfg.ConnectNumber  = (PERIPHERAL_MAX_CONNECTION & 3) | (CENTRAL_MAX_CONNECTION << 2);
    cfg.srandCB = SYS_GetSysTickCnt;
    #if (defined TEM_SAMPLE)  && (TEM_SAMPLE == TRUE)
    cfg.tsCB = HAL_GetInterTempValue;
    #if( CLK_OSC32K_RC )
    cfg.rcCB = Calibration_LSI; // 内部32K时钟校准
    #endif
    #endif
    #if (defined (HAL_SLEEP)) && (HAL_SLEEP == TRUE)
    cfg.WakeUpTime = WAKE_UP_RTC_MAX_TIME;
    cfg.sleepCB = CH57X_LowPower;  // 启用睡眠
    #endif
    #if (defined (BLE_MAC)) && (BLE_MAC == TRUE)
    for (i = 0; i < 6; i++)
    {
        cfg.MacAddr  = MacAddr[5 - i];
    }
    #endif
    if (!cfg.MEMAddr || cfg.MEMLen < 4 * 1024)
        while (1);
    #if (defined         HAL_SLEEP) && (HAL_SLEEP == TRUE)
    if ((u32)MEM_BUF < (u32)0x20003800)
    {
        PRINT("RAM config error...\n");
        while (1);
    }
    #endif
    i = BLE_LibInit(&cfg);
    if (i)
    {
        PRINT("LIB init error...\n");
        while (1);
    }
}

使用特权

评论回复
 楼主 | 2020-1-16 14:05 | 显示全部楼层
本帖最后由 zykzyk 于 2020-1-16 14:07 编辑

1、BLE 例程之修改服务:
1)采用BLE Peripheral例程进行修改试验。 2)原例程配置了四个服务,并通过通道4进行接收通知数据,故依葫芦画瓢修改为一个服务发送和接收数据。 3)实现手机端蓝牙调试助手连接进行多字节(20)通讯成功。
微信图片_20200116134655.jpg 微信图片_202001161346551.jpg

2、编译成功linking...
  static uint8 simpleProfileChar5UserDesp[] = "Characteristic 5\0";
..\Drivers\BLE_Device\gattprofile.c: 9 warnings, 0 errors
linking...
Program Size: Code=81936 RO-data=1368 RW-data=1368 ZI-data=9764  
FromELF: creating hex file...
"..\Output\CH57x.axf" - 0 Error(s), 17 Warning(s).
Build Time Elapsed:  00:00:11

3、至此完成了一个修改成功的BLE蓝牙例程编译成功。

5、末完待续,敬请期待!


开发总结:官方关于蓝牙BLE方面的应用说明文档太少并不详细,好多都是自己摸索着搞,也没有借鉴参考的地方了解。建议官方多搞的本地化使用的详细资料。


使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表