发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
[蓝牙芯片]

玩转开发板 - 沁恒CH583M开发板(RISC-V)

[复制链接]
1020|7
手机看帖
扫描二维码
随时随地手机跟帖
单片小菜|  楼主 | 2023-3-2 19:13 | 显示全部楼层 |阅读模式
[url=home.php?mod=space&uid=760190]@21小跑堂 #申请原创#[/url]
483126400839386521.png
引:
      由于项目需要,需要使用到CH583M来进行项目开发,对于MounRiver Studio开发环境在之前的文章中已经进行了详细的说明,这里就不再赘述。从沁恒原厂申请了CH583M-R0-1V1的开发板。
13796640083a495a82.png
一、CH583M资源评估
       资料在官网可以直接进行下载。
13110640083b1950e0.png
二、建立第一个工程文件
       将官网的开发板资料包下载,解压到​D盘的文件夹。
69125640083bde0aa3.png
        我们可以看见文件夹的list文件很多,有很多都不是项目需要的文件​。在开发的时候,完全可以按照需要进行拷贝,​下面就说一下拷贝的过程。
第一步:将项目命名为YT-583(当然这个名字可以根据自己的需要进行命名)
80022640083c9864c0.png
       在文件夹中建立两个空文件夹,命名为BLE和SRC​文件夹,如上图所示。
        打开资料包中的BLE文件夹,位置在EVT-->EXAM-->BLE​文件夹下。把HAL文件夹和LIB文件夹拷贝到BLE文件夹中​。
84136640083da29fd2.png
       ​拷贝之后如下图:
33815640083e407fbe.png
        然后将我们需要的​文件进行拷贝:
15539640083ecb9bb5.png
        拷贝之后,更改文件夹的名字为project,同时将文件夹内的工程名字也做相应的更改。
43356640083f919da8.png
​第二步:将​资料包的SRC文件拷贝到我们建立的文件夹中。
730396400840336b39.png
​        拷贝之后,如下图所示:
98006400840c8fc10.png
​第三步:运行项目,找到刚刚我们重新命名的project工程文件双击运行。
        系统会自动弹出开发环境MRS
759346400841595bae.png
        如果不习惯英文版本的,可以进行​中文版的切换。帮助-->语言-->选择需要的语言,简体中文还是English​。
167196400842211736.png
​第四步:运行文件
        点击下面的图标,或者直接Shift+F7​。
723346400842e741f9.png
       编译之后,会看见​0个错误0个警告。
5368664008438c9790.png
       至此,最简单的例子程序​就建立完成了。
三、名称的更改
       找到peripheral.c文件,我们将下面标红的地方进行更改,0x12代表的是后面字符的长度,记得里面的GAP_​ADTYPE...也算一个字符。
525226400844311a9f.png
       更改为YT-CH583M,不能忘记更改len
462716400844f7c2f8.png
四、需要修改几个文件中的内容
       在下面的函数中​:
uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)
       按照原有的格式添加任务。
       首先在文件中增加以下代码
650826400845cd613b.png
//peripheral.H#define SBP_START_DEVICE_EVT    0x0001#define SBP_PERIODIC_EVT        0x0002#define SBP_READ_RSSI_EVT       0x0004#define SBP_PARAM_UPDATE_EVT    0x0008#define SBP_PHY_UPDATE_EVT      0x0010​#define YT_TEST_EVT             0x0020
        然后在刚刚提到的函数中增加以下代码
//peripheral.c//构建ble uart service callback handler函数void on_bleuartServiceEvt(uint16_t connection_handle,ble_uart_evt_t  *p_evt)//函数void Peripheral_Init()中添加服务ble_uart_add_service(on_bleuartServiceEvt);//函数uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)中添加事件if(events & YT_TEST_EVT){        uint8_t send_result = SUCCESS;        uint16_t cuntest = 0;        noti.len = 6;        noti.pValue = GATT_bm_alloc(peripheralConnList.connHandle, ATT_HANDLE_VALUE_NOTI, noti.len, NULL, 0 );        noti.pValue[0]='L';        noti.pValue[1]='L';        noti.pValue[2]='S';        noti.pValue[3]='D';        noti.pValue[4]='J';        noti.pValue[5]=' ';        if(noti.pValue != NULL)        {​            send_result = simpleProfile_Notify( peripheralConnList.connHandle, &noti);            if(send_result==SUCCESS)            {                tmos_start_task( Peripheral_TaskID, YT_TEST_EVT,1600);            }​            else            {                tmos_stop_task( Peripheral_TaskID, YT_TEST_EVT);                GATT_bm_free( (gattMsg_t *)&noti, ATT_HANDLE_VALUE_NOTI );            }​        }        return (events ^ YT_TEST_EVT);​    }
       在gattprofile.c文件中构建以下几个函数,具体的函数内容,可以参考沁恒的手册进行​构建。
//gattprofile.Cstatic bStatus_t ble_uart_ReadAttrCB( uint16 connHandle, gattAttribute_t *pAttr,                                     uint8 *pValue, uint16 *pLen, uint16 offset, uint16 maxLen,uint8 method )static bStatus_t ble_uart_WriteAttrCB( uint16 connHandle, gattAttribute_t *pAttr,                                      uint8 *pValue, uint16 len, uint16 offset,uint8 method )static void ble_uart_HandleConnStatusCB ( uint16 connHandle, uint8 changeType )bStatus_t ble_uart_add_service( ble_uart_ProfileChangeCB_t cb)bStatus_t ble_uart_notify( uint16 connHandle, attHandleValueNoti_t *pNoti, uint8 taskId )
五、下载设置
       点击闪存-->下载配置,然后根据自己的需要进行勾选​,选择操作。
567946400846b9876c.png
​        连接好仿真器和开发板。
1967864008477153e6.png
       ​进行程序下载。
六、查看结果
        我们打开沁恒的windows软件WCHBleDemo​。
5880264008481ab4f0.png
       点击刷新设备,然后选中YT-CH583M,​打开设备。
214056400848ae3496.png
       点击获取服务,选择FFF0,点击获取特征,选择FFF1,点击获取操作,​订阅。就可以在接收区看见LLSDJ在不断传输。
45591640084976ad2b.png
​结:
        沁恒的​芯片还是很好用的,协议栈也不是很复杂,移植也很方便。

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 50.00 元 2023-03-06
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2023-3-6 16:24 回复TA
详细介绍在MounRiver Studio开发环境下的工程搭建,但是注意代码部分可用代码编辑器,否则造成代码错乱,无任何可读性 
tpgf| | 2023-4-4 08:14 | 显示全部楼层
整个开发板的上半部分 为什么要打那么多过孔呢

使用特权

评论回复
qcliu| | 2023-4-4 11:14 | 显示全部楼层
我们在工程文件里边需要修改哪些内容呢

使用特权

评论回复
drer| | 2023-4-4 11:47 | 显示全部楼层
我们在工程里边增加代码的依据是什么呢

使用特权

评论回复
coshi| | 2023-4-4 12:18 | 显示全部楼层
请教楼主一个问题就是如何看懂这个协议栈呢

使用特权

评论回复
kxsi| | 2023-4-4 15:09 | 显示全部楼层
更改文件内容的时候 这个长度如何确定呢

使用特权

评论回复
wiba| | 2023-4-4 15:23 | 显示全部楼层
请问这个函数uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)中的任务id如何确定呢

使用特权

评论回复
发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:资深专家
简介:丰富的嵌入式软硬件开发管理经验; 丰富的项目管理经验并具备敏锐的市场嗅觉; 丰富的产品的供应链资源及工厂管控能力; 具备很强的产品落地经验(从产品企划到产品量产);

103

主题

2263

帖子

7

粉丝