打印
[单片机芯片]

【CH579开发板】测评二

[复制链接]
2109|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yinwuqing110 于 2020-1-12 19:00 编辑

      快接近放假过年了,年底公司总结报告会议一波接一波,项目也积压着诸多bug。今天周末,来体验一下沁恒微CH579开发板的蓝牙及GPIO口的操作。前面帖子中已分享如何顺利的将二进制文件烧录进开发板中,这里不再赘述。首先我们使用官方SDK包中的BLE.hex文件,路径在“..\CH579\EVT\EXAM\BLE\Peripheral\Project\obj”下,用WCHISPTool的串口方式烧写,时长22s左右,当然也可以采用USB方式,那样的速度会快些。烧录完成后,使用我们的安卓手机将官方提供的“BLEAssist.apk“蓝牙串口调试助手安装好,打开蓝牙,打开BLEAssist应用,然后会自动扫描,此时的界面如下

我们很容易搜索到CH579对应的设备名是Simple Peripheral,灵敏度-48db,然后点击设备名,建立连接关系,跳转到连接完成界面,该界面显示该设备包含的所有服务,包括“Generic Access”、“Generic Attribute”、“设备信息”和“Unknown Service”,选择透传服务的第一个Unknown Service,然后进入该服务选项,能看到如下图所示的5个服务特征值。

设备名称可以在代码中修改,修改成自定义的名称:

同样的点击设备名"WCH BLE CH579",建立连接关系,跳转到连接完成界面,从跳转后的界面中我们可以得知,第一个characteristic,即“0xFFE1”服务,该服务具有读写属性。第二个只有读的属性。第三个只有写的属性。第四个具有通知服务的属性,即主动发送数据给主机。第五个具有认证读属性,需要输入配对配对密钥才能读取,在收发界面点击读取按钮就会出现蓝牙配对界面。输入配对码默认是“000000”,选择PIN码,点击确定按钮,主机与设备进行配对,配对成功后即可操作该服务,否则不能操作或者设备断开,如下图所示:

配对成功后,读取一下接收到的数据,如下图所示,一次性接收到5个字节的数据


    接下来回想对比一下基于TI的CC2640蓝牙产品,CC2640的开发IDE是IAR工具,这里的CH579采用的是Keil for Arm工具,由于内核是使用 Cortex-M0,因此选择ARMCM0的芯片类型

然后觉得奇怪的是,不管是Nordic的52832,还是TI的CC2640,他们都需要烧写基于蓝牙的底层协议栈,再烧写应用程序,才能正常跑起来。而沁恒微的CH579文档中并没有提及烧写蓝牙协议栈的步骤,而我实际操作也并未需要烧写蓝牙协议栈,如果说打包成静态库封装好了,那这个文件是否可更改?封装成库的源文件可以不开源,像Nordic的蓝牙芯片一样,但是用户得知道蓝牙协议栈是什么版本的,是怎么烧写到CH579芯片中的,是否支持蓝牙5.0?
      接下来我们来看看GPIO的操作,由SDK包中给出的原理图,我们可以知道底板的LED灯是三基色的,并且是低电平有效,如下图所示:

因此用户需要注意的是,在开发的工程源码中,将GPIOB口拉高函数GPIOB_SetBits( Pin )是将灯熄灭而非点亮,在peripheral_main.c文件中添加如下的代码,现象如动画所示
#define TIMES        250

void led_red_init(void)
{
                GPIOB_ResetBits( GPIO_Pin_0 );
                GPIOB_ModeCfg( GPIO_Pin_0, GPIO_ModeOut_PP_5mA );
                GPIOB_SetBits( GPIO_Pin_1 );
                GPIOB_SetBits( GPIO_Pin_2 );
}
void led_green_init(void)
{
                GPIOB_ResetBits( GPIO_Pin_1 );
                GPIOB_ModeCfg( GPIO_Pin_1, GPIO_ModeOut_PP_5mA );
                GPIOB_SetBits( GPIO_Pin_0 );
                GPIOB_SetBits( GPIO_Pin_2 );
}
void led_blue_init(void)
{
                GPIOB_ResetBits( GPIO_Pin_2 );
                GPIOB_ModeCfg( GPIO_Pin_2, GPIO_ModeOut_PP_5mA );
                GPIOB_SetBits( GPIO_Pin_0 );
                GPIOB_SetBits( GPIO_Pin_1 );
}
while(1)
{
GPIOB_SetBits( GPIO_Pin_0 );
GPIOB_SetBits( GPIO_Pin_1 );
GPIOB_SetBits( GPIO_Pin_2 );
                DelayMs(TIMES * 2);
                led_red_init();
                DelayMs(TIMES);
                led_green_init();
                DelayMs(TIMES);
                led_blue_init();
                GPIOB_SetBits( GPIO_Pin_0 );
                GPIOB_SetBits( GPIO_Pin_1 );
                GPIOB_SetBits( GPIO_Pin_2 );
                DelayMs(TIMES * 2);
                led_blue_init();
                DelayMs(TIMES);
                led_green_init();
                DelayMs(TIMES);
                led_red_init();
                DelayMs(TIMES);
                TMOS_SystemProcess( );
        }

     

从动画中我们清晰的看到段式LCD屏会有乱码数字出来,这是因为**作了GPIOB0,GPIOB1,GPIOB2,这三个管脚同时也是连接在段式LCD屏上的,如下图所示,因此产生的电平变化会显示出乱码来。此次操作体验就与大伙分享到这里,后续有时间再研究CH579的网络通讯,蓝牙低功耗,主从方面的应用。过年放假在即,预祝各位鼠年数一数二,百尺竿头,更进一步,谢谢!





使用特权

评论回复
沙发
WCHTech2| | 2020-1-13 09:40 | 只看该作者
非常感谢楼主的评测,鼠年在即,预祝楼主及各位论坛好友工作顺利,技术猛进。沁恒CH579的蓝牙是4.2版本的,5.0大概会在明年上半年完成。工程文件夹中的的CH57xBLE.lib是其蓝牙库文件,蓝牙例程中的应用程序是直接调用此蓝牙库,其库文件是不开源的。

使用特权

评论回复
板凳
wfw69| | 2020-8-14 11:43 | 只看该作者
谢谢楼主的分享,期待后续之作

使用特权

评论回复
地板
nokiaboy| | 2022-9-28 15:33 | 只看该作者
楼主,这个外设板的原理图可以分析一下不,谢谢你。

使用特权

评论回复
5
yinwuqing110|  楼主 | 2022-9-29 09:52 | 只看该作者
nokiaboy 发表于 2022-9-28 15:33
楼主,这个外设板的原理图可以分析一下不,谢谢你。
https://www.wch.cn/search?q=CH579&t=downloads
CH579官方资料

使用特权

评论回复
6
nokiaboy| | 2022-9-29 11:24 | 只看该作者
yinwuqing110 发表于 2022-9-29 09:52
https://www.wch.cn/search?q=CH579&t=downloads
CH579官方资料

没找到外设这块板子的原理图啊

使用特权

评论回复
7
yinwuqing110|  楼主 | 2022-9-30 11:06 | 只看该作者
nokiaboy 发表于 2022-9-29 11:24
没找到外设这块板子的原理图啊

那就不太清楚了,当时获取官方资料也是通过这个官网获得的,你如需要,可以找他们销售代理

使用特权

评论回复
8
Jacquetry| | 2022-10-4 21:37 | 只看该作者
上位机可以在高版本安卓上用吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

1023

帖子

7

粉丝